NaiveBayes-参数求解

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 n维向量的集合,输出空间为类标记集合 Y={c1,c2,...,ck} Y = { c 1 , c 2 , . . . , c k }
输入特征: xX x ∈ X
输出: yY y ∈ Y , y y 取值为c1,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)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
  上节的想法是后验概率最大化,那么从损失函数怎么理解呢?
假设朴素贝叶斯的损失函数是 01 0 − 1 损失函数:

L(Y,f(X))={1,Yf(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 )

那么损失函数最小化即:
argminckk=1KL(Y,f(X))P(Y=ck|X=x)P(X=x)=argminckk=1KL(Y,f(X))P(Y=ck|X=x)=argminckk=1KP(Yck|X=x)=argminck(1P(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 的特征,其取值为ajl,其中 j=1,2,...J j = 1 , 2 , . . . J ,即特征共 m m 维,l=1,2,...,L即第 j j 维的特征共L个取值
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 类中第j个特征取值为 ajl a j l 的频数
1、似然函数

L=i=1nP(xi,yi)=i=1nP(yi)P(xi|yi)=k=1K(θk)nki=1nj=1Jl=1LP(xji=ajl|yi)njlk=k=1K(θk)nki=1nj=1Jl=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=1nj=1Jl=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=1nj=1Jl=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θk1)L1θk=nkθkλ=0L2λ=k=1Kθk1=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=1nj=1Jl=1Lnjlklogθajlck+λ(k=1Kθk1)L1θajlck=njlkθajlckλ=0L2λ=k=1Kθk1=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 与杭州

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值