一、基本概念和思想
朴素贝叶斯(naive Bayes)法是 基于贝叶斯定理与 特征条件独立假设的生成模型分类方法。
建立模型:对于训练数据集,首先基于特征条件独立假设学习输入输出的联合概率分布P(X,Y),联合概率可以转换为先验概率乘条件概率,利用训练数据集学习P(X|Y)和P(Y)的 极大似然估计,因为P(X|Y)的学习参数随特征取值的个数和特征的个数呈指数增长,实际应用时参数值往往大于训练样本数,也就是说,一些样本取值在训练中并没有出现导致估计概率为0,而“未被观测到”和“出现概率为0”往往是不同到概念,所以条件独立假设可使得学习参数降为线性增长,可学习到一个分类模型。
预测分类:然后基于此模型,对给定的输入x,利用贝叶斯定理求出 后验概率最大P(Y|X)的输出y,这等价0-1损失函数时期望风险最小化。
二、原理与方法
训练数据集为
T
=
{
(
x
1
,
y
2
)
,
(
x
2
,
y
2
)
,
.
.
.
(
x
n
,
y
n
)
}
T=\{(x_1,y_2),(x_2,y_2),...(x_n,y_n)\}
T={(x1,y2),(x2,y2),...(xn,yn)}
朴素贝叶斯通过训练数据集学习联合概率分布
P
(
X
,
Y
)
P(X,Y)
P(X,Y)。
根据概率论乘法公式: P ( X , Y ) = P ( Y ) P ( X ∣ Y ) P(X,Y)=P(Y)P(X|Y) P(X,Y)=P(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
根据大数定理:当数据充足时,直接使用频率可以估计为概率,所以我们认为数据充足的时候先验概率是可以计算的。
条件概率分布:
P
(
X
=
x
∣
Y
=
c
k
)
=
P
(
X
(
1
)
=
x
(
1
)
,
.
.
.
X
(
n
)
=
x
(
n
)
∣
Y
=
c
k
)
,
k
=
1
,
1...
K
P(X=x|Y=c_k)=P(X^{(1)}=x^{(1)},...X^{(n)}=x^{(n)}|Y=c_k),k=1,1...K
P(X=x∣Y=ck)=P(X(1)=x(1),...X(n)=x(n)∣Y=ck),k=1,1...K
注:上标数字代表一个样本中的第n个属性或者特征。
但是条件概率分布
P
(
X
=
x
∣
Y
=
c
k
)
P(X=x|Y=c_k)
P(X=x∣Y=ck)有指数级数量的参数,其估计实际是不可行的。事实上,假设
x
(
j
)
x^{(j)}
x(j)可取值有
S
j
S_j
Sj个,j=1,2,…n,Y可取值有K个,那么参数个数为
K
∏
j
=
1
n
S
j
K\prod_{j=1}^nS_j
K∏j=1nSj,在实际应用中,这个值远远大于训练样本数,也就是说,有些取值在训练集中都没有出现,如果用频率来估计概率显然不可行,“未被观测到”和“出现概率为零”是不同的概念。
朴素贝叶斯对条件概率分布作了条件独立性的假设,这是一个较强的假设,朴素贝叶斯也由此得名。该假设是:
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)=\prod_{j=1}^nP(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)
通过这个假设参数降为
K
∑
j
=
1
n
S
j
K\sum_{j=1}^nS_j
K∑j=1nSj
举例说明: 假如有属性一的取值为0,1,属性二的取值为A,B,C,标签Y 的取值只有一种,如果我们不使用条件独立性假设,那么待求的参数有P(0,A),P(0,B),P(0,C),P(1,A),P(1,B),P(1,C)6个,而使用条件独立性假设只有P(0),P(1),P(A),P(B),P(C )5个,当属性的取值更多时,属性更多时,这个差距会更大。
很明显朴素贝叶斯先对联合概率建模,再求得后验概率最大,是一种典型的生成式模型
后验概率根据贝叶斯定理进行:
P
(
Y
=
c
k
∣
X
=
c
k
)
=
P
(
X
=
x
∣
Y
=
c
k
)
P
(
Y
=
c
k
)
∑
1
k
P
(
X
=
x
∣
Y
=
c
k
)
P
(
Y
=
c
k
)
P(Y=c_k|X=c_k)=\frac{P(X=x|Y=c_k)P(Y=c_k)}{\sum_1^kP(X=x|Y=c_k)P(Y=c_k)}
P(Y=ck∣X=ck)=∑1kP(X=x∣Y=ck)P(Y=ck)P(X=x∣Y=ck)P(Y=ck)
将条件独立假设引入:
P
(
Y
=
c
k
∣
X
=
c
k
)
=
P
(
Y
=
c
k
)
∏
1
j
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
∑
1
k
P
(
Y
=
c
k
)
∏
1
j
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
P(Y=c_k|X=c_k)=\frac{P(Y=c_k)\prod_1^jP(X^{(j)}=x^{(j)}|Y=c_k)}{\sum_1^kP(Y=c_k)\prod_1^jP(X^{(j)}=x^{(j)}|Y=c_k)}
P(Y=ck∣X=ck)=∑1kP(Y=ck)∏1jP(X(j)=x(j)∣Y=ck)P(Y=ck)∏1jP(X(j)=x(j)∣Y=ck)
朴素贝叶斯分类器可表示为:
y
=
f
(
x
)
=
a
r
g
m
a
x
P
(
Y
=
c
k
)
∏
1
j
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
∑
1
k
P
(
Y
=
c
k
)
∏
1
j
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
y=f(x)=arg max\frac{P(Y=c_k)\prod_1^jP(X^{(j)}=x^{(j)}|Y=c_k)}{\sum_1^kP(Y=c_k)\prod_1^jP(X^{(j)}=x^{(j)}|Y=c_k)}
y=f(x)=argmax∑1kP(Y=ck)∏1jP(X(j)=x(j)∣Y=ck)P(Y=ck)∏1jP(X(j)=x(j)∣Y=ck)
对于分母来说所有
c
k
c_k
ck都是相同的,而我们只关心大小关系而不关心具体的取值,所以可省略分母写为:
y
=
f
(
x
)
=
a
r
g
m
a
x
P
(
Y
=
c
k
)
∏
1
j
P
(
X
(
j
)
=
x
(
j
)
∣
Y
=
c
k
)
y=f(x)=arg maxP(Y=c_k)\prod_1^jP(X^{(j)}=x^{(j)}|Y=c_k)
y=f(x)=argmaxP(Y=ck)∏1jP(X(j)=x(j)∣Y=ck)
三、后验概率最大含义
待更新
四、算法步骤
待更新
五、朴素贝叶斯的扩展和改进
贝叶斯估计:用极大似然估计可能会出现所要估计到概率值为0到情况。这时会影响到后验概率到计算结果,使分类产生偏差,而贝叶斯估计值随机变量各个取值到频数上赋予一个正数,这称为拉普拉斯平滑。
半朴素贝叶斯:人们尝试对属性条件独立假设进行一定程度到放松,由此产生了一类称为“半朴素贝叶斯分类器”,适当考虑一部分属性间到相互依赖信息,从而既不需完全联合概率计算,又不至于彻底忽略了比较强到属性依赖关系。
贝叶斯网:借助有向无环图刻画属性之间到依赖关系,并利用条件概率表来描述属性到联合概率分布
朴素贝叶斯经常能取得好性能原因解释:
(1)对分类任务来说,只需各类别的条件概率排序正确,无需精确概率值即可导致正确分类结果
(2)若属性间依赖对所有类别影响相同,或依赖关系到影响能互相抵消,则属性条件独立性假设在降低计算开销时不会对性能产生负面影响。