朴素贝叶斯分类器
贝叶斯决策论是概率框架下实施决策的基本方法
贝叶斯公式
P(B∣A)=P(A∣B)P(B)P(A)P(B|A)=\dfrac{P(A|B)P(B)}{P(A)}P(B∣A)=P(A)P(A∣B)P(B)
对于贝叶斯公式来讲,我们是通过求出先验概率P(B)P(B)P(B) 和类条件概率P(A∣B)P(A|B)P(A∣B)来确定后验概率P(B∣A)P(B|A)P(B∣A) ,通过估计后验概率的大小来判断事件所属的类别。
举个例子:假设一个班有2/3的学生是男生,有1/3的学生是女生,男生中有3/5的人戴眼镜,女生中有1/5的人戴眼镜。现有一学生戴眼镜,判断此学生是男生还是女生?
由公式可得:
先验概率:P(男)=2/3P(男)=2/3P(男)=2/3 P(女)=1/3P(女)=1/3P(女)=1/3
类条件概率:P(戴∣男)=3/5P(戴|男)=3/5P(戴∣男)=3/5 P(戴∣女)=1/5P(戴|女)=1/5P(戴∣女)=1/5
P(戴)=P(男)P(戴∣男)+P(女)P(戴∣女)=2/3∗3/5+1/3∗1/5=7/15\begin{aligned}P(戴)&=P(男)P(戴|男)+P(女)P(戴|女)\\&=2/3*3/5+1/3*1/5\\&=7/15\end{aligned}P(戴)=P(男)P(戴∣男)+P(女)P(戴∣女)=2/3∗3/5+1/3∗1/5=7/15
后验概率:
P(男∣戴)=P(男)P(戴∣男)P(戴)=2/3∗3/57/15=6/7\begin{aligned}P(男|戴)=\dfrac{P(男)P(戴|男)}{P{(戴)}}&=\dfrac{2/3*3/5}{7/15}\\&=6/7\end{aligned}P(男∣戴)=P(戴)P(男)P(戴∣男)=7/152/3∗3/5=6/7
P(女∣戴)=P(女)P(戴∣女)P(戴)=1/3∗1/57/15=1/7\begin{aligned}P(女|戴)=\dfrac{P(女)P(戴|女)}{P{(戴)}}&=\dfrac{1/3*1/5}{7/15}\\&=1/7\end{aligned}P(女∣戴)=P(戴)P(女)P(戴∣女)=7/151/3∗1/5=1/7
因为P(男∣戴)>P(女∣戴)P(男|戴)>P(女|戴)P(男∣戴)>P(女∣戴) 故判断此学生为男生
朴素贝叶斯分类
运用贝叶斯思想对数据集进行分类时
换成分类任务的表达式:
P(类别∣特征)=P(特征∣类别)P(类别)P(特征)P(类别|特征)=\dfrac{P(特征|类别)P(类别)}{P(特征)}P(类别∣特征)=P(特征)P(特征∣类别)P(类别)
假设有一个训练集D:
有N种可能的类别:γ={c1,c2,...,cN}\gamma=\{c_1,c_2,...,c_N\}γ={c1,c2,...,cN}
每个样本有ddd种特征:X={x1,x2,...,xd}X=\{x_1,x_2,...,x_d\}X={x1,x2,...,xd}
则对于样本x,我们有:
P(c∣x)=P(c)P(x∣c)P(x)P(c|x)=\dfrac{P(c)P(x|c)}{{P(x)}}P(c∣x)=P(x)P(c)P(x∣c)
对于先验概率P(c)P(c)P(c),当有充足的独立同分布的样本时,根据大数定律,可以对先验概率进行估计,令DcD_cDc为训练集D中第c类样本的集合。则:
P(c)=∣Dc∣∣D∣P(c)=\dfrac{|D_c|}{|D|}P(c)=∣D∣∣Dc∣
对于类条件概率P(x∣c)P(x|c)P(x∣c) ,即P(x1,x2,...,xd∣c)P(x_1,x_2,...,x_d|c)P(x1,x2,...,xd∣c) 是在类别c下所有特征的联合概率分布,也就是说当每个特征有二值时,样本空间有 2d2^d2d 种可能,远大于已有训练集,不能直接在训练集中估计。于是朴素贝叶斯的思想是,假设每个特征都独立同分布则:
P(x∣c)=Πi=1dP(xi∣c)P(x|c)=\Pi_{i=1}^dP(x_i|c)P(x∣c)=Πi=1dP(xi∣c) xix_ixi表示在样本x上第 i 个特征的取值。
在训练集上:
P(xi∣c)=∣Dcxi∣∣Dc∣P(x_i|c)=\dfrac{|D_{cx_i}|}{|D_c|}P(xi∣c)=∣Dc∣∣Dcxi∣ Dcxi表示在第c类下第i个特征取xi的样本D_{cx_i} 表示在第c类下第 i 个特征取x_i的样本Dcxi表示在第c类下第i个特征取xi的样本
此时朴素贝叶斯公式表现为:
P(x∣c)=P(c)P(x)Πi=1dP(xi∣c)=P(c)P(x)Πi=1d∣Dcxi∣∣Dc∣\begin{aligned}P(x|c)&=\dfrac{P(c)}{P(x)}\Pi_{i=1}^dP(x_i|c)\\&=\dfrac{P(c)}{P(x)}\Pi_{i=1}^d\dfrac{|D_{cx_i}|}{|D_c|}\end{aligned}P(x∣c)=P(x)P(c)Πi=1dP(xi∣c)=P(x)P(c)Πi=1d∣Dc∣∣Dcxi∣
由于类别 c 的取值于P(x)P(x)P(x)无关,于是:
P(x∣c)∝P(c)P(x∣c)P(x|c)\propto P(c)P(x|c)P(x∣c)∝P(c)P(x∣c)
因此朴素贝叶斯的判定准则有:
hnb(x)=argc∈γP(c)Πi=1dP(xi∣c)h_{nb}(x)=\arg\limits_{c\in\gamma}P(c)\Pi_{i=1}^dP(x_i|c)hnb(x)=c∈γargP(c)Πi=1dP(xi∣c)
也就是我们要找到一个 c 使样本的后验概率最大,我们就将这个样本判定为 c 类。
在实际情况中,会出现某个特征值与训练集中的某个类同时出现过,这样会使类条件概率为0。为避免其他特征值被未在训练集中出现的特征“抹去”。我们在估计概率值时通常要进行平滑处理。
修正为:
P(c)=∣Dc∣+1∣D∣+NP(c)=\dfrac{|D_c|+1}{|D|+N}P(c)=∣D∣+N∣Dc∣+1
P(xi∣c)=∣Dcxi∣+1∣D∣+NiP(x_i|c)=\dfrac{|D_{cx_i}|+1}{|D|+N_i}P(xi∣c)=∣D∣+Ni∣Dcxi∣+1
NNN表示整个训练集中可能的特征数,NiN_iNi表示第 i 个特征可能的取值数。
参考:周志华《机器学习》