朴素贝叶斯分类算法
定义
朴素贝叶斯(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.