朴素贝叶斯法是基于贝叶斯定理与特征条件独立假设的分类方法。
1)对于给定的数据集,首先基于特征条件独立假设学习输入\输出的联合概率分布;
2)然后基于此模型,对给定的输入
x
x
x,利用贝叶斯定理求出后验概率最大的输出
y
y
y
下面我们就围绕上面2个步骤进行介绍。
基本概念:
先验概率:是根据以往的经验和分析得到的概率(先验概率是我们在未知条件下对事件发生可能性猜测的数学表示)
后验概率:事情已经发生,要探求这件事情发生的原因是由某个因素引起的可能性大小(根据结果反推是由那个原因引起的)
(下面的例子参考这个老哥的博客:https://www.cnblogs.com/yemanxiaozu/p/7680761.html)
P ( 加 了 醋 ∣ 吃 起 来 是 酸 的 ) = P ( 加 了 醋 , 且 吃 起 来 是 酸 的 ) P ( 吃 起 来 是 酸 的 ) P(加了醋|吃起来是酸的)=\frac{P(加了醋,且吃起来是酸的)}{P(吃起来是酸的)} P(加了醋∣吃起来是酸的)=P(吃起来是酸的)P(加了醋,且吃起来是酸的)
= P ( 吃 起 来 是 酸 的 ∣ 加 了 醋 ) ∗ P ( 加 了 醋 ) P ( 吃 起 来 是 酸 的 ) =\frac{P(吃起来是酸的|加了醋)*P(加了醋)}{P(吃起来是酸的)} =P(吃起来是酸的)P(吃起来是酸的∣加了醋)∗P(加了醋)
= P ( 吃 起 来 是 酸 的 ∣ 加 了 醋 ) ∗ P ( 加 了 醋 ) P ( 吃 起 来 是 酸 的 ∣ 加 了 醋 ) ∗ P ( 加 了 醋 ) + P ( 吃 起 来 是 酸 的 ∣ 肉 变 质 ) ∗ P ( 肉 变 质 ) =\frac{P(吃起来是酸的|加了醋)*P(加了醋)}{P(吃起来是酸的|加了醋)*P(加了醋)+P(吃起来是酸的|肉变质)*P(肉变质)} =P(吃起来是酸的∣加了醋)∗P(加了醋)+P(吃起来是酸的∣肉变质)∗P(肉变质)P(吃起来是酸的∣加了醋)∗P(加了醋)
其中 P ( 加 了 醋 ∣ 吃 起 来 是 酸 的 ) P(加了醋|吃起来是酸的) P(加了醋∣吃起来是酸的)就是后验概率,所谓后验概率是一种果因概率,即在一个结果已经发生的条件下,可能是其中一个原因造成的概率有多大。
贝叶斯公式:
P
(
Y
∣
X
)
=
P
(
X
∣
Y
)
P
(
Y
)
P
(
X
)
P(Y|X)=\frac{P(X|Y)P(Y)}{P(X)}
P(Y∣X)=P(X)P(X∣Y)P(Y)
贝叶斯公式是由联合概率公式推导出来的:
P
(
Y
,
X
)
=
P
(
Y
∣
X
)
P
(
X
)
=
P
(
X
∣
Y
)
P
(
Y
)
P(Y,X)=P(Y|X)P(X)=P(X|Y)P(Y)
P(Y,X)=P(Y∣X)P(X)=P(X∣Y)P(Y)
概率论与数理统计中关于贝叶斯公式的解释:
“如果我们把事件Y看做【结果】,把诸事件X1.X2……看做导致这个结果的可能的【原因】,则可以形象的把全概率公式看做成为【由原因推结果】;而贝叶斯公式则恰好相反,其作用于【由结果推原因】:现在有一个【结果】Y已发生,在众多可能的【原因】中,到底是哪一个导致了这个【结果】”
用机器学习视角理解贝叶斯公式
在机器学习的视角下,我们把X理解为“具有某特征”,把Y理解成“类别标签”,则
P ( " 属 于 某 类 " ∣ " 具 有 某 特 征 " ) = P ( " 具 有 某 特 征 " ∣ “ 属 于 某 类 ” ) P ( " 属 于 某 类 " ) P ( " 具 有 某 特 征 " ) P("属于某类"|"具有某特征")=\frac{P("具有某特征"|“属于某类”)P("属于某类")}{P("具有某特征")} P("属于某类"∣"具有某特征")=P("具有某特征")P("具有某特征"∣“属于某类”)P("属于某类")
P(“属于某类”|“具有某特征”)=在已知某样本“具有某特征”的条件下,该样本“属于某类”的概率。所以叫做『后验概率』。
P(“具有某特征”|“属于某类”)=在已知某样本“属于某类”的条件下,该样本“具有某特征”的概率。
P(“属于某类”)=(在未知某样本具有该“具有某特征”的条件下,)该样本“属于某类”的概率。所以叫做『先验概率』。
P(“具有某特征”)=(在未知某样本“属于某类”的条件下,)该样本“具有某特征”的概率。
朴素贝叶斯法的学习与分类
朴素贝叶斯法通过训练集学习联合概率分布
P
(
X
,
Y
)
P(X,Y)
P(X,Y),具体的,学习以下先验概率分布及条件概率分布
先验概率分布
P
(
Y
=
c
k
)
,
k
=
1
,
2
…
K
P(Y=c_k),k=1,2…K
P(Y=ck),k=1,2…K ----------------------(1)
条件概率分布
P
(
X
=
x
∣
Y
=
c
k
)
=
P
(
X
(
1
)
=
x
(
1
)
,
…
…
X
(
n
)
=
x
(
n
)
∣
Y
=
c
k
)
,
k
=
1
,
2
…
K
P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},……X^{(n)}=x^{(n)}|Y=c_k),k=1,2…K
P(X=x∣Y=ck)=P(X(1)=x(1),……X(n)=x(n)∣Y=ck),k=1,2…K------------(2)
由(1)和(2)可得到联合概率分布 P ( X , Y ) P(X,Y) P(X,Y)
朴素贝叶斯法对条件概率分布做了条件独立性的假设,所以得名为朴素
具体的,条件独立性假设是:
P
(
X
=
x
∣
Y
=
c
k
)
=
P
(
X
(
1
)
=
x
(
1
)
,
…
…
X
(
n
)
=
x
(
n
)
∣
Y
=
c
k
)
=
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},……X^{(n)}=x^{(n)}|Y=c_k)=∏_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k)
P(X=x∣Y=ck)=P(X(1)=x(1),……X(n)=x(n)∣Y=ck)=∏j=1nP(X(j)=x(j)∣Y=ck)
条件独立性假设等于是说:用于分类的特征在类确定的条件下,都是条件独立的。
朴素贝叶斯分类时,对给定的输入
x
x
x,通过学习到的模型计算后验概率分布
P
(
Y
=
c
k
∣
X
=
x
)
P(Y=c_k|X=x)
P(Y=ck∣X=x),将后验概率最大的类作为
x
x
x的类输出。
后验概率计算根据贝叶斯定理:
P
(
Y
=
c
k
∣
X
=
x
)
=
P
(
X
=
x
∣
Y
=
c
k
)
P
(
Y
=
c
k
)
∑
k
P
(
X
=
x
∣
Y
=
c
k
)
P
(
Y
=
c
k
)
P(Y=c_k|X=x)=\frac{P(X=x|Y=c_k)P(Y=c_k)}{\displaystyle\sum_kP(X=x|Y=c_k)P(Y=c_k)}
P(Y=ck∣X=x)=k∑P(X=x∣Y=ck)P(Y=ck)P(X=x∣Y=ck)P(Y=ck)(3)
(稍微解释一下,上式的分母其实是运用了全概率公式,求的
P
(
X
=
x
)
P(X=x)
P(X=x))
把 P ( X = x ∣ Y = c k ) = ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) P(X=x|Y=c_k)=∏_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k) P(X=x∣Y=ck)=∏j=1nP(X(j)=x(j)∣Y=ck)带入上面的(3)得:
P
(
Y
=
c
k
∣
X
=
x
)
=
P
(
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
∑
k
P
(
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
P(Y=c_k|X=x)=\frac{P(Y=c_k)∏_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k)}{\displaystyle\sum_kP(Y=c_k)∏_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k)}
P(Y=ck∣X=x)=k∑P(Y=ck)j=1∏nP(X(j)=x(j)∣Y=ck)P(Y=ck)∏j=1nP(X(j)=x(j)∣Y=ck)
这就是朴素贝叶斯分类的基本公式,
于是朴素贝叶斯分类器可以表示成下面的形式:
y
=
f
(
x
)
=
a
r
g
m
a
x
c
k
P
(
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
∑
k
P
(
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
y=f(x)=argmax_{c_k}\frac{P(Y=c_k)∏_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k)}{\displaystyle\sum_kP(Y=c_k)∏_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k)}
y=f(x)=argmaxckk∑P(Y=ck)j=1∏nP(X(j)=x(j)∣Y=ck)P(Y=ck)∏j=1nP(X(j)=x(j)∣Y=ck)(4)
在(4)中分母对于所有的
c
k
c_k
ck都是相同的,所以,
y
=
a
r
g
m
a
x
c
k
P
(
Y
=
c
k
)
∏
j
=
1
n
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
y=argmax_{c_k}P(Y=c_k)∏_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k)
y=argmaxckP(Y=ck)∏j=1nP(X(j)=x(j)∣Y=ck)
后验概率最大化的含义
朴素贝叶斯将实例分到后验概率最大化的类中,这等价于期望风险最小化。
朴素贝叶斯法的参数估计
在朴素贝叶斯法中,学习意味着估计
P
(
Y
=
c
k
)
和
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
P(Y=c_k)和P(X^{(j)}=x^{(j)}|Y=c_k)
P(Y=ck)和P(X(j)=x(j)∣Y=ck)
可以利用极大似然估计法估计相应的概率。
先验概率P(Y=c_k)的极大似然估计是:
P
(
Y
=
c
k
)
=
∑
i
=
1
N
I
(
y
i
=
c
k
)
N
P(Y=c_k)=\frac{\displaystyle\sum_{i=1}^{N}I(y_i=c_k)}{N}
P(Y=ck)=Ni=1∑NI(yi=ck)
设第j个特征可能取值的集合为
a
j
1
,
a
j
2
,
…
…
a
j
S
j
{a_{j1},a_{j2},……a_{jS_j}}
aj1,aj2,……ajSj
则条件概率为:
P
(
X
(
j
)
=
a
j
l
∣
Y
=
c
k
)
=
∑
i
=
1
N
I
(
x
i
(
j
)
=
a
j
l
,
y
i
=
c
k
)
∑
i
=
1
N
I
(
y
i
=
c
k
)
P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\displaystyle\sum_{i=1}^{N}I(x_i^{(j)}=a_{jl,y_i=c_k})}{\displaystyle\sum_{i=1}^{N}I(y_i=c_k)}
P(X(j)=ajl∣Y=ck)=i=1∑NI(yi=ck)i=1∑NI(xi(j)=ajl,yi=ck)
**朴素贝叶斯算法:**对于给定的数据集,
1)计算先验概率及条件概率
P
(
Y
=
c
k
)
=
∑
i
=
1
N
I
(
y
i
=
c
k
)
N
P(Y=c_k)=\frac{\displaystyle\sum_{i=1}^{N}I(y_i=c_k)}{N}
P(Y=ck)=Ni=1∑NI(yi=ck)
P ( X ( j ) = a j l ∣ Y = c k ) = ∑ i = 1 N I ( x i ( j ) = a j l , y i = c k ) ∑ i = 1 N I ( y i = c k ) P(X^{(j)}=a_{jl}|Y=c_k)=\frac{\displaystyle\sum_{i=1}^{N}I(x_i^{(j)}=a_{jl,y_i=c_k})}{\displaystyle\sum_{i=1}^{N}I(y_i=c_k)} P(X(j)=ajl∣Y=ck)=i=1∑NI(yi=ck)i=1∑NI(xi(j)=ajl,yi=ck)
2)对于给定的实例 x = ( x ( 1 ) , x ( 2 ) … … x ( n ) ) T x=(x^{(1)},x^{(2)}……x^{(n)})^T x=(x(1),x(2)……x(n))T,计算
P ( Y = c k ) ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) P(Y=c_k)∏_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k) P(Y=ck)∏j=1nP(X(j)=x(j)∣Y=ck)
3)确定实例x的类
y = a r g m a x c k P ( Y = c k ) ∏ j = 1 n P ( X ( j ) = x ( j ) ∣ Y = c k ) y=argmax_{c_k}P(Y=c_k)∏_{j=1}^{n}P(X^{(j)}=x^{(j)}|Y=c_k) y=argmaxckP(Y=ck)∏j=1nP(X(j)=x(j)∣Y=ck)
贝叶斯估计
用极大似然估计可能会出现所有估计的概率值为0的情况,(如果对于一个新的输入实例,有一个特征值在训练样本中没有出现,则该特征值对一个条件概率就为0)这时会影响到后验概率的计算,是分类产生偏差。
解决这一问题的方法是采用贝叶斯估计。具体的,条件概率的贝叶斯估计是
P
λ
(
X
(
j
)
=
a
j
l
∣
Y
=
c
k
)
=
∑
i
=
1
N
I
(
x
i
(
j
)
=
a
j
l
,
y
i
=
c
k
)
+
λ
∑
i
=
1
N
I
(
y
i
=
c
k
)
+
S
j
λ
P_λ(X^{(j)}=a_{jl}|Y=c_k)=\frac{\displaystyle\sum_{i=1}^{N}I(x_i^{(j)}=a_{jl,y_i=c_k})+λ}{\displaystyle\sum_{i=1}^{N}I(y_i=c_k)+S_jλ}
Pλ(X(j)=ajl∣Y=ck)=i=1∑NI(yi=ck)+Sjλi=1∑NI(xi(j)=ajl,yi=ck)+λ
其中
S
j
S_j
Sj是该维特征对应的特征值的个数。
λ
≥
0
λ≥0
λ≥0,当
λ
=
0
λ=0
λ=0时就是极大似然估计,当
λ
=
1
λ=1
λ=1时,称为拉普拉斯平滑。
此时对应的,先验概率的贝叶斯估计是:
P λ ( Y = c k ) = ∑ i = 1 N I ( y i = c k ) + λ N + K λ P_λ(Y=c_k)=\frac{\displaystyle\sum_{i=1}^{N}I(y_i=c_k)+λ}{N+Kλ} Pλ(Y=ck)=N+Kλi=1∑NI(yi=ck)+λ
连续性变量贝叶斯如何处理?
1)对于连续性变量,不能采用离散变量的方法计算概率。
2)如果样本又太少,那么就不能分成区间计算、
3)对于这种情况,可以假设这些变量都是正态分布,通过样本计算出均值和方差**,也就得到了正态分布的密度函数,有了密度函数,就可以把值带入,算出某一点的密度函数的值。**