13章は、テキスト分類とナイーブベイズについて。
テキスト分類
例えば、メールボックスの中からスパムをフィルタリングすることを考えよう。
スパムと自動で判別し、フィルタリングするためには、どうすればよいか?
また、言語による分類など、様々なところでテキスト分類は必要である。
以下、テキスト分類の3つの手法を挙げる。
手動で分類
テキストセットが小さい時は問題ないが、基本的に対象となるテキストセットは大きいことが多く、分類が難しくコストがかかる。
よって自動で分類したい。
ルールに従う
ルールを決め、それに従って自動で分類を行う。
ルールが洗練されていれば正確に分類できるが、そのようなルールを作成し、メンテナンスを行うのはコストがかかる。
ナイーブベイズ
ドキュメント d が与えられた時に、それがクラス c である確率P(c|d)を考える。
ナイーブベイズにより、条件付き独立の下、以下の式が成立する。
P(c)は、c の事前確率。ドキュメントセットにおけるクラス c の割合。
P(t|c)は、クラス c 中でのターム t の出現頻度。
ただし、 T は出現回数を表す。
ここではタームの出現位置を考慮していない。これを特にbag of wordsモデルという。
最終的にP(c|d)が最大になるようなクラスに分類できればよく、それは以下のように求められる。
しかし上式は非常に小さい数の積であり、このままではアンダーフローをおこしてしまうので、logを取って積を和に変換する。
また、もう1つ問題があり、P(d|c)はP(t|c)の積で求まるのだが、 c に含まれていないターム t が1つでもあればP(d|c)は0になってしまう。
これを0頻度問題といい、これを避けるために、Tに1を加えるラプラススムージング(Laplace Smoothing)を行う。
以下に例を挙げる。
この時、以下の式が成り立つ。
よって、次のように計算できる。
ナイーブベイズの特徴をあげる。
- 他の複雑な学習法則よりもロバストである
- 均一で重要な特徴が多数ある場合は、決定木などの手法よりよい
- テキスト分類のよいベースラインを与えてくれている
- 非常に速い
- メモリ効率がよい