您的位置:首页 > 其它

web数据挖掘学习笔记-朴素贝叶斯分类(理论部分)

2018-04-09 18:49 183 查看
版权声明:本文系博主原创,转载请注明出处。谢谢合作! https://blog.csdn.net/monteCarloStyle/article/details/79870860

参考:
《统计学习方法》 李航 著 清华大学出版社
《机器学习》周志华 著 清华大学出版社

-概率论准备

贝叶斯法则,乘法公式
P(A∩B)=P(B|A)∗P(A)=P(A|B)∗P(B)P(A∩B)=P(B|A)∗P(A)=P(A|B)∗P(B)
条件独立
设事件A与事件B相互独立,则
P(A)P(B) = P(AB)
设事件A|Y(Y发生的条件下A发生)与B|Y相互独立,则
P(AB|Y) = P(A|Y)P(B|Y)
全概率公式
P(B)=∑ni=1P(Ai)P(B|Ai)P(B)=∑i=1nP(Ai)P(B|Ai)

-朴素贝叶斯分类法

贝叶斯决策论(Bayesian decision theory)

设x1x1,x2x2…xNxN是一组样本(N个),每个样本有n个属性值,即x1={x11,x21...xn1}x1={x11,x12...x1n}。由所有的样本向量构成的空间称作输入空间,X是在这个输入空间上的随机向量。每个样本有一个特定的类别c,设总体有k个类别,则有类别标记集合ϕ={c1,c2...ck}ϕ={c1,c2...ck}。每个样本的类别Y可以看作是ϕϕ上的随机变量。则P(X,Y)是X和Y的联合概率分布。
λijλij 是将一个真实标记为cjcj标记称为cici产生的损失,则基于后验概率P(ci|x),可获得将样本x分类为ci所产生的期望损失(条件风险)为:P(ci|x),可获得将样本x分类为ci所产生的期望损失(条件风险)为:R(ci|x)=∑kj=1λijP(cj|x)R(ci|x)=∑j=1kλijP(cj|x)
我们的目的是寻找一个方法使得条件风险最小化。为最小化总体风险,只需在每个样本上选择哪个能使条件风险R(c|x)最小化的类别标记,即h∗(x)=argminc∈YR(c|x)h∗(x)=argminc∈YR(c|x)
如果只考虑最小化分类错误率(正判损失为0,误判损失为1。也可以考虑选择其他的损失函数。例如,在邮件分类中,把垃圾邮件误分类为办公邮件的损失要远远小于办公邮件被误分为垃圾邮件的损失,这样只考虑分类错误率就不是最好的选择了。),则条件风险为R(c|x)=1−P(c|x)R(c|x)=1−P(c|x)
即最大化每个样本的后验概率P(c|x):h∗(x)=argmaxc∈YP(c|x)h∗(x)=argmaxc∈YP(c|x)
最小化总体风险argmin∑k=1N[1−P(y=ci|X=x)]argmin∑k=1N[1−P(y=ci|X=x)]等价于 argmaxP(y=ci|X=x)argmaxP(y=ci|X=x)

朴素贝叶斯

现实中,x11x11与xj1x1j (j∈(1,n]j∈(1,n], j∈Z+j∈Z+)是不能保证相互独立的。在这种情况下,条件概率分布P(X=x|Y=ci)=P(X(1)=x(1)...X(n)=x(n)|Y=ci)P(X=x|Y=ci)=P(X(1)=x(1)...X(n)=x(n)|Y=ci)具有指数级数量的参数,计算相当复杂。我们假设一个比较强的条件:x的各个属性之间是相互独立的。则P(X=x|Y=ci)=P(X(1)=x(1)...X(n)=x(n)|Y=ci)P(X=x|Y=ci)=P(X(1)=x(1)...X(n)=x(n)|Y=ci) =∏j=1nP(X(j)=x(j)|Y=ci)=∏j=1nP(X(j)=x(j)|Y=ci)
这样,我们可以通过若干个条件概率相乘来得到对应的条件概率。“朴素贝叶斯”由此得名。这个假设下,计算会变得简单,但有时会牺牲一定的分类准确率。

对数学公式进一步整理

由贝叶斯公式得
P(Y=ci|X=x)=P(X=x|Y=ci)P(Y=ci)P(X=x)P(Y=ci|X=x)=P(X=x|Y=ci)P(Y=ci)P(X=x)
右边分母用全概率公式替换得
P(Y=ci|X=x)=P(X=x|Y=ci)P(Y=ci)∑ki=1P(X=x|Y=ci)P(Y=ci)P(Y=ci|X=x)=P(X=x|Y=ci)P(Y=ci)∑i=1kP(X=x|Y=ci)P(Y=ci)
在朴素假设下替换分子得
P(Y=ci|X=x)=P(Y=ci)∏nj=1P(X(j)=x(j)|Y=ck)∑ki=1P(X=x|Y=ci)P(Y=ci)P(Y=ci|X=x)=P(Y=ci)∏j=1nP(X(j)=x(j)|Y=ck)∑i=1kP(X=x|Y=ci)P(Y=ci)
替换分母得
P(Y=ci|X=x)=P(Y=ci)∏nj=1P(X(j)=x(j)|Y=ci)∑ki=1P(Y=ci)∏nj=1P(X(j)=x(j)|Y=ci)P(Y=ci|X=x)=P(Y=ci)∏j=1nP(X(j)=x(j)|Y=ci)∑i=1kP(Y=ci)∏j=1nP(X(j)=x(j)|Y=ci)
这就是朴素贝叶斯分类的基本公式。注意,整个分母的含义为P(X=x)P(X=x),它对于所有cici都是相同的。所以朴素贝叶斯分类器可表示为
y=argmaxciP(Y=ci)∏j=1nP(X(j)=x(j)|Y=ci)y=argmaxciP(Y=ci)∏j=1nP(X(j)=x(j)|Y=ci)
也就是cici的概率最大,我就把这个x归到cici
这样,我们的任务就变成了从已知样本中估计P(Y=ci)和P(X(j)=x(j)|Y=ci).P(Y=ci)和P(X(j)=x(j)|Y=ci).

极大似然估计(用贝叶斯估计亦可)

先验概率P(Y=ci)P(Y=ci)的最大似然估计是P(Y=ci)=∑Nn=1I(yn=ci)N,i=1,2,3...kP(Y=ci)=∑n=1NI(yn=ci)N,i=1,2,3...k
设第j个特征xjxj可能取值的集合为{aj1,aj2,...,ajSj}{aj1,aj2,...,ajSj}条件概率P(X(j)=ajl|Y=ck)P(X(j)=ajl|Y=ck) 的极大似然估计是
P(X(j)=ajl|Y=ci)=∑Nn=1I(X(j)n=ajl,yn=ci)∑Nn=1I(yn=ci)P(X(j)=ajl|Y=ci)=∑n=1NI(Xn(j)=ajl,yn=ci)∑n=1NI(yn=ci)
式中,x(j)nxn(j)是第n个样本的第j个特征;ajlajl是第j个特征可能取的第l个值;I为指示函数。
这两个概率的估计过程就是朴素贝叶斯分类器的学习过程。

平滑处理

小问题:注意到极大似然估计中,式
P(X(j)=ajl|Y=ci)=∑Nn=1I(X(j)n=ajl,yn=ci)∑Nn=1I(yn=ci)P(X(j)=ajl|Y=ci)=∑n=1NI(Xn(j)=ajl,yn=ci)∑n=1NI(yn=ci)
如果某个属性值在训练集中没有与某个类同时出现过,直接采用等式右边的分子∑Nn=1I(X(j)n=ajl,yn=ci)∑n=1NI(Xn(j)=ajl,yn=ci)进行估计,我们会得到属性X(j)X(j)的条件概率P(X(j)=ajl|Y=ci)=0P(X(j)=ajl|Y=ci)=0,这最终会让我们得出P(X=x|y=ci)=0P(X=x|y=ci)=0的结果。这很可能会导致该样本分类产生比较大的偏差。
解决办法:采用平滑处理。
具体的,条件概率:
P(X(j)=ajl|Y=ci)=λ+∑Nn=1I(X(j)n=ajl,yn=ci)λSj+∑Nn=1I(yn=ci),λ≥0,Sj:第j个属性共有多少个可能取值P(X(j)=ajl|Y=ci)=λ+∑n=1NI(Xn(j)=ajl,yn=ci)λSj+∑n=1NI(yn=ci),λ≥0,Sj:第j个属性共有多少个可能取值
相当于在随机变量各个取值的频数上赋予一个正数λ>0λ>0,常取λ=1λ=1,此时称为拉普拉斯平滑(Laplace smoothing)。
同样,先验概率:P(Y=ci)=λ+∑Nn=1I(yn=ci)N+kλ,i=1,2,3...kP(Y=ci)=λ+∑n=1NI(yn=ci)N+kλ,i=1,2,3...k

-知识扩展

如果不假设输入变量都是条件独立的,假设它们之间存在概率依存关系,那么模型就变为了贝叶斯网络。可参
Bishop C.Pattern Recognition and Machine Learning, Springer, 2006
还有一种比较平庸的选择,假设每个属性在类别之外最多仅依赖一个其他属性,这样就不用计算完全联合概率,也不至于彻底忽略了比较强的属性依赖信息(比如在一个侮辱性的文本中,像垃圾和蠢蛋之类的词经常会在一起出现。对比的,也不会仅用一个词夸人,往往使用排比句之类的。)

阅读更多
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: