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


14

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

例:

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属性始终为“是”。我该如何处理?我应该使用更多的训练数据集还是有另一种可能性可以克服这个问题?0


如果定义出现离散属性值,则其概率不能为零。
保罗

为什么我们要在0频率中加1,这背后的逻辑是什么?为什么不加上另一个数字。
Aftab Hussaiin

Answers:


13

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

Spam=yesSpam=noTimeZone=US105TimeZone=EU00

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

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

然后,在使用它计算概率时,应在此表中的每个值上添加一个:

Spam=yesSpam=noTimeZone=US116TimeZone=EU11

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

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


4
确实。请注意,有时您可能会添加一个以外的值。有关详细信息,请参见en.wikipedia.org/wiki/Additive_smoothing
DaL
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.