朴素贝叶斯算法的一些细节和小技巧

某特征属性的条件概率为0

当特征属性为离散值时,只要统计训练样本中各个划分在每个类别中出现的频率即可用来估计P(a|y),若某一特征值的概率为0则会使整个概率乘积变为0,这会让分类器的准确性大幅下降。

这时候使用Laplace校准:即假定训练数据库很大,以至于对每个计数加1造成的估计概率的变化忽略不计。

连续分布假定值服从高斯分布(正态分布)

当特征属性为连续值时,通常假定其值服从高斯分布,即:

$$p\left( x_{i}|y\right) =\dfrac {1} {\sqrt {2\pi \sigma_{y}^{2}}}exp\left( -\dfrac {\left( x_{i}-\mu_{y}\right) ^{2}} {2\sigma_{y}^{2}}\right)$$

所以,对于连续分布的样本特征的训练就是计算其均值和方差

小数连续相乘

实际项目中,概率P往往是值很小的小数,连续的微小小数相乘容易造成下溢出使乘积为0或者得不到正确答案。一种解决办法就是对乘积取自然对数,将连乘变为连加,$\ln \left( AB\right) =\ln A+\ln B$。采用自然对数处理不会带来任何损失,可以避免下溢出或者浮点数舍入导致的错误。

坚持原创技术分享,您的支持将鼓励我继续创作!