あなたがどこで電話を切っているのか完全に明確ではないので、私は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)classP(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つの条件付き)がモデルです
新しい例を分類する
feature1feature2P(class=red|example)∝P(class=red)⋅P(feature1=A|class=red)⋅P(feature2=Y|class=red)
P(class=red|example)∝13⋅1⋅710=730
P(class=green|example)∝P(class=green)⋅P(feature1=A|class=green)⋅P(feature2=Y|class=green)
2/3⋅0⋅2/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)」または何かを機能として使用すると、はるかに良い結果を得ることができます。
それがもっと役立つことを願っています。何か説明が必要な場合は、もう一度試してみてください!