版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37334135/article/details/85086042
参考书籍:《统计学习方法》,cs229讲义,其他。
1、朴素贝叶斯
1.1、朴素贝叶斯模型
朴素贝叶斯:基于贝叶斯定理与特征条件独立假设的分类方法。注意两个点,一个是贝叶斯定理,另一个是条件独立假设,后面会用到,该方法用来进行分类,即:给定输入变量x,输出类别标记y
先定义好变量表示。记输入变量表示为
X为m维向量的集合,输出空间为类标记集合表示为
Y={c1,c2,...,cK},训练集为
{(x1,y1),(x2,y2),...,(xn,yn)},特征向量
xi是m维的(m个特征)向量表示为
xi=(xi1,xi2,...,xim)T。
xij表示第
i个输入变量的第
j个特征。
根据贝叶斯公式有:
P(Y=ck∣X=x)=P(X=x)P(X=x,Y=ck)=P(X=x)P(X=x∣Y=ck)P(Y=ck) 对于给定的
x我们可以求出后验概率
P(Y=ck∣X=x),然后将后验概率最大的类作为
x类的输出。
看分子中的条件概率,
P(X=x∣Y=ck)=P(X1=x1,X2=x2,...,Xm=xm∣Y=ck),如果每个特征有
Sj个取值那么参数个数为
Ki=1∏mSj,这种数量级的参数是不可行的。
而贝叶斯给了这么个强的条件独立的假设,注意不是独立假设,公式如下:
P(X=x∣Y=ck)=P(X1=x1,X2=x2,...,Xm=xm∣Y=ck)=j=1∏mP(Xj=xj∣Y=ck)
所以现在我们有
P(Y=ck∣X=x)=P(X=x)P(X=x,Y=ck)=P(X=x)P(X=x∣Y=ck)P(Y=ck)=P(X=x)P(Y=ck)j=1∏mP(Xj=xj∣Y=ck)
对于输入
X=x将得到的最大的
P(Y=ck∣X=x)对应的类(即
ck)作为输出。而分母对于输入的
ck都是一样的,所以我们得到。
y=argckmaxP(Y=ck)j=1∏mP(Xj=xj∣Y=ck)
下面进行模型的学习,即参数估计
1.2、朴素贝叶斯的参数估计
对于这种给定模型,数据,求参数的我们仍然使用极大似然估计。在这里也就是对
P(Y=ck)和
P(Xj=xj∣Y=ck)进行参数估计。
先对
P(Y=ck)进行参数估计,首先容易得到
P(Y=ck)=k=1∑KP(Y=ck)I(yi=ck),其中
I(yi=ck)是指示函数
I(true)=1,I(false)=0。写出似然函数并取对数:
l=lnL=lni=1∏n(P(Y=ck)j=1∏mP(Xj=xij∣Y=ck))=i=1∑nk=1∑KI(yi=ck)lnP(Y=ck)+i=1∑nj=1∑mlnP(Xj=xij∣Y=ck)
现在要求
l关于参数
P(Y=ck)最大值,就不要去直接求导了,这里参数还有个限制
k=1∑KP(Y=ck)=1。先看下百度百科的拉格朗日法的使用
现在我们加上限制条件来构造拉格朗日函数,这里我们记
P(Y=ck)=θk
这样看着更像参数
f=i=1∑nk=1∑KI(yi=ck)lnθk+i=1∑nj=1∑mlnP(Xj=xj∣Y=ck)+λ(k=1∑KP(Y=ck)−1)
分别求导如下:
fθk′=θki=1∑nI(yi=ck)+λ=0=>θk=−λi=1∑nI(yi=ck)两把对k求和得到
k=1∑Kθk=−λn
fλ′=k=1∑Kθk−1=0=>k=1∑Kθk=1所以
−λn=1=>λ=−n
所以
θk=P(Y=ck)=−λi=1∑nI(yi=ck)=>θk= ni=1∑nI(yi=ck)
而对
P(Xj=xj∣Y=ck)进行估计也得先做点小变换,设第
j个特征
xj可能取值的集合为
{aj1,aj2,...,ajSj},
ajl是第
j个特征可能取的第
l个值,那么有如下的变换:
P(Xj=xj∣Y=ck)=k=1∑KP(Xj=xj∣Y=ck)I(Y=ck)=k=1∑Kl=1∑SlP(Xj=ajl∣Y=ck)I(Xj=ajl,Y=ck),然后再带入使用拉格朗日去求。
最后的结果是
P(Xj=ajl∣Y=ck)=i=1∑nI(yi=ck)i=1∑nI(xij=ajl,yi=ck)
2.3、拉普拉斯平滑
用极大似然估计学得的朴素贝叶斯模型,可能会出现个问题,那就是出现$
P(Xj=ajl∣Y=ck)=0然后导致
P(Y=ck∣X=x)=0,举个例子来说,将朴素贝叶斯分类用在垃圾邮件过滤。
X表示为各个单词组成的向量,
Y=0,1,假设0表示垃圾邮件。然后我们有X(邮件),预测它是不是垃圾邮件,一旦X中出现了新词那么结果就为0当做垃圾邮件了,显然不合理。解决办法是使用贝叶斯估计,结果中加了个参数
P(Xj=ajl∣Y=ck)=i=1∑nI(yi=ck)+Sjλi=1∑nI(xij=ajl,yi=ck)+λ 当
λ=0的时候就是极大似然估计了,而当
λ=1的时候称为拉普拉斯平滑。