机器学习理论——朴素贝叶斯

大部分分类算法都是判别方法,即直接学习出特征输出Y和特征X之间的关系,要么是决策函数 Y = f ( x ) Y=f(x) Y=f(x),要么是条件概率分布 P ( Y ∣ X ) = P ( Y , X ) / P ( X ) P(Y|X)=P(Y,X)/P(X) P(YX)=P(Y,X)/P(X);而朴素贝叶斯算法是生成方法,即直接找出特征输出Y和特征X之间的联合概率分布 P ( Y , X ) P(Y,X) P(Y,X),然后用 P ( Y ∣ X ) = P ( Y , X ) / P ( X ) P(Y|X)=P(Y,X)/P(X) P(YX)=P(Y,X)/P(X)得出。

(1)朴素贝叶斯算法的统计学知识

朴素贝叶斯的思想:先验概率+数据统计分布=后验概率;但先验概率往往是大胆假设的。尽管如此,朴素贝叶斯理论在文本分类、垃圾邮件分类也有很大的应用。

  1. 条件独立公式 P ( X , Y ) = P ( X ) P ( Y ) P(X,Y)=P(X)P(Y) P(X,Y)=P(X)P(Y)
  2. 条件概率公式 P ( Y ∣ X ) = P ( X , Y ) / P ( Y ) P(Y|X)=P(X,Y)/P(Y) P(YX)=P(X,Y)/P(Y)
  3. 全概率公式 P ( X ) = ∑ i = 1 K P ( X , Y = Y k ) = ∑ i = 1 K P ( X ∣ Y = Y k ) P ( Y k ) P(X)=\displaystyle\sum_{i=1}^{K}P(X,Y=Y_k)=\displaystyle\sum_{i=1}^{K}P(X|Y=Y_k)P(Y_k) P(X)=i=1KP(X,Y=Yk)=i=1KP(XY=Yk)P(Yk),其中 ∑ i = 1 K P ( Y k ) = 1 \displaystyle\sum_{i=1}^{K}P(Y_k)=1 i=1KP(Yk)=1
  4. 朴素贝叶斯公式 P ( Y k ∣ X ) = P ( Y k , X ) P ( X ) = P ( X ∣ Y k ) P ( Y k ) ∑ i = 1 K P ( X ∣ Y = Y k ) P ( Y k ) P(Y_k|X)=\frac{P(Y_k,X)}{P(X)}=\frac{P(X|Y_k)P(Y_k)}{\displaystyle\sum_{i=1}^{K}P(X|Y=Y_k)P(Y_k)} P(YkX)=P(X)P(Yk,X)=i=1KP(XY=Yk)P(Yk)P(XYk)P(Yk)

(2)朴素贝叶斯算法模型

算法输入:m个样本,每个样本有n个特征,结果为 y m y_m ym。即 ( x 1 ( 1 ) , x 2 ( 1 ) , . . . , x n ( 2 ) , y 1 ) , ( x 1 ( 2 ) , x 2 ( 2 ) , . . . , x n ( 2 ) , y 2 ) . . . . . . ( x 1 ( m ) , x 2 ( m ) , . . . , x n ( m ) , y m ) (x^{(1)}_1,x^{(1)}_2,...,x^{(2)}_n,y_1),(x^{(2)}_1,x^{(2)}_2,...,x^{(2)}_n,y_2)......(x^{(m)}_1,x^{(m)}_2,...,x^{(m)}_n,y_m) (x1(1),x2(1),...,xn(2),y1),(x1(2),x2(2),...,xn(2),y2)......(x1(m),x2(m),...,xn(m),ym)。特征输出是K个类别,定义为 C 1 , C 2 , . . . , C k C_1,C_2,...,C_k C1,C2,...,Ck
算法输出:测试集 X ( t e s t ) X^{(test)} X(test)的分类
算法模型:

  1. 通过训练集知, 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 2 = x 2 , . . . X n = x n ∣ Y = C k ) P(X=x|Y=C_k)=P(X_1=x_1,X_2=x_2,...X_n=x_n|Y=C_k) P(X=xY=Ck)=P(X1=x1,X2=x2,...Xn=xnY=Ck)
  2. 利用(1)中公式, P ( X , Y = C k ) = P ( Y = C k ) P ( X = x ∣ Y = C k ) = P ( Y = C k ) P ( X 1 = x 1 , X 2 = x 2 , . . . X n = x n ∣ Y = C k ) P(X,Y=C_k)=P(Y=C_k)P(X=x|Y=C_k)=P(Y=C_k)P(X_1=x_1,X_2=x_2,...X_n=x_n|Y=C_k) P(X,Y=Ck)=P(Y=Ck)P(X=xY=Ck)=P(Y=Ck)P(X1=x1,X2=x2,...Xn=xnY=Ck),其中 P ( Y = C k ) 为 类 别 C k 在 样 本 集 中 出 现 的 频 率 P(Y=C_k)为类别C_k在样本集中出现的频率 P(Y=Ck)Ck
  3. 这里大胆假设 x x x n n n个特征是相互独立的(如果已经能判断出 x x x n n n个特征是不独立的就不要用该算法),此时 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 ) 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) P(X1=x1,X2=x2,...Xn=xnY=Ck)=P(X1=x1Y=Ck)P(X2=x2Y=Ck)...P(Xn=xnY=Ck)。其实在数据量大的情况下, x x x的特征之间必定会有一定的弱关联性,这里其实是牺牲了一部分模型的准确性,简化了模型条件计算的分布难度。
  4. 对于预测集中的新样本 ( x 1 ( t e s t ) , x 2 ( t e s t ) , . . . , x n ( t e s t ) ) (x^{(test)}_1,x^{(test)}_2,...,x^{(test)}_n) (x1(test),x2(test),...,xn(test)),只用计算所有k个类别的条件概率 P ( Y = C k ∣ X = X ( t e s t ) ) P(Y=C_k|X=X^{(test)}) P(Y=CkX=X(test)),然后找出最大的条件概率对应的类别即可

(3)朴素贝叶斯算法的推断过程

  1. 预测类别 C r e s u l t C_{result} Cresult P ( Y = C k ∣ X = X ( t e s t ) ) P(Y=C_k|X=X^{(test)}) P(Y=CkX=X(test))最大化的类别,即 C r e s u l t = a r g m a x ⏟ C k P ( Y = C k ∣ X = X ( t e s t ) ) = a r g m a x ⏟ C k P ( X = X ( t e s t ) ∣ Y = C k ) P ( Y = C k ) / P ( X = X ( t e s t ) ) C_{result}=\underbrace{argmax}_{C_k}P(Y=C_k|X=X^{(test)})=\underbrace{argmax}_{C_k}P(X=X^{(test)}|Y=C_k)P(Y=C_k)/P(X=X^{(test)}) Cresult=Ck argmaxP(Y=CkX=X(test))=Ck argmaxP(X=X(test)Y=Ck)P(Y=Ck)/P(X=X(test))
  2. 对于所有类别来说,上式的分母都是一样的,所以可以简化为 C r e s u l t = a r g m a x ⏟ C k P ( X = X ( t e s t ) ∣ Y = C k ) P ( Y = C k ) C_{result}=\underbrace{argmax}_{C_k}P(X=X^{(test)}|Y=C_k)P(Y=C_k) Cresult=Ck argmaxP(X=X(test)Y=Ck)P(Y=Ck)
  3. 再利用朴素贝叶斯的独立性假设, C r e s u l t = a r g m a x ⏟ C k P ( Y = C k ) ∏ j = 1 k P ( X j = X j ( t e s t ) ∣ Y = C k ) C_{result}=\underbrace{argmax}_{C_k}P(Y=C_k)\displaystyle\prod_{j=1}^{k}P(X_j=X^{(test)}_j|Y=C_k) Cresult=Ck argmaxP(Y=Ck)j=1kP(Xj=Xj(test)Y=Ck)

(4)朴素贝叶斯算法的参数估计

P ( Y = C k ) P(Y=C_k) P(Y=Ck)为样本 C k C_k Ck出现的频率
对于 P ( X j = X j ( t e s t ) ∣ Y = C k ) P(X_j=X^{(test)}_j|Y=C_k) P(Xj=Xj(test)Y=Ck),其中 j = 1 , 2 , . . . , k j=1,2,...,k j=1,2,...,k,要针对 X j X_j Xj的分布情况进行讨论:

  1. X j X_j Xj为离散值时,通常假设 X j X_j Xj满足多项式分布,这样 P ( X j = X j ( t e s t ) ∣ Y = C k ) P(X_j=X^{(test)}_j|Y=C_k) P(Xj=Xj(test)Y=Ck)为样本类别 C k C_k Ck中,特征 X j ( t e s t ) X_j^{(test)} Xj(test)出现的频率,
    P ( X j = X j ( t e s t ) ∣ Y = C k ) = m k j t e s t m k P(X_j=X^{(test)}_j|Y=C_k)=\frac{m^{test}_{kj}}{m_k} P(Xj=Xj(test)Y=Ck)=mkmkjtest,其中 m k m_k mk是样本类别 C k C_k Ck的总特征计数, m k j m_{kj} mkj是样本类别 C k C_k Ck中,第j维特征 X j ( t e s t ) X_j^{(test)} Xj(test)出现的计数。
    有一些类别的样本可能没有出现,此时 P ( X j = X j ( t e s t ) ∣ Y = C k ) P(X_j=X^{(test)}_j|Y=C_k) P(Xj=Xj(test)Y=Ck)为0,这会影响后验概率估计,因此引入拉普拉斯平滑,
    P ( X j = X j ( t e s t ) ∣ Y = C k ) = m k j t e s t + λ m k + λ O j P(X_j=X^{(test)}_j|Y=C_k)=\frac{m^{test}_{kj}+λ}{m_k+λO_j} P(Xj=Xj(test)Y=Ck)=mk+λOjmkjtest+λ,其中λ为超参数,通常取1; O j O_j Oj为第j个特征的取值个数
  2. X j X_j Xj为非常稀疏的离散值时,通常假设 X j X_j Xj满足伯努利分布,即特征 X j X_j Xj出现记为1,不出现记为0。即只要 X j X_j Xj出现即可,不关注 X j X_j Xj的次数。
    数学公式表达为:
    P ( X j = X j ( t e s t ) ∣ Y = C k ) = P ( X j = 1 ∣ Y = C k ) X j ( t e s t ) + ( 1 − P ( X j = 1 ∣ Y = C k ) ) ( 1 − X j ( t e s t ) ) P(X_j=X^{(test)}_j|Y=C_k)=P(X_j=1|Y=C_k)X^{(test)}_j+(1−P(X_j=1|Y=C_k))(1−X^{(test)}_j) P(Xj=Xj(test)Y=Ck)=P(Xj=1Y=Ck)Xj(test)+(1P(Xj=1Y=Ck))(1Xj(test)),其中 X j ( t e s t ) X^{(test)}_j Xj(test)取值为0和1。
  3. X j X_j Xj为连续值时,通常假设 X j X_j Xj满足正态分布,即在样本类别 C k C_k Ck中, X j X_j Xj的取值满足正态分布。
    数学表达式为:
    P ( X j = X j ( t e s t ) ∣ Y = C k ) = 1 2 π σ k 2 exp ⁡ ( − ( X j ( t e s t ) − μ k ) 2 2 σ k 2 ) P(X_j=X^{(test)}_j|Y=C_k)=\frac{1}{\sqrt{2πσ_k^2}}\exp(-\frac{(X^{(test)}_j-μ_k)^2}{2σ_k^2}) P(Xj=Xj(test)Y=Ck)=2πσk2 1exp(2σk2(Xj(test)μk)2),其中 μ k μ_k μk σ k 2 σ_k^2 σk2方别是正态分布的期望和方差,即 μ k μ_k μk是在样本类别 C k C_k Ck中,所有 X j X_j Xj的均值; σ k 2 σ_k^2 σk2是在样本类别 C k C_k Ck中,所有 X j X_j Xj的方差。

(5)朴素贝叶斯算法的过程

算法输入:训练集m个样本,每个样本n维特征,特征输出为 y m y_m ym,即 ( x 1 ( 1 ) , x 2 ( 1 ) , . . . , x n ( 2 ) , y 1 ) , ( x 1 ( 2 ) , x 2 ( 2 ) , . . . , x n ( 2 ) , y 2 ) . . . . . . ( x 1 ( m ) , x 2 ( m ) , . . . , x n ( m ) , y m ) (x^{(1)}_1,x^{(1)}_2,...,x^{(2)}_n,y_1),(x^{(2)}_1,x^{(2)}_2,...,x^{(2)}_n,y_2)......(x^{(m)}_1,x^{(m)}_2,...,x^{(m)}_n,y_m) (x1(1),x2(1),...,xn(2),y1),(x1(2),x2(2),...,xn(2),y2)......(x1(m),x2(m),...,xn(m),ym)
其中k个特征输出类别,分别是 C 1 , C 2 , . . . , C K C_1,C_2,...,C_K C1,C2,...,CK,每个输出类别有 m 1 , m 2 , . . . , m K m_1,m_2,...,m_K m1,m2,...,mK个样本;如果是离散特征,则特征 X j X_j Xj各个类别取值为 m k j l m_{kjl} mkjl,其中 l l l取值是 1 , 2 , . . . , S j 1,2,...,S_j 1,2...Sj S j S_j Sj是特征 j j j不同的取值数
算法输出:测试集中实例 X ( t e s t ) X^{(test)} X(test)的分类结果
算法过程

  1. 若没有Y的先验概率,计算Y的K个先验概率为: P ( Y = C k ) = m k + λ m + λ S j P(Y=C_k)=\frac{m_{k}+λ}{m+λS_j} P(Y=Ck)=m+λSjmk+λ;若有则直接输入Y的先验概率

  2. 分别计算第 k k k个类别的第 j j j维特征的第 l l l个取值条件概率: P ( X j = m j l ∣ Y = C k ) P(X_j=m_{jl}|Y=C_k) P(Xj=mjlY=Ck)
    (1)如果 X j X_j Xj是离散值: P ( X j = m j l ∣ Y = C k ) = m k j l + λ m k j l + λ S j P(X_j=m_{jl}|Y=C_k)=\frac{m_{kjl}+λ}{m_{kjl}+λS_j} P(Xj=mjlY=Ck)=mkjl+λSjmkjl+λ λ ≥ 1 λ≥1 λ1
    (2)如果 X j X_j Xj是稀疏的离散值: P ( X j = m j l ∣ Y = C k ) = P ( j ∣ Y = C k ) x j l + ( 1 − P ( j ∣ Y = C k ) ) ( 1 − x j l ) P(X_j=m_{jl}|Y=C_k)=P(j|Y=C_k)x_{jl}+(1-P(j|Y=C_k))(1-x_{jl}) P(Xj=mjlY=Ck)=P(jY=Ck)xjl+(1P(jY=Ck))(1xjl) l l l为0或者1
    (3)如果 X j X_j Xj是连续值,不需要计算每个 l l l的取值概率: P ( X j = m j ∣ Y = C k ) = 1 2 π σ k 2 exp ⁡ ( − ( X j ( t e s t ) − μ k ) 2 2 σ k 2 ) P(X_j=m_{j}|Y=C_k)=\frac{1}{\sqrt{2πσ_k^2}}\exp(-\frac{(X^{(test)}_j-μ_k)^2}{2σ_k^2}) P(Xj=mjY=Ck)=2πσk2 1exp(2σk2(Xj(test)μk)2),其中 μ k 和 σ k 2 μ_k和σ_k^2 μkσk2分别是样本类别 C k C_k Ck中,所有 X j X_j Xj的均值和方差

  3. 对于实例 X ( t e s t ) X^{(test)} X(test),分别计算: P ( Y = C k ) ∏ j = 1 n P ( X j = x j ( t e s t ) ∣ Y = C k ) P(Y=C_k)\displaystyle\prod_{j=1}^{n}P(X_j=x_j^{(test)}|Y=C_k) P(Y=Ck)j=1nP(Xj=xj(test)Y=Ck)

  4. 确定实例 X ( t e s t ) X^{(test)} X(test)的分类 C r e s u l t C_{result} Cresult C r e s u l t = a r g m a x ⏟ C k P ( Y = C k ) ∏ j = 1 n P ( X j = x j ( t e s t ) ∣ Y = C k ) C_{result}=\underbrace{argmax}_{C_k}P(Y=C_k)\displaystyle\prod_{j=1}^{n}P(X_j=x_j^{(test)}|Y=C_k) Cresult=Ck argmaxP(Y=Ck)j=1nP(Xj=xj(test)Y=Ck)

(6)朴素贝叶斯算法小结

朴素贝叶斯的优点

  1. 分类效率稳定
  2. 对小规模数据表现很好,能处理多分类任务,适合增量式训练,尤其是数据量超出内存时,我们可以一批批的去增量训练
  3. 对缺失数据不太敏感,算法也比较简单,常用于文本分类

朴素贝叶斯的优点

  1. 样本特征关联性高时,分类效果不好
  2. 需要知道先验概率,而先验概率很多时候是假设的,假设的先验模型会导致预测效果不佳
  3. 通过先验概率和数据来决定后验的概率并进行分类,所以分类决策存在一定的错误率。
  4. 对输入数据的表达形式很敏感。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值