参考:
《统计学习方法》 李航 著 清华大学出版社
《机器学习》周志华 著 清华大学出版社
-概率论准备
贝叶斯法则,乘法公式
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
=
1
n
P
(
A
i
)
P
(
B
|
A
i
)
-朴素贝叶斯分类法
贝叶斯决策论(Bayesian decision theory)
设
x1
x
1
,
x2
x
2
…
xN
x
N
是一组样本(N个),每个样本有n个属性值,即
x1={x11,x21...xn1}
x
1
=
{
x
1
1
,
x
1
2
.
.
.
x
1
n
}
。由所有的样本向量构成的空间称作输入空间,X是在这个输入空间上的随机向量。每个样本有一个特定的类别c,设总体有k个类别,则有类别标记集合
ϕ={c1,c2...ck}
ϕ
=
{
c
1
,
c
2
.
.
.
c
k
}
。每个样本的类别Y可以看作是
ϕ
ϕ
上的随机变量。则P(X,Y)是X和Y的联合概率分布。
λij
λ
i
j
是将一个真实标记为
cj
c
j
标记称为
ci
c
i
产生的损失,则基于后验概率
P(ci|x),可获得将样本x分类为ci所产生的期望损失(条件风险)为:
P
(
c
i
|
x
)
,
可
获
得
将
样
本
x
分
类
为
c
i
所
产
生
的
期
望
损
失
(
条
件
风
险
)
为
:
R(ci|x)=∑kj=1λijP(cj|x)
R
(
c
i
|
x
)
=
∑
j
=
1
k
λ
i
j
P
(
c
j
|
x
)
我们的目的是寻找一个方法使得条件风险最小化。为最小化总体风险,只需在每个样本上选择哪个能使条件风险R(c|x)最小化的类别标记,即
如果 只考虑最小化分类错误率(正判损失为0,误判损失为1。也可以考虑选择其他的损失函数。例如,在邮件分类中,把垃圾邮件误分类为办公邮件的损失要远远小于办公邮件被误分为垃圾邮件的损失,这样只考虑分类错误率就不是最好的选择了。),则条件风险为
即最大化每个样本的后验概率P(c|x):
最小化总体风险
朴素贝叶斯
现实中, x11 x 1 1 与 xj1 x 1 j ( j∈(1,n] j ∈ ( 1 , n ] , j∈Z+ j ∈ Z + )是不能保证相互独立的。在这种情况下,条件概率分布
这样,我们可以通过若干个条件概率相乘来得到对应的条件概率。“朴素贝叶斯”由此得名。这个假设下,计算会变得简单,但有时会牺牲一定的分类准确率。
对数学公式进一步整理
由贝叶斯公式得
右边分母用全概率公式替换得
在朴素假设下替换分子得
替换分母得
这就是朴素贝叶斯分类的基本公式。注意,整个分母的含义为 P(X=x) P ( X = x ) ,它对于所有 ci c i 都是相同的。所以朴素贝叶斯分类器可表示为
也就是 ci c i 的概率最大,我就把这个x归到 ci c i
这样,我们的任务就变成了从已知样本中估计 P(Y=ci)和P(X(j)=x(j)|Y=ci). P ( Y = c i ) 和 P ( X ( j ) = x ( j ) | Y = c i ) .
极大似然估计(用贝叶斯估计亦可)
先验概率 P(Y=ci) P ( Y = c i ) 的最大似然估计是
设第j个特征 xj x j 可能取值的集合为 {aj1,aj2,...,ajSj} { a j 1 , a j 2 , . . . , a j S j } 条件概率 P(X(j)=ajl|Y=ck) P ( X ( j ) = a j l | Y = c k ) 的极大似然估计是
式中, x(j)n x n ( j ) 是第n个样本的第j个特征; ajl a j l 是第j个特征可能取的第l个值;I为指示函数。
这两个概率的估计过程就是朴素贝叶斯分类器的学习过程。
平滑处理
小问题:注意到极大似然估计中,式
如果某个属性值在训练集中没有与某个类同时出现过,直接采用等式右边的分子 ∑Nn=1I(X(j)n=ajl,yn=ci) ∑ n = 1 N I ( X n ( j ) = a j l , y n = c i ) 进行估计,我们会得到属性 X(j) X ( j ) 的条件概率 P(X(j)=ajl|Y=ci)=0 P ( X ( j ) = a j l | Y = c i ) = 0 ,这最终会让我们得出 P(X=x|y=ci)=0 P ( X = x | y = c i ) = 0 的结果。这很可能会导致该样本分类产生比较大的偏差。
解决办法:采用平滑处理。
具体的,条件概率:
相当于在随机变量各个取值的频数上赋予一个正数 λ>0 λ > 0 ,常取 λ=1 λ = 1 ,此时称为拉普拉斯平滑(Laplace smoothing)。
同样,先验概率:
-知识扩展
如果不假设输入变量都是条件独立的,假设它们之间存在概率依存关系,那么模型就变为了贝叶斯网络。可参
Bishop C.Pattern Recognition and Machine Learning, Springer, 2006
还有一种比较平庸的选择,假设每个属性在类别之外最多仅依赖一个其他属性,这样就不用计算完全联合概率,也不至于彻底忽略了比较强的属性依赖信息(比如在一个侮辱性的文本中,像垃圾和蠢蛋之类的词经常会在一起出现。对比的,也不会仅用一个词夸人,往往使用排比句之类的。)