科学の箱

科学・IT・登山の話題

機械学習

スパムメールの判別に使うベイズ定理についてまとめる

投稿日:

分類問題

スパムメールを判別するような問題は一般的に「分類問題」として機械学習では取り扱う。分類問題とはいまある「物」や「発生した事柄」を確率的に分類する。この「確率的」という言葉がみそであり、固定されたルールに従っているわけではなく、機械学習により構築されたモデルにより判別される。

条件付き確率およびベイズ定理

分類問題の判別に用いられるアルゴリズムで最も基本的となるのがベイズ定理である。このベイズ定理を理解するためには「条件付確率」を理解しておく必要がある。

条件付確率

条件付き確率とはある事象Xが発生したという前提で事象Yが発生する確率である。条件付確率は以下のようにあらわされる。

$$P( Y | X )=\frac{P(X∧Y)}{P(X)}$$

ベン図にすると以下のようになる。

ベイズ定理

ベイズ定理は以下のようにあらわすことができる。

$${P(X|Y)}\times{P(Y)}={P(Y|X)}\times{P(X)}$$

ベイズ定理の証明は統計サイトなどに詳しく記載されているのでそちらを参照。上記式を変形すると以下のようになる。

$$P(X|Y)=\frac{P(Y|X)\times{P(X)}}{P(Y)}$$

さてポイントとなるのはこのベイズ定理がどのように分類問題で利用されるかである。

 

ベイズ定理と分類問題

スパムメール判別問題を例にしてベイズ定理をどのように分類問題に利用するかを説明する。

スパムメールの判別問題はある一通のメールからそのメールに含まれている単語をもとにしてスパムメール(spam)か普通メール(ham)を判断する。

今下記のように確率を定義する。

$$P(spam) = スパムメールである確率$$

$$P(ham) = 普通のメールである確率$$

$$P(mail) = ある単語が出現する確率$$

今条件付き確率を考えると以下のようになる。

$$P(mail | spam) = スパムメールに対してある単語が現れる確率$$

$$P(mail | ham) = 普通のメールに対してある単語が現れる確率$$

最終的に知りたいのは以下である。

$$P(spam|mail) = ある単語が出現したときに、スパムメールである確率$$

$$P(ham|mail) = ある単語が出現したときに、普通メールである確率$$

あるメールがスパムメールであると判断するときにはいくつか方法がある。例えばある単語が出現したときに、スパムメールである確率>普通メールであると確率なら、スパムと判断する方法がある。

$$P(spam|mail) > P(ham|mail)$$

ではどのようにして P(spam|mail)とP(ham|mail)を計算するのか。ここで利用するのがベイズ定理である。いまベイズ定理を利用すると以下のようになる。

$$ P(spam|mail) = \frac{(P(mail|spam)\times{P(spam)}}{P(mail)}$$

$$ P(ham|mail) = \frac{(P(mail|ham)\times{P(ham)}}{P(mail)}$$

ここでP(mail | spam)についてはスパムメールとしてラベルがついているメールに対して単語の出現頻度を計算すれば取得できる。P(spam)はすべてのメールに対するスパムメールの割合を計算すればよい。P(mail)は全メールに対して単語の出現頻度を計算すればよい。

P(mail|ham)は同様にして普通メールに対して単語の出現頻度を計算する。またP(ham)は普通のメールが全体に占める割合である。

このようにしてP(spam|mail)およびP(ham|mail)をベイズ定理により計算して、分類をする学習器がナイーブベイズである。

 

ナイーブベイズ分類樹

ナイーブベイズがもっともよくつかわれるが、単語による文書分類である。簡単な例を通してナイーブベイズによる文書分類を説明する。

今下記のような各国について説明した文章があるとする(このデータは全く恣意的なデータである)。

データ
アメリカ 海、都市、遊園地
タイ 海、遺跡、都市、食事
中国 遊園地、歴史、夜景、買い物
フランス 海、食事、都市
アメリカ 都市、食事

今下記の分類データが渡されたときのカテゴリを計算する。

[海、都市]

 

事前確率(各カテゴリが出現する確率)

いま各カテゴリが出現する確率を考える。これは以下のように計算される。

$$P(category )=\\frac{各カテゴリの文書数}{全部の文書数}$$

カテゴリの文書数 全文書数 P(Category)
アメリカ 2 5 2/5
タイ 1 5 1/5
中国 1 5 1/5
フランス 1 5 1/5

尤度(各カテゴリにおける分類データが出現する同時確率

各カテゴリにおいて分類データが出現する同時確率を求める。

$$ P(word | category) = \frac{P(word∧category)}{P(category}$$

カテゴリ内総単語数 都市 同時確率
アメリカ 5 1 2 2/25 = 1/5 x 2/5
タイ 4 1 1 1/16 = 1/4 x 1/4
中国 4 0 0 0
フランス 3 1 1 1/9 = 1/3 x 1/3

事後確率 (分類データが与えられた時のカテゴリが出現する確率)

事前確率 尤度 事後確率
アメリカ 2/5 2/25 4/125=0.032
タイ 1/5 1/16 1/80=0.0125
中国 1/5 0 0
フランス 1/5 1/9 1/27=0.037

 

よって[海、都市]というデータが与えらた時にはナイーブベイズではフランスと分類される。

メタ情報

inarticle



メタ情報

inarticle



-機械学習

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

仕事で始める機械学習 – 1. 機械学習プロジェクトの始め方

機械学習プロジェクトの流れ 問題の定式化 機械学習を利用しない方法 システム設計 アルゴリズム選定 特徴量・教師データ・ログの設計 前処理 学習・パラメータチューニング システム統合 問題の定式化 目 …

no image

Pythonではじめる機械学習 – Chap02

2.1 Classification and Regression 分類問題の目的 クラスがどのようなラベルであるかを予測 分類問題 2つのクラスに分類するバイナリクラシフィケーション 例)Yes/N …

no image

仕事で始める機械学習 – 2.機械学習で何ができるか – 分類 – パーセプトロン

パーセプトロン 判別式 それぞれのデータに対して重みづけした値 ヒンジ損失 パーセプトロンの損失関数をヒンジ損失という。パーセプトロン基準とも呼ばれる。 sum(wx) 状態 ラベル label*su …

no image

Mahout環境構築

Mahoutのシステム要件を確認する。 Java 1.6.x or greater. Maven 3.x to build the source code. CPU, Disk and Memory …

no image

pythonでEDAを実施する – 記述統計

データを取り込む data frameに変換する desdribe()メソッドで要約統計量を出力 各項目について残差分析(ここでは各データが平均値からどの程度離れているか、要するに分散の傾向を把握する …

2019年10月
« 9月   11月 »
 123456
78910111213
14151617181920
21222324252627
28293031  

side bar top



アーカイブ

カテゴリー