ベイズな予測

今日は大学を早く引けて、自宅で本を読む時間を作った。

ベイズな予測―ヒット率高める主観的確率論の話

ベイズな予測―ヒット率高める主観的確率論の話である。ざーっと流し読みした。
筆者のもくろみはよく分かるし、色々応用方法を書いてくれているのでわかりやすい。
最後に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">&lt;-</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>