Naive Bayes Classifierの計算でゼロ係数を処理する方法は?


13

トレーニングデータセットがあり、その上でNaive Bayes Classifierをトレーニングし、確率がゼロの属性値がある場合。後で新しいデータの分類を予測する場合、これをどのように処理しますか?問題は、計算にゼロがある場合、他の解を見つける可能性のある他の値をいくつ取得しても、製品全体がゼロになることです。

例:

P(x|spam=yes)=P(TimeZone=US|spam=yes)P(GeoLocation=EU|spam=yes) ... =0.004

P(x|spam=no)=P(TimeZone=US|spam=no)P(GeoLocation=EU|spam=no) ... =0

トレーニングデータでは、TimeZone US属性が小さなトレーニングデータセットで常にYesであるため、製品全体がなります。どうすればこれを処理できますか?より大きなトレーニングデータセットを使用する必要がありますか、またはこの問題を克服する別の可能性がありますか?0


離散的な属性値が発生する場合、その確率は定義上ゼロにすることはできません。
ポール

なぜ1対0の周波数の問題を追加するのか、この背後にあるロジックとは何か、なぜ別の数値を追加しないのか。
アフタブフセイン

回答:


12

ベイジアン設定でこの「ゼロ周波数問題」を克服する方法は、属性値がすべてのクラス値で発生しない場合、すべての属性値とクラスの組み合わせのカウントに1を追加することです。したがって、たとえば、トレーニングデータが次のようになっているとします。

Spam=yesSpam=noTimeZone=US105TimeZone=EU00

P(TimeZone=US|Spam=yes)=1010=1

P(TimeZone=EU|Spam=yes)=010=0

次に、この表を使用して確率を計算するときに、この表のすべての値に1を追加する必要があります。

Spam=yesSpam=noTimeZone=US116TimeZone=EU11

P(TimeZone=US|Spam=yes)=1112

P(TimeZone=EU|Spam=yes)=112


4
確かに。場合によっては、1以外の値を追加する可能性があることに注意してください。詳細については、en.wikipedia.org
wiki / Additive_smoothing
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.