朴素贝叶斯
我们的分类模型中有M个样本,每个样本有N维,输出的类别有C类。
样本例如
(X11,X12,X13...X1n,Y1)
(X21,X,2X23...X2n,Y2)
,从样本中我们可以得到先验概率
P(Y)
(K=1,2…C)及条件概率
P(X|Y)
,然后得到联合概率为:
P(XY)
,定义联合概率为
P(XY)=P(Y=Ck)∗P(X=x|Y=Ck)=P(Y=Ck)∗P(X=(x1,x2,...xn)|Y=Ck)
朴素贝叶斯假设
在这里我们假设X的n个维度之间互相独立,得到
P(X=(x1,x2,...xn)|Y=Ck)=P(X1=x1|Y=Ck)P(X2=x2|Y=Ck)∗P(Xn=xn|Y=Ck)
朴素贝叶斯原理
Creslut=argmaxP(Y|X)=P(X|Y)∗P(Y)P(X)
其中
P(Y=Ck)
是类别在训练集中中出现的频数,及
P(Y=Ck)=mckm
其中
mck
是类别K出现的次数。
上式中由于分母都一样都是
P(X)
,那么只要计算分子最大化即可。及
Creslut=argmaxP(Y|X)=P(X|Y)∗P(Y)
由于朴素贝叶斯的独立性,得到新的计算公式
Creslut=argmaxP(Y|X)=P(Y)∗∏j=1nP(X=xj|Y=Ck)
对于
P(Xj=xjα|Y=Ck)(j=1,2,3...n)
,对于输入样本的每一特征个数不同,我们这里默认每一个特征的选择都是是特征
α
. 对于后验概率中需要后验的就是对于每一个特征的不同选择。
在这里对于每个特征的的不同输入值有三种计算方案:
- 如果该特征是离散值:
P(Xj=xjα|y=Ck)=xjα+λmk+nλ
其中
λ
是拉普拉斯平滑参数
- 是稀疏的二项式离散值:
P(Xj=xjα|y=Ck)=P(j|Y=Ck)Xjα+(1−P(j|Y=Ck))(1−Xjα)
其中
Xjα
取值为0,1。
P(j|y=CK)
为在类别为K是第j维特征出现的概率
- 该特征是连续值,认为
Xj
在类别
Ck
中为正态分布
P(Xj=xjα|y=Ck)=12πσ2k−−−−√∗−(Xj−μk)22σ2k
其中
σ2k
是在样本
Ck
中所有的可取值的方差,
μk
是在样本
Ck
中所有可取值的均值(对于该样本的该特征我们的取值是
α
及
xjα
,对于该特征值的取值为连续函数值)
算法过程
训练集m个样本,n个维度,输出类别有k类,每一个类别的个数有
m1,m2,...mk
。
- 计算类别的先验概率
P(Y=Ck)=mkm
- 计算第k个类别的第j维特征取值为
α
时的条件概率
P(Xjα|Y=Yk)
其中
α
是要求的样本的第j维特征的取值,这个是需要在后验中给出的。
- 由于贝叶斯假设性,我们可以得到
P(X|Y)=∏j=1nP(Xj|Y=Ck)
那么对于输入样本X的分类
Cresult
的结果是
Cresult=argmax∏j=1nP(Xj|Y=Ck)∗P(Y=Ck)
算法小结
- 对于小规模数据表现良好,处理多分类问题
- 对于缺失值不敏感,常用于文本分类
- 但需要知道先验概率,而且是通过数据提供的后验数据(就是样本在每个特征上的取值)及先验决定分类,如果先验有问题(数据不平均差距很大)时有错误