如何处理朴素贝叶斯分类器计算中的零因子?

数据挖掘 分类 朴素贝叶斯分类器
2021-10-09 01:21:06

如果我有一个训练数据集并在其上训练一个朴素贝叶斯分类器,并且我有一个概率为零的属性值。如果我以后想预测新数据的分类,我该如何处理?问题是,如果计算中的值为零,则无论我得到多少其他值可能会找到另一个解决方案,整个乘积都会变为零。

例子:

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

整个产品变成 0因为在训练数据中,属性 TimeZone US 在我们的小型训练数据集中始终为 Yes。我该如何处理?我应该使用更大的训练数据集还是有另一种可能性来克服这个问题?

1个回答

在贝叶斯设置中克服这种“零频率问题”的一种方法是,当属性值不与每个类值一起出现时,为每个属性值-类组合的计数加一。因此,例如,假设您的训练数据如下所示:

垃圾邮件=是的es垃圾邮件=n时区=ü小号105时区=ü00

(时区=ü小号|垃圾邮件=是的es)=1010=1

(时区=ü|垃圾邮件=是的es)=010=0

然后,当您使用它来计算概率时,应该为该表中的每个值添加一个:

垃圾邮件=是的es垃圾邮件=n时区=ü小号116时区=ü11

(时区=ü小号|垃圾邮件=是的es)=1112

(时区=ü|垃圾邮件=是的es)=112