解决的问题:
已经一个训练集 { ( x 1 , y 1 ) . . . ( x N , y N ) } \{(x_1,y_1)...(x_N,y_N)\} {(x1,y1)...(xN,yN)},给定数据x,求y
含义:
朴素贝叶斯是基于贝叶斯定理与特征条件独立假设的分类方法。
- 为什么是基于贝叶斯定理:由训练数据求后验概率需要用到。
- 为什么需要特征条件独立假设:减少联合分布的参数数量。从 K ∏ S j K\prod S_j K∏Sj减少到 K ∑ S j K\sum S_j K∑Sj。这一点比较重要,后面在数学论证的时候会进行说明。
数学推理
定义:
已知训练数据集
T
=
{
(
x
1
,
y
1
)
.
.
.
(
x
N
,
y
N
)
}
T=\{(x_1,y_1)...(x_N,y_N)\}
T={(x1,y1)...(xN,yN)},N为训练数据的个数
输出空间
Y
=
{
c
1
,
c
2
,
.
.
.
c
K
}
Y=\{c_1,c_2,...c_K\}
Y={c1,c2,...cK},Y有K种取值
输入空间
X
=
{
x
1
,
.
.
x
j
,
.
.
x
n
}
X=\{x_1,..x_j,..x_n\}
X={x1,..xj,..xn},X是n维向量,其中
x
j
=
{
x
j
1
,
x
j
2
,
.
.
.
x
j
s
j
}
x_j=\{x_{j1},x_{j2},...x_{js_j}\}
xj={xj1,xj2,...xjsj},
x
j
x_j
xj有
s
j
s_j
sj种取值
推导:
- 计算先验概率分布 P ( Y = c k ) P(Y=c_k) P(Y=ck),这个通过训练数据可以得出,通过统计(第k个标签出来的次数)/(总数据量)
- 计算条件概率分布
P
(
X
=
x
∣
Y
=
c
k
)
P(X=x|Y=c_k)
P(X=x∣Y=ck),因为X是n维的向量,所以这个分布是需要对每一维数据进行考虑的。在Y已经确定的情况下,一共有
S
1
×
S
2
×
.
.
.
×
S
n
S_1\times S_2\times...\times S_n
S1×S2×...×Sn这么多种取值,再加上Y为K种取值,整个条件分布就会有
K
∏
S
j
K\prod S_j
K∏Sj种可能,你需要这么多个参数去描述这个分布,很显然不现实。
这个时候就需要特征条件独立的假设。
现在假设输入空间X的每一维是相互独立的,前面的条件概率分布可以重写。
P ( X 1 = x 1 . . . X n = x n ∣ Y = c k ) = P ( X 1 = x 1 ∣ Y = c k ) . . . P ( X n = x n ∣ Y = c k ) P(X^1=x^1...X^n=x^n|Y=c_k)=P(X^1=x^1|Y=c_k)...P(X^n=x^n|Y=c_k) P(X1=x1...Xn=xn∣Y=ck)=P(X1=x1∣Y=ck)...P(Xn=xn∣Y=ck)
从上式中可以看出,本来的n维向量的联合分布被简化成多个条件分布的乘积,可 P ( X n = x n ∣ Y = c k ) P(X^n=x^n|Y=c_k) P(Xn=xn∣Y=ck)这个条件分布是可以通过训练计算得到的。 - 计算后验分布
P
(
Y
∣
X
)
P(Y|X)
P(Y∣X)
这个时候就需要用到贝叶斯定理了。 P ( Y ∣ X ) P ( X ) = P ( X ∣ Y ) P ( X ) P(Y|X)P(X)=P(X|Y)P(X) P(Y∣X)P(X)=P(X∣Y)P(X),最后可以得到
P ( Y = c k ∣ X = x ) = a r g m a x c k P ( X = x ∣ Y = c k ) P ( Y = c k ) = a r g m a x c k P ( Y = c k ) ∏ P ( X j = x j ) P(Y=c_k|X=x)=\underset{c_k}{argmax}P(X=x|Y=c_k)P(Y=c_k)=\underset{c_k}{argmax}P(Y=c_k)\prod{P(X^j=x^j)} P(Y=ck∣X=x)=ckargmaxP(X=x∣Y=ck)P(Y=ck)=ckargmaxP(Y=ck)∏P(Xj=xj)
P ( Y = c k ) P(Y=c_k) P(Y=ck)跟 P ( X j = x j ) P(X^j=x^j) P(Xj=xj)在前面都统计出来了,需要做的就是遍历一个c_k,求出每一种情况的概率,找到最大值即可。