投稿

11月, 2020の投稿を表示しています

ナイーブベイズの改良版AODEを実装して実験してみる

イメージ
こんにちは、ぐぐりら(<a href="https://twitter.com/guglilac">@guglilac</a>)です。 ナイーブベイズは自然言語処理の分類タスクで、実装がシンプルで高速でそれなりに精度が出るということで、はじめに試すモデルだよという方も多いかも知れません。 scikit learnにも実装があるので、サクッと試せて便利ですが、もう少し時間がかかってもいいので精度が欲しい!となった場合にナイーブベイズではどうするのが良いのでしょうか。 ナイーブベイズについてあまり詳しくなかったので、調べてみたところ、いくつか亜種があるそうです。 * [僕はもう、そんなにナイーブじゃないんだ - Qiita](https://qiita.com/cou_z/items/bca93fce0a08b521a3e8) * [no_bayes_no_life_nb_keep_evolving](https://www.slideshare.net/phyllo/nobayesnolifenbkeepevolving) * [不均衡データに対するNaive BayesとComplement Naive Bayes, Negation Naive Bayesの比較 - Debug me](https://yukinoi.hatenablog.com/entry/2016/06/07/121759) 今回は、この中で紹介されているAODE(Averaged One-Dependence Estimators)について興味を持ったので、論文を読みつつ実装し、軽く実験もしてみました。 ## AODE [僕はもう、そんなにナイーブじゃないんだ - Qiita](https://qiita.com/cou_z/items/bca93fce0a08b521a3e8) ここで説明されているので、詳しくはこちらを参照していただきたいです。 ナイーブベイズ(NB)はその名の通りナイーブ、つまりクラスを条件付けた時の文章生成の確率を単語の生成確率の積に分解できるという単純な仮定を置いています。 本当は、単語同士は独立ではないはずなので、その仮定の部分を緩めて性能を向上させよう、というアイデアがAODEの元となっ