今日は大学を早く引けて、自宅で本を読む時間を作った。
ベイズな予測―ヒット率高める主観的確率論の話である。ざーっと流し読みした。
筆者のもくろみはよく分かるし、色々応用方法を書いてくれているのでわかりやすい。
最後にMicrosoft Office2007のアドインで、Excel,Visioを拡張してナイーブ・ベイズを体験するところまで書いてくれている。個人的にはここが一番読み応えがあった。
Microsoftがフリーでベイズネットのソフトを置いてある、という話は数年前から聞いていたが、こういうことだったのか。実際にさわってみて、納得した。
しかし、アドインはフリーで落とせるけど、インターネット経由でSQLサーバにアクセスしなければならない。ここに不便を感じる。結局のところ、ネット上のサーバとのやりとりに時間がかかって(最近ノートが重く感じるようになってきた。さすがに五年前のものだからなぁ)、途中で落ちてしまいました。
ナイーブ・ベイズってこの本を読むまで知らなかったが、なかなか使い勝手がいいみたいだ。単純なアルゴリズムながら、SVMと同程度のパフォーマンスをするらしい。
Rでも一応パッケージがあるみたいだ(predbayescor)。落としてみたけど、なんのこっちゃわからなかった(笑)もう少し時間が要ります。
一番簡単なのがWeka。軽いし、いいなぁ。
ナイーブベイズは、全部の説明変数(こういう言い方が正しいかどうか分からないが、心理の分野の言葉で言うと)が独立だという(無茶な)仮定をしている。ので、各説明変数の判別率を掛け算し、T/Fのどちらの確率が高いかで判断する、という単純な話だ。
このあと、ベイジアンネットに進んでいくのだなぁ。ネットをうろうろして学習しました。
Rのサイトで「ナイーブベイズはRにはないのか」ときいている人がいて、「なんでナイーブベイズみたいな単純なもので満足するんだ、もっと進んだモデルがいっぱいあるじゃないか」と言われていた。そういうことなのね。
確かに、例えば心理学分野では、もう少し理屈=心のアルゴリズムが求められるだろうから、BNのほうがいいかもな。
ま、でも、データによってはナイーブベイズのほうが使い勝手がいいわけです。
数値さえだしておけば、後はエクセルででもできる話だからね・・・ニヤリ。
追記)パッケージe1071を使えば、簡単にナイーブベイズができた。こちらの方が単純でいいや。サンプルソースをあげておきます。
install.packages<span class="synSpecial">(</span><span class="synConstant">'e1071'</span><span class="synSpecial">)</span> library<span class="synSpecial">(</span>e1071<span class="synSpecial">)</span> data<span class="synSpecial">(</span>iris<span class="synSpecial">)</span> <span class="synComment">#Naive Bayes分類器を用いて分類</span> m <span class="synStatement"><-</span> naiveBayes<span class="synSpecial">(</span>iris<span class="synSpecial">[,</span>-<span class="synConstant">5</span><span class="synSpecial">],</span> iris<span class="synSpecial">[,</span><span class="synConstant">5</span><span class="synSpecial">])</span> <span class="synComment">#分類精度の表示</span> m <span class="synComment">#分類結果のテーブル表示</span> table<span class="synSpecial">(</span>predict<span class="synSpecial">(</span>m<span class="synSpecial">,</span> iris<span class="synSpecial">[,</span>-<span class="synConstant">5</span><span class="synSpecial">]),</span> iris<span class="synSpecial">[,</span><span class="synConstant">5</span><span class="synSpecial">])</span>