朴素贝叶斯分类算法

朴素贝叶斯分类算法

定义

朴素贝叶斯(naive Bayes)法是基于贝叶斯定理与特征条件独立假设的分类方法。 对于给定的训练数据集,首先基于特征条件独立假设 学习输入/输出联合概率分布;然后基于此模型,对于给定的输入x,利用贝叶斯定理求出后验概率的最大输出y。

原理分析

基本原理

它的本质是将实例分到后验概率最大的类中,等价于期望风险最小化。这里假设选择了0-1损失函数。

其中,f(X)为分类决策函数,期望风险函数为$R_{exp}(f)=E_p[L(Y),f(x))]$

期望是对联合分布P(X,Y)取的,由此可得

需要使期望风险最小化,化简后可得到

$f(x)=\underset{y\in Y}{\operatorname{argmax}}P(y=c_k|X=x)$[后验概率]

【不过我之前一直理解的是,后验概率的意思是,求测试案例可能在哪个类别的概率比较大。似乎不严谨】

公式推理

[这里考虑的是简单的离散的情况]

若求x在哪一个类别(假设类别是$c_1、c_2$等),则也就是等价于求后验概率

又根据公式,有$P(Y|X)=\frac{P(X,Y)}{P(X)}$和$P(X|Y)=\frac{P(X,Y)}{P(Y)}$

【可认为后验概率=先验概率×调整因子】

  • 先验概率分布 $P(Y=c_k),k=1,2,…,K$

  • 条件概率分布

    因为是条件独立性假设,认为每个属性独立地对分类结果发生影响。

  • 全概率公式

因此,将以上公式代入,有

又因为,分母对所有$c_k$都是相同的,所以实际求

由于连乘操作易造成溢出,往往使用log计算,相关计算可参考“极大似然估计”

【具体计算过程、案例可参考《统计学习方法》】

拉普拉斯平滑

若某个属性值在训练集中没有与某个类同时出现过,直接进行概率估计,由于连乘的存在,很可能出现零。

为了避免其他属性携带的信息被训练集中未出现的属性值“抹去”,在估计概率值时通常要进行平滑,常用拉普拉斯修正。具体来说,令N表示训练集D中可能的类别数,$N_i$表示第i个属性可能的取值数目,则有

用途用法

朴素贝叶斯分类常用于文本分类等应用,对字词处理有比较大的作用。

在文档分类中,整个文档(如一封电子邮件)是实例,而电子邮件中的某些元素则构成特征。虽然电子邮件是一种会不断增加的文本,但我们同样也可以对新闻报道、用户留言、政府公文等其他任意类型的文本进行分类。我们可以观察文档中出现的词,并把每个词的出现或者不出现作为一个特征,这样得到的特征数目就会跟词汇表中的词目一样多。

【《机器学习实战》中有详细介绍如何用它进行垃圾邮件分类。】

朴素贝叶斯分类也可以通过调用sklearn直接使用。

优缺点

优点:在数据较少的情况下仍然有效,可以处理多类别问题。
缺点:对于输入数据的准备方式较为敏感。
适用数据类型:标称型数据。

参考资料

[1] P. 哈林顿 (Harrington and 李锐, 机器学习实战. 2013.

[2] 李航, 统计学习方法. 2012.

[3] 周志华, 机器学习. 2016.