朴素贝叶斯

2019/07/03 ML

总结

在所有的机器学习分类算法中,朴素贝叶斯和其他绝大多数的分类算法都不同。对于大多数分类算法,如决策树、KNN、逻辑回归、支持向量机等,它们都是判别方法,即直接学习出特征输出$Y$和特征$X$间的关系。(要么是决策函数$Y=f(X)$,要么是条件分布$P(Y|X)$)但朴素贝叶斯却是生成方法,即通过先验概率分布$P(Y)$和条件概率分布$P(X|Y)$,求出类别$Y$和特征$X$的联合分布$P(X,Y)=P(X|Y)P(Y)$,然后利用贝叶斯公式求出类别的后验概率分布$P(Y|X)$,概率最大的那个类别就是样本所属的类别。[$P\left( Y|X \right) =\frac{P\left( X,Y \right)}{P\left( X \right)}$]

相关假设

  1. 特征间相互独立(朴素的由来)
  2. 特征服从某种分布(伯努利分布/多项式分布/高斯分布)

数学描述

训练样本集如下:



共有$m$个样本,每个样本有$n$个特征,样本集中有$K$个类别,定义为${C_1,C_2,…,C_K}$,每个类别的样本个数分别为${m_1,m_2,…,m_K}$,其有$m_1+m_2+…+m_K=m$。若样本特征为离散值,则第$k$个类别第$j$个特征中第$l$个取值个数记为$m_{kjl}$。其中$S_j$表示第$j$个特征不同种类的个数。由上述描述的训练集,预测$X^{\left( test \right)}$的类别

由训练样本集可得先验分布及条件概率分布 然后利用贝叶斯公式可得类别$Y$和特征$X$的联合分布$P(X,Y)$,定义如下:



由特征间的相互独立假设可知:

由训练数据集求得后,即可根据贝叶斯定理,求得测试集中某个测试样本$\left( x_{1}^{\left( test \right)},x_{2}^{\left( test \right)},…x_{n}^{\left( test \right)} \right) $属于各个类别的后验概率,选择概率最大的类别作为测试样本的最终类别。 即

又对于每一个样本来说,上述公式的分母是一样的,因此,预测公式可简化为

再由朴素贝叶斯的独立性假设,进一步得:

参数估计

由上述分析可知,只要求出$P(Y=C_k)和P(X_j=X_j^{(test)}|Y=C_k)(j=1,2,…n)$,即可通过比较获得最终的分类结果。

对于$P(Y=C_k)$,若没有$Y$的先验概率,则类别$Y$属于$k$的先验概率为$P(Y=C_k)=\frac{m_k+\lambda}{m+K\lambda}$(没有平滑的叫极大似然估计,加了平滑的叫贝叶斯估计),否则$P(Y=C_k)$为输入的先验概率

对于条件概率 , 取决于我们的先验特征分布假设

更进一步地,对上述条件概率需先计算第$k$个类别的第$j$维特征的第$l$个取值的条件概率$P\left( X_j=x_{jl}^{(test)}|Y=C_k \right)$

  • 如果$X_j$是离散的值,那么可以假设$X_j$符合多项式分布,此时有: 

$\lambda$为大于0的数字,当取1时,表示拉普拉斯平滑。(主要防止出现为0的概率,具体数值例子见李航的统计学习方法)

  • 如果$X_j$是非常稀疏的离散值,即各个特征出现概率很低,则可以假设$X_j$符合伯努利分布,有:

此时$l$只有两种取值

  • 如果$X_j$是连续值,则不需要计算各个$l$的取值概率,直接求正态分布的参数:

需要求出$\mu_k和\sigma_k^2$。 $\mu_k$为在样本类别$C_k$中所有$X_j$的平均值。$\sigma_k^2$为在样本类别$C_k$中所有$X_j$的方差

模型种类

根据输入特征分布的不同会有不同形式的朴素贝叶斯

BernoulliNB

先验为伯努利分布的朴素贝叶斯。若样本特征是二元离散值或者很稀疏的多元离散值,则选用BernoulliNB

MultinomialNB

先验为多项式分布的朴素贝叶斯。若样本特征的分布大部分是多元离散值,则选用MultinomialNB

GaussianNB

先验为高斯分布的朴素贝叶斯。若样本特征的分布大部分是连续值,则选用GaussianNB

优缺点

优点:

  1. 无复杂的计算,有稳定的分类效率
  2. 对小规模的数据表现很好,可处理多分类任务,适合增量式训练,尤其是数据量超出内存时,我们可以一批批的去增量训练
  3. 对缺失数据不太敏感,算法也比较简单,常用于文本分类

缺点:

  1. 由于朴素贝叶斯模型在给定输出类别的情况下,假设特征间相互独立,而这个假设在实际应用中往往是不成立的,在样本特征数比较多或者特征间相关性较大时,分类效果不好。而在特征相关性较小时,朴素贝叶斯性能较好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进
  2. 需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳
  3. 由于我们是通过先验和数据来决定后验的概率从而决定分类,所以分类决策存在一定的错误率
  4. 对样本特征的表达形式很敏感

实战

垃圾邮件分类

情感分类

参考

Search

    Post Directory