Naive_bayes

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

统计概率

  • 先验概率+数据=后验概率
  • 先验概率就是对于数据所在领域的历史经验,但是常常难以量化或模型化,贝叶斯学派大胆的假设先验分布的模型,比如正态分布,beta分布等。
  • 条件独立公式,如果X和Y相互独立,则有: P ( X , Y ) = P ( X ) P ( Y ) P(X,Y) =P(X)P(Y) P(X,Y)=P(X)P(Y)
  • 条件概率公式: P ( Y ∣ X ) = P ( X , Y ) / P ( X ) P(Y|X) = P(X,Y)/P(X) P(YX)=P(X,Y)/P(X) P ( Y ∣ X ) = P ( X ∣ Y ) P ( Y ) / P ( X ) P(Y|X) = P(X|Y)P(Y)/P(X) P(YX)=P(XY)P(Y)/P(X)
  • 全概率公式 P ( X ) = ∑ k P ( X ∣ Y = Y k ) P ( Y k ) 其 中 ∑ k P ( Y k ) = 1 P(X) = \sum\limits_{k}P(X|Y =Y_k)P(Y_k) 其中\sum\limits_{k}P(Y_k)=1 P(X)=kP(XY=Yk)P(Yk)kP(Yk)=1
  • 贝叶斯公式: P ( Y k ∣ X ) = P ( X ∣ Y k ) P ( Y k ) ∑ k P ( X ∣ Y = Y k ) P ( Y k ) P(Y_k|X) = \frac{P(X|Y_k)P(Y_k)}{\sum\limits_{k}P(X|Y =Y_k)P(Y_k)} P(YkX)=kP(XY=Yk)P(Yk)P(XYk)P(Yk)

朴素贝叶斯

假如分类模型样本是 ( x 1 ( 1 ) , x 2 ( 1 ) , . . . x n ( 1 ) , 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_2^{(1)}, ...x_n^{(1)}, y_1), (x_1^{(2)}, x_2^{(2)}, ...x_n^{(2)},y_2), ... (x_1^{(m)}, x_2^{(m)}, ...x_n^{(m)}, y_m) (x1(1),x2(1),...xn(1),y1),(x1(2),x2(2),...xn(2),y2),...(x1(m),x2(m),...xn(m),ym)

即有m个样本,每个样本有n个特征,特征输出有K个类别, C 1 , . . . . , C k C_1,....,C_k C1,....,Ck

  • 先验分布: P ( Y = C k ) P(Y=C_k) P(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=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)
  • 联合分布: P ( X , Y = C k ) = P ( Y = C k ) P ( X = x ∣ Y = C k ) P(X,Y=C_k) = P(Y=C_k)P(X=x|Y=C_k) P(X,Y=Ck)=P(Y=Ck)P(X=xY=Ck) = P ( Y = C k ) P ( X 1 = x 1 , X 2 = x 2 , . . . X n = x n ∣ Y = C k ) = P(Y=C_k)P(X_1=x_1, X_2=x_2,...X_n=x_n|Y=C_k) =P(Y=Ck)P(X1=x1,X2=x2,...Xn=xnY=Ck)

  • 先验分布:类别 C k C_k Ck在训练集中出现的频数
  • 条件概率分布:朴素贝叶斯假设X的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 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_n=x_n|Y=C_k) P(X1=x1,X2=x2,...Xn=xnY=Ck)=P(X1=x1Y=Ck)...P(Xn=xnY=Ck)

推论

  • 最大化预测概率 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 ) ) C_{result} = \underbrace{argmax}_{C_k}P(Y=C_k|X=X^{(test)}) Cresult=Ck argmaxP(Y=CkX=X(test)) = 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 ) ) = \underbrace{argmax}_{C_k}P(X=X^{(test)}|Y=C_k)P(Y=C_k) /P(X=X^{(test)}) =Ck argmaxP(X=X(test)Y=Ck)P(Y=Ck)/P(X=X(test))
  • 对于每一种 C k C_k Ck P ( X = X ( t e s t ) ) P(X=X^{(test)}) P(X=X(test))相同,利用朴素贝叶斯的独立性假设: 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)\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)

  • P ( Y = C k ) P(Y=C_k) P(Y=Ck): 样本类别 C k C_k Ck出现的次数 m k m_k mk除以样本总数m。
  • P ( X j = X j ( t e s t ) ∣ Y = C k ) P(X_j=X_j^{(test)}|Y=C_k) P(Xj=Xj(test)Y=Ck)取决于先验条件:
    • 如果 X j X_j Xj是离散值,那么可以假设 X j X_j Xj符合多项式分布: 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_j^{(test)}|Y=C_k) = \frac{m_{kj^{test}}}{m_k} P(Xj=Xj(test)Y=Ck)=mkmkjtest其中 m k m_k mk为样本类别为 C k C_k Ck的样本数,而 m j k t e s t m^{test}_{jk} mjktest为类别为 C k C_k Ck的样本中,第j维特征 X j t e s t X^{test}_j Xjtest出现的计数。
      某些类别在样本中没有出现,会导致 P ( X j = X j ( t e s t ) ∣ Y = C k ) P(X_j=X_j^{(test)}|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_j^{(test)}|Y=C_k) = \frac{m_{kj^{test}} + \lambda}{m_k + O_j\lambda} P(Xj=Xj(test)Y=Ck)=mk+Ojλmkjtest+λ 其中𝜆 为一个大于0的常数,常常取为1。 O j O_j Oj为第j个特征的取值个数。
    • 如果 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_j^{(test)}|Y=C_k) = P(X_j=1|Y=C_k)X_j^{(test)} + (1 - P(X_j=1|Y=C_k))(1-X_j^{(test)}) 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_j^{(test)} Xj(test)出现(只要不为0)为1,不出现记为0,只统计 Y = C k Y=C_k Y=Ck时, X j ( t e s t ) X_j^{(test)} Xj(test)出现(不为0值)和不出现的频率。
    • 如果 X j X_j Xj是连续值,通常取 X j X_j Xj的先验概率为正态分布: P ( X j = X j ( t e s t ) ∣ Y = C k ) = 1 2 π σ k 2 e x p ( − ( X j ( t e s t ) − μ k ) 2 2 σ k 2 ) P(X_j=X_j^{(test)}|Y=C_k) = \frac{1}{\sqrt{2\pi\sigma_k^2}}exp{(}-\frac{(X_j^{(test)} - \mu_k)^2}{2\sigma_k^2}{)} P(Xj=Xj(test)Y=Ck)=2πσk2 1exp(2σk2(Xj(test)μk)2)

算法流程

输入:分类模型样本 ( x 1 ( 1 ) , x 2 ( 1 ) , . . . x n ( 1 ) , 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_2^{(1)}, ...x_n^{(1)}, y_1), (x_1^{(2)}, x_2^{(2)}, ...x_n^{(2)},y_2), ... (x_1^{(m)}, x_2^{(m)}, ...x_n^{(m)}, y_m) (x1(1),x2(1),...xn(1),y1),(x1(2),x2(2),...xn(2),y2),...(x1(m),x2(m),...xn(m),ym),K个类别 C 1 , . . . . , C k C_1,....,C_k C1,....,Ck
输出:实例 X ( t e s t ) X^{(test)} X(test)类别。

  1. 如果没有Y的先验概率,则计算Y的K个先验概率: P ( Y = C k ) = ( m k + λ ) / ( m + K λ ) P(Y=C_k) = (m_k+\lambda)/(m+K\lambda) P(Y=Ck)=(mk+λ)/(m+Kλ),否则 P ( Y = C k ) P(Y=C_k) P(Y=Ck)为输入的先验概率。
  2. 分别计算第k个类别的第j维特征的第l个取值条件概率:
    • 离散值: P ( X j = x j l ∣ Y = C k ) = m k j l + λ m k + O j λ P(X_j=x_{jl}|Y=C_k) = \frac{m_{kjl} + \lambda}{m_k + O_j\lambda} P(Xj=xjlY=Ck)=mk+Ojλmkjl+λ
    • 稀疏二项离散值: P ( X j = x 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=x_{jl}|Y=C_k) = P(j|Y=C_k)x_{jl} + (1 - P(j|Y=C_k))(1-x_{jl}) P(Xj=xjlY=Ck)=P(jY=Ck)xjl+(1P(jY=Ck))(1xjl)
    • 连续值计算均值和方差: P ( X j = x j ∣ Y = C k ) = 1 2 π σ k 2 e x p ( − ( x j − μ k ) 2 2 σ k 2 ) P(X_j=x_j|Y=C_k) = \frac{1}{\sqrt{2\pi\sigma_k^2}}exp{(}-\frac{(x_j - \mu_k)^2}{2\sigma_k^2}{)} P(Xj=xjY=Ck)=2πσk2 1exp(2σk2(xjμk)2)
  3. 对于 X ( t e s t ) X^{(test)} X(test)计算每种类别成立的相对概率: P = P ( Y = C k ) ∏ j = 1 n P ( X j = x j ( t e s t ) ∣ Y = C k ) P=P(Y=C_k)\prod_{j=1}^{n}P(X_j=x_j^{(test)}|Y=C_k) P=P(Y=Ck)j=1nP(Xj=xj(test)Y=Ck)
  4. 输出类别: 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 ) ) C_{result} = \underbrace{argmax}_{C_k}P(Y=C_k|X=X^{(test)}) Cresult=Ck argmaxP(Y=CkX=X(test))

算法小结

主要优点

  1. 对小规模的数据表现很好,能个处理多分类任务,在数据量超出内存时,可以一批批增量训练。
  2. 对缺失数据不太敏感,算法较简单,常用于文本分类。

主要缺点

  1. 在属性个数比较多或者属性之间相关性较大时,分类效果不好。
  2. 需要知道先验概率,且先验概率很多时候取决于假设,会由于假设的先验模型不准确导致预测效果不佳。
  3. 通过先验和数据来决定后验的概率从而决定分类,所以分类决策存在一定的错误率。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值