単純ベイズについて


47

StatSoft社(2013)、電子統計教科書、「ナイーブベイズ分類器」

ここに画像の説明を入力してください

単純ベイズ分類の概念を示すために、上の図に表示されている例を考えてください。前述のように、オブジェクトは緑または赤に分類できます。私のタスクは、新しいケースが到着したときに分類することです。つまり、現在終了しているオブジェクトに基づいて、どのクラスラベルに属するかを決定します。

GREENオブジェクトはREDの2倍であるため、新しいケース(まだ観察されていない)がREDではなくGREENのメンバーシップを持っている可能性が2倍であると考えるのが合理的です。ベイジアン分析では、この信念は事前確率として知られています。事前確率は、過去の経験、この場合は緑と赤のオブジェクトの割合に基づいており、実際に発生する前に結果を予測するためによく使用されます。

したがって、次のように記述できます。

ここに画像の説明を入力してください

合計60個のオブジェクトがあり、そのうち40個が緑、20個が赤であるため、クラスメンバーシップの事前確率は次のとおりです。

ここに画像の説明を入力してください ここに画像の説明を入力してください

事前確率を定式化したので、新しいオブジェクト(白丸)を分類する準備ができました。オブジェクトは十分にクラスター化されているため、Xの近くに緑(または赤)のオブジェクトが多いほど、新しいケースがその特定の色に属する可能性が高いと想定するのが妥当です。この尤度を測定するために、クラスラベルに関係なく(事前に選択される)多数のポイントを含むXの周りに円を描きます。次に、各クラスラベルに属する円内のポイントの数を計算します。これから、尤度を計算します:

ここに画像の説明を入力してください

上記の図から、GREENが与えられたXの尤度は、REDが与えられたXの尤度よりも小さいことが明らかです。副<文>この[前述の事実の]結果として、それ故に、従って、だから◆【同】consequently; therefore <文>このような方法で、このようにして、こんなふうに、上に述べたように◆【同】in this manner <文>そのような程度まで<文> AひいてはB◆【用法】A and thus B <文>例えば◆【同】for example; as an example:

ここに画像の説明を入力してください

ここに画像の説明を入力してください

XがGREENに属している可能性があることを事前確率が示していますが(REDと比較して2倍のGREENがあると仮定)、そうでない可能性は示されます。XのクラスメンバーシップがREDであること(Xの近くにGREENよりも多くのREDオブジェクトがあると仮定)。ベイズ分析では、いわゆるベイズの規則(トーマス・ベイズ牧師1702-1761にちなんで名付けられた)を使用して事後確率を形成するために、両方の情報源、つまり事前確率と尤度を組み合わせることによって最終分類が生成されます。

ここに画像の説明を入力してください

最後に、クラスメンバーシップが最大の事後確率を達成するため、XをREDとして分類します。

これが私の数学の理解の難しさの出番です。

ここに画像の説明を入力してください

p(Cj | x1、x2、x ...、xd)は、クラスメンバーシップの事後確率、つまり、XがCjに属する確率ですが、なぜこのように書くのですか?

尤度の計算?

ここに画像の説明を入力してください

事後確率?

ここに画像の説明を入力してください

私は数学を学んだことは一度もありませんが、単純なベイズに対する私の理解は大丈夫です。これらのメソッドの視覚化と、わかりやすい方法で数学を書き出す方法を教えてください。


12
(+1)私はあなたがあなたの質問を提起した本当に慎重で明確な方法を賞賛します。
-rolando2

2
@ rolando2:この質問のすべての数字とほぼすべてのテキストは、statsoft.com / textbook / naive
classifier

他の人が書いた資料の参照方法に従って、この投稿を編集して、他の場所の資料を明確に属性付けしてください。
スコルチ-モニカの復職

Stack Exchangeサイトでは、直接引用の適切な帰属が常に要件でした。とにかく、省略は簡単に修正されます。&私はそうしました。アカウントを削除する必要はありません-再考してください。
Scortchi -復活モニカ

回答:


50

あなたがどこで電話を切っているのか完全に明確ではないので、私はNaive Bayesプロセス全体を最初から実行します。

P(class|feature1,feature2,...,featuren

P(A|B)=P(B|A)P(A)P(B)
P(class|features)=P(features|class)P(class)P(features)

P(features)P(class|features)classP(features)class

P(class|features)P(features|class)P(class)

P(class)

P(features|class)P(feature1,feature2,...,featuren|class)

P(feature1,feature2,...,featuren|class)=iP(featurei|class)

離散サンプルデータ

例:分類器のトレーニング

分類器をトレーニングするために、ポイントのさまざまなサブセットをカウントし、それらを使用して事前確率および条件付き確率を計算します。

P(class=green)=4060=2/3 and P(class=red)=2060=1/3

feature1feature2

  • P(feature1=A|class=red)
  • P(feature1=B|class=red)
  • P(feature1=A|class=green)
  • P(feature1=B|class=green)
  • P(feature2=X|class=red)
  • P(feature2=Y|class=red)
  • P(feature2=X|class=green)
  • P(feature2=Y|class=green)
  • (明らかでない場合、これは機能値とクラスのすべての可能なペアです)

P(feature1=A|class=red)feature1P(feature1=A|class=red)=20/20=1P(feature1|class=red)=0/20=0P(feature1=A|class=green)=5/40=1/8P(feature1=B|class=green)=35/40=7/8feature2

  • P(feature1=A|class=red)=1
  • P(feature1=B|class=red)=0
  • P(feature1=A|class=green)=1/8
  • P(feature1=B|class=green)=7/8
  • P(feature2=X|class=red)=3/10
  • P(feature2=Y|class=red)=7/10
  • P(feature2=X|class=green)=8/10
  • P(feature2=Y|class=green)=2/10

これらの10の確率(2つの事前確率と8つの条件付き)がモデルです

新しい例を分類する

feature1feature2

P(class=red|example)P(class=red)P(feature1=A|class=red)P(feature2=Y|class=red)

P(class=red|example)131710=730
P(class=green|example)P(class=green)P(feature1=A|class=green)P(feature2=Y|class=green)

2/302/10

ノート

元の例では、機能は連続しています。その場合、各クラスにP(feature = value | class)を割り当てる方法を見つける必要があります。次に、既知の確率分布(ガウス分布など)に適合させることを検討します。トレーニング中に、各特徴次元に沿って各クラスの平均と分散を見つけます。ポイントを分類するには、見つけます。P(feature=value|class)各クラスに適切な平均と分散をプラグインすることにより。データの詳細に応じて、他の分布がより適切かもしれませんが、ガウス分布が適切な出発点になります。

私はDARPAデータセットにあまり詳しくありませんが、基本的に同じことをするでしょう。おそらく、P(attack = TRUE | service = finger)、P(attack = false | service = finger)、P(attack = TRUE | service = ftp)などのようなものを計算し、それらを組み合わせて例と同じ方法。補足として、ここでの秘trickの一部は、優れた機能を考え出すことです。たとえば、ソースIPはおそらく絶望的にまばらになります。おそらく、特定のIPに対して1つまたは2つの例しかありません。IPの位置を特定し、代わりに「Source_in_same_building_as_dest(true / false)」または何かを機能として使用すると、はるかに良い結果を得ることができます。

それがもっと役立つことを願っています。何か説明が必要な場合は、もう一度試してみてください!


3
承知しました。よろしければ、答えを編集して、さらにスペースを空けます(そしてLaTexのこともできます)。
マットクラウス

1
トレーニングとテストの部分を拡張し、それらを独自のセクションにしました。最初のカップルの段落では...と同じです
マット・クラウス

2
マット、これは私が出会ったNaive Bayesのテキスト本の定義よりもずっと明確です。これはおそらく、このWebサイトでこれまでに見た質問に対する最良の回答です。
ジュバル

@Berkan、ありがとう。それはとても親切です(他にもたくさんのすばらしい答えがあります!)何か提案があれば、喜んでそれらに対処しようと思います!
マットクラウス

+ 1とstackoverflow.com/questions/10059594/...同様の説明がある
Drey

6

DP(CjD)

P(CjD)=P(DCj)P(Cj)P(D), j=1,2,
jP(C1D)P(C2D),P(CjD)P(D)P(DCj)P(Cj)P(DCj)P(Cj)P(D)CjP(CjD)P(DCj) P(Cj)
P(CjD)P(DCj)P(Cj).
D(x1,x2,,xd)Cj)
P(DCj)=P(x1,x2,,xdCj)=P(x1Cj)P(x2Cj)P(xdCj)=1=1dP(xiCj)

1

単純ベイズモデルの背後にある主な仮定は、各フィーチャ(x_i)が、クラスが与えられた他のすべてのフィーチャから条件付きで独立しているということです。この仮定により、(あなたが示したように)単純な製品として尤度を書くことができます。

これは、単純ベイズモデルが実際にうまく一般化するのにも役立ちます。トレーニングフェーズについて考えてみましょう。この仮定を行わなかった場合、学習には、すべての特徴が一緒に分布する複雑な高次元分布p(x1、x2、...、xn、c)の推定が含まれます。代わりに、値cを知ることで他のすべての機能の値が無関係になるため、p(x1、c)、p(x2、c)、...、p(xn、c)を推定することで訓練できますx_iに関する追加情報はありません)。

これを視覚化する良い方法はわかりません(標準のグラフィカルモデル表記以外に)が、より具体的にするために、ナイーブベイズモデルを学習するためのコードを書くことができますここでいくつかのサンプルデータを取得できます)。トレーニングとテスト。ここで、条件付き独立性の仮定を削除し、コードを変更します。トレーニング、テスト、および以前のモデルとの比較。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.