knitr::opts_chunk$set(echo = TRUE)
朴素贝叶斯直观上倒是很容易理解,无非就是求后验概率最大化,但是损失函数、参数求解都是一知半解。本文以离散型朴素贝叶斯为例,做一些简单的探讨。
前置知识
主要是概率论的一些知识:
条件概率
P(A|B)=P(AB)P(B) P ( A | B ) = P ( A B ) P ( B )
全概率公式
P(B)=∑i=1nP(AiB)=∑i=1nP(Ai)P(B|Ai) P ( B ) = ∑ i = 1 n P ( A i B ) = ∑ i = 1 n P ( A i ) P ( B | A i )
贝叶斯公式
P(Ai|B)=P(AiB)P(B)=P(Ai)P(B|Ai)∑j=1nP(Aj)P(B|Ai) P ( A i | B ) = P ( A i B ) P ( B ) = P ( A i ) P ( B | A i ) ∑ j = 1 n P ( A j ) P ( B | A i )
基本方法
符号标记
X
X
是nn维向量的集合,输出空间为类标记集合Y={c1,c2,...,ck}
Y
=
{
c
1
,
c
2
,
.
.
.
,
c
k
}
。
输入特征:x∈X
x
∈
X
输出:y∈Y
y
∈
Y
,y
y
取值为c1,c2,...,cKc1,c2,...,cK
联合分布:P(X,Y)
P
(
X
,
Y
)
训练集:T={(x1,y1),...,(xN,yN)}
T
=
{
(
x
1
,
y
1
)
,
.
.
.
,
(
x
N
,
y
N
)
}
,样本独立同分布
先验分布:P(Y=ck)=θk
P
(
Y
=
c
k
)
=
θ
k
条件独立性假设
Naive Bayes中有一个很强且不太符合直觉的假设,类内独立性或者说条件独立性。具体如下:
P(X=x|Y=ck)=P(X(1)=x(1),X(2)=x(2),...,X(n)=x(n)|Y=ck)=P(X(1)=x(1)|Y=ck)∗P(X(2)=x(2)|Y=ck)∗...∗P(X(n)=x(n)|Y=ck)=∏j=1nP(X(j)=x(j)|Y=ck) P ( X = x | Y = c k ) = P ( X ( 1 ) = x ( 1 ) , X ( 2 ) = x ( 2 ) , . . . , X ( n ) = x ( n ) | Y = c k ) = P ( X ( 1 ) = x ( 1 ) | Y = c k ) ∗ P ( X ( 2 ) = x ( 2 ) | Y = c k ) ∗ . . . ∗ P ( X ( n ) = x ( n ) | Y = c k ) = ∏ j = 1 n P ( X ( j ) = x ( j ) | Y = c k )
目标函数
P(Y=ck|X=x) P ( Y = c k | X = x ) 最大的类ck c k ,作为X X 的类标记,则:
P(Y=ck|X=x)=P(Y=ck,X=x)P(X=x)=P(Y=ck,X=x)∑k=1KP(Y=ck,X=x)=P(X=x|Y=ck)P(Y=ck)∑k=1KP(X=x|Y=ck)P(Y=ck)P(Y=ck|X=x)=P(Y=ck,X=x)P(X=x)=P(Y=ck,X=x)∑k=1KP(Y=ck,X=x)=P(X=x|Y=ck)P(Y=ck)∑k=1KP(X=x|Y=ck)P(Y=ck)
根据类内独立性:
P(Y=ck|X=x)=P(Y=ck)∏j=1nP(X(j)=x(j)|Y=ck)∑k=1KP(Y=ck)∏j=1nP(X(j)=x(j)|Y=ck) P ( Y = c k | X = x ) = P ( Y = c k ) ∏ j = 1 n P ( X ( j ) = x ( j ) | Y = c k ) ∑ k = 1 K P ( Y = c k ) ∏ j = 1 n P ( X ( j ) = x ( j ) | Y = c k )
因为分母对于所有的ck c k 都是相同的,所以有目标函数:
argmaxckP(Y=ck)∏j=1nP(X(j)=x(j)|Y=ck) arg max c k P ( Y = c k ) ∏ j = 1 n P ( X ( j ) = x ( j ) | Y = c k )
损失函数
此处大谬,周末过来改一下~2018-04-12
上节的想法是后验概率最大化,那么从损失函数怎么理解呢?
假设朴素贝叶斯的损失函数是0−1
0
−
1
损失函数:
L(Y,f(X))={1,Y≠f(x)0,Y=f(x) L ( Y , f ( X ) ) = { 1 , Y ≠ f ( x ) 0 , Y = f ( x )
其中
f(X)
f
(
X
)
是分类决策函数,此时期望风险函数为:
Rexp(f)=E[L(Y,f(X))]=∑k=1KL(Y,f(X))P(Y=ck,X=x)=∑k=1KL(Y,f(X))P(X=x|Y=ck)P(Y=ck) R exp ( f ) = E [ L ( Y , f ( X ) ) ] = ∑ k = 1 K L ( Y , f ( X ) ) P ( Y = c k , X = x ) = ∑ k = 1 K L ( Y , f ( X ) ) P ( X = x | Y = c k ) P ( Y = c k )
那么损失函数最小化即:
argminck∑k=1KL(Y,f(X))P(Y=ck|X=x)P(X=x)=argminck∑k=1KL(Y,f(X))P(Y=ck|X=x)=argminck∑k=1KP(Y≠ck|X=x)=argminck(1−P(Y=ck|X=x))=argmaxckP(Y=ck|X=x) arg m i n c k ∑ k = 1 K L ( Y , f ( X ) ) P ( Y = c k | X = x ) P ( X = x ) = arg m i n c k ∑ k = 1 K L ( Y , f ( X ) ) P ( Y = c k | X = x ) = arg m i n c k ∑ k = 1 K P ( Y ≠ c k | X = x ) = arg m i n c k ( 1 − P ( Y = c k | X = x ) ) = arg m a x c k P ( Y = c k | X = x )
参数求解
P(X=x|Y=ck)
P
(
X
=
x
|
Y
=
c
k
)
和P(Y=ck)
P
(
Y
=
c
k
)
,参数求解利用极大似然估计,新增一下若干符号标记:
nk
n
k
是类ck
c
k
出现的次数
P(Y=ck)=θk
P
(
Y
=
c
k
)
=
θ
k
为先验分布
xj
x
j
为第j
j
的特征,其取值为ajlajl,其中j=1,2,...J
j
=
1
,
2
,
.
.
.
J
,即特征共m
m
维,l=1,2,...,Ll=1,2,...,L即第j
j
维的特征共LL个取值
P(xj=ajl|y=ck)
P
(
x
j
=
a
j
l
|
y
=
c
k
)
用θajlck
θ
c
k
a
j
l
表示
nj,l,k
n
j
,
l
,
k
指第k
k
类中第jj个特征取值为ajl
a
j
l
的频数
1、似然函数
L=∏i=1nP(xi,yi)=∏i=1nP(yi)P(xi|yi)=∏k=1K(θk)nk∏i=1n∏j=1J∏l=1LP(xji=ajl|yi)njlk=∏k=1K(θk)nk∏i=1n∏j=1J∏l=1L(θajlck)njlk L = ∏ i = 1 n P ( x i , y i ) = ∏ i = 1 n P ( y i ) P ( x i | y i ) = ∏ k = 1 K ( θ k ) n k ∏ i = 1 n ∏ j = 1 J ∏ l = 1 L P ( x i j = a j l | y i ) n j l k = ∏ k = 1 K ( θ k ) n k ∏ i = 1 n ∏ j = 1 J ∏ l = 1 L ( θ c k a j l ) n j l k
取对数:
log(L)=∑k=1Knklogθk+∑i=1n∑j=1J∑l=1Lnjlklogθajlck log ( L ) = ∑ k = 1 K n k log θ k + ∑ i = 1 n ∑ j = 1 J ∑ l = 1 L n j l k log θ c k a j l
分别记:
f1=∑k=1Knklogθkf2=∑i=1n∑j=1J∑l=1Lnjlklogθajlck f 1 = ∑ k = 1 K n k log θ k f 2 = ∑ i = 1 n ∑ j = 1 J ∑ l = 1 L n j l k log θ c k a j l
分别求
f1,f2
f
1
,
f
2
的极值即可,对于
f1
f
1
,使用拉格朗日乘子法求解:
L1=∑k=1Knklogθk+λ(∑k=1Kθk−1)⎧⎩⎨⎪⎪⎪⎪∂L1∂θk=nkθk−λ=0∂L2∂λ=∑k=1Kθk−1=0so:n1θ1=n2θ2=⋯=nKθK=λand:∑k=1Knk=N;∑k=1Kθk=1∴θk=nkN L 1 = ∑ k = 1 K n k log θ k + λ ( ∑ k = 1 K θ k − 1 ) { ∂ L 1 ∂ θ k = n k θ k − λ = 0 ∂ L 2 ∂ λ = ∑ k = 1 K θ k − 1 = 0 s o : n 1 θ 1 = n 2 θ 2 = ⋯ = n K θ K = λ a n d : ∑ k = 1 K n k = N ; ∑ k = 1 K θ k = 1 ∴ θ k = n k N
对于
f2
f
2
同样使用拉格朗日乘子法:
L2=∑i=1n∑j=1J∑l=1Lnjlklogθajlck+λ(∑k=1Kθk−1)⎧⎩⎨⎪⎪⎪⎪⎪⎪∂L1∂θajlck=njlkθajlck−λ=0∂L2∂λ=∑k=1Kθk−1=0so:P(xj=ajl|y=ck)=θajlck=njlknk=∑ni=1I(xji=ajl,yi=ck)∑ni=1I(yi=ck) L 2 = ∑ i = 1 n ∑ j = 1 J ∑ l = 1 L n j l k log θ c k a j l + λ ( ∑ k = 1 K θ k − 1 ) { ∂ L 1 ∂ θ c k a j l = n j l k θ c k a j l − λ = 0 ∂ L 2 ∂ λ = ∑ k = 1 K θ k − 1 = 0 s o : P ( x j = a j l | y = c k ) = θ c k a j l = n j l k n k = ∑ i = 1 n I ( x i j = a j l , y i = c k ) ∑ i = 1 n I ( y i = c k )
优缺点
1、优点
模型容易构造,参数估计无需任何迭代框架,适用于大数据集
容易解释
分类效果往往很好,非常稳健
2、缺点
条件独立性的假设太强
对输入数据的表达形式很敏感
Summary
引入的拉普拉斯平滑等内容暂且不提,相关内容见李航的《统计学习方法》。
Ref
[1] 李航《统计学习方法》
[2] https://zhuanlan.zhihu.com/p/25006836?refer=carefree0910-pyml
2018-03-15 与杭州