之前学习西瓜书的时候,记录过朴素贝叶斯的学习笔记。由贝叶斯判定准则可知,我们可以使用最大后验估计来获取样本的类别。而贝叶斯分类器估计后验概率的问题可转换为估计类先验概率和类条件概率。对于朴素贝叶斯,假设属性条件性独立,因此核心就是估计类先验概率和各属性的类条件概率。 a r g m a x c k P ( c k ) ∏ i = 1 d P ( x i = x i t e s t ∣ c k ) argmax_{c_k} \ P(c_k)\prod_{i=1}^d P(x_i=x_i^{test}|c_k) argmaxck P(ck)i=1∏dP(xi=xitest∣ck)如果取log可将乘法变成加法使计算更简单,同时这种也可以看作是线性回归,权重为1,sklearn库里也是如此实现的。 a r g m a x c k l o g ( P ( c k ) ) + ∑ i = 1 d l o g ( P ( x i = x i t e s t ∣ c k ) ) argmax_{c_k} \ log(P(c_k))+\sum_{i=1}^d log(P(x_i=x_i^{test}|c_k)) argmaxck log(P(ck))+i=1∑dlog(P(xi=xitest∣ck))
尽管朴素贝叶斯分类器的假设过于简化,但是有些实际情况中(文本分类和垃圾邮件过滤)表现良好。不同的朴素贝叶斯分类器的区别在于对属性的类条件概率的分布假设不同,贝叶斯的训练过程其实就是参数估计的过程。sklearn中有3种不同分布对应的朴素贝叶斯分类器。
1.高斯朴素贝叶斯
1.1高斯分布
高斯分布又称正态分布,是一种连续型概率分布,其概率密度函数有两个参数(均值和方差),可用极大似然法估计参数,估计过程如下图
1.2高斯朴素贝叶斯
高斯朴素贝叶斯假设所有特征服从多元高斯分布,每个属性的类条件概率都服从不同的高斯分布。由于朴素假设,类联合概率 P ( x ∣ c ) P(x|c) P(x∣c)就等于特征的类条件概率连乘。贝叶斯的训练过程其实就是参数估计的过程,使用极大似然估计出参数:对于特征 x i x_i xi来说,均值、方差的估计分别为在样本类别c中,所有 x i x_i xi的平均值和方差。对于一个连续的样本值,带入已知参数的高斯分布,就可以求出它的概率了。
2.伯努利朴素贝叶斯
2.1伯努利分布
伯努利分布又叫做0-1分布,是一种离散型概率分布。是指对于随机变量X,一次试验只有两种结果,取1的概率为p,取0的概率为1-p。记为B(1,p),参数为p。比如抛一次硬币,预测结果是正面还是反面。 P ( x ∣ c ) = p x ( 1 − p ) ( 1 − x ) = p x + ( 1 − p ) ( 1 − x ) P(x|c)=p^x(1-p)^{(1-x)}=px+(1-p)(1-x) P(x∣c)=px(1−p)(1−x)=px+(1−p)(1−x)
伯努利分布的参数估计
对于特征x,一个样本的似然为 P ( x ∣ c ) = p x ( 1 − p ) ( 1 − x ) P(x|c)=p^x(1-p)^{(1-x)} P(x∣c)=px(1−p)(1−x)