6

私はそれのほとんどを正しく実装したと思います。一部が私を混乱させました:

ゼロ頻度の問題: 属性値がすべてのクラス値で発生しない場合、すべての属性値とクラスの組み合わせ (ラプラス推定量) のカウントに 1 を追加します。

これが私のクライアントコードの一部です:

//Clasify
string text = "Claim your free Macbook now!";
double posteriorProbSpam = classifier.Classify(text, "spam");
Console.WriteLine("-------------------------");
double posteriorProbHam = classifier.Classify(text, "ham");

ここで、「無料」という単語がトレーニング データのどこかに存在するとします。

//Training
classifier.Train("ham", "Attention: Collect your Macbook from store.");
*Lot more here*
classifier.Train("spam", "Free macbook offer expiring.");

しかし、単語はカテゴリ「スパム」のトレーニング データにのみ存在し、「ハム」には存在しません。posteriorProbHam を計算するとき、「無料」という言葉に出くわしたらどうしますか。

ここに画像の説明を入力

4

1 に答える 1

6

それでも1つ追加します。理由:ナイーブベイズモデルP("free" | spam)でありP("free" | ham)、完全に独立しているため、それぞれの確率を完全に独立して推定する必要があります。使用しているLaplace推定量P("free" | spam)(count("free" | spam) + 1) / count(spam);です。P("ham" | spam)同じです。

追加しないとはどういう意味かを考えると、あまり意味がありません。ハムで「無料」を1回見ると、スパムで「無料」を見る可能性が低くなります。

于 2012-08-27T23:49:21.247 に答える