机器学习-朴素贝叶斯原理


朴素贝叶斯

我们的分类模型中有M个样本,每个样本有N维,输出的类别有C类。
样本例如 ( X 1 1 , X 2 1 , X 3 1 . . . X n 1 , Y 1 ) (X_1^1,X_2^1,X_3^1...X_n^1,Y_1) (X11,X21,X31...Xn1,Y1) ( X 1 2 , X 2 , X 3 2 . . . X n 2 , Y 2 ) (X_1^2,X_2^,X_3^2...X_n^2,Y_2) (X12,X2,X32...Xn2,Y2),从样本中我们可以得到先验概率 P ( Y ) P(Y) P(Y)(K=1,2…C)及条件概率 P ( X ∣ Y ) P(X|Y) P(XY),然后得到联合概率为: P ( X Y ) P(XY) P(XY),定义联合概率为 P ( X Y ) = P ( Y = C k ) ∗ P ( X = x ∣ Y = C k ) = P ( Y = C k ) ∗ P ( X = ( x 1 , x 2 , . . . x n ) ∣ Y = C k ) P(XY) =P(Y=C_k)*P(X=x|Y=C_k)\\= P(Y=C_k)* P(X=(x_1,x_2,...x_n)|Y=C_k) P(XY)=P(Y=Ck)P(X=xY=Ck)=P(Y=Ck)P(X=(x1,x2,...xn)Y=Ck)

朴素贝叶斯假设

在这里我们假设X的n个维度之间互相独立,得到 P ( X = ( x 1 , x 2 , . . . 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=(x_1,x_2,...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=(x1,x2,...xn)Y=Ck)=P(X1=x1Y=Ck)P(X2=x2Y=Ck)P(Xn=xnY=Ck)

朴素贝叶斯原理

C r e s l u t = a r g m a x    P ( Y ∣ X ) = P ( X ∣ Y ) ∗ P ( Y ) P ( X ) C_{reslut} =argmax\;P(Y|X)={P(X|Y)*P(Y)\over P(X)} Creslut=argmaxP(YX)=P(X)P(XY)P(Y)
其中 P ( Y = C k ) P(Y=C_k) P(Y=Ck)是类别在训练集中中出现的频数,及 P ( Y = C k ) = m c k m P(Y=C_k)={m_{ck} \over m} P(Y=Ck)=mmck其中 m c k m_{ck} mck是类别K出现的次数。
上式中由于分母都一样都是 P ( X ) P(X) P(X),那么只要计算分子最大化即可。及 C r e s l u t = a r g m a x    P ( Y ∣ X ) = P ( X ∣ Y ) ∗ P ( Y ) C_{reslut} =argmax\;P(Y|X)={P(X|Y)*P(Y)} Creslut=argmaxP(YX)=P(XY)P(Y)由于朴素贝叶斯的独立性,得到新的计算公式 C r e s l u t = a r g m a x    P ( Y ∣ X ) = P ( Y ) ∗ ∏ j = 1 n P ( X = x j ∣ Y = C k ) C_{reslut} =argmax\;P(Y|X)={P(Y)*\prod_{j=1}^nP(X=x_j|Y=C_k)} Creslut=argmaxP(YX)=P(Y)j=1nP(X=xjY=Ck)
对于 P ( X j = x j α ∣ Y = C k )    ( j = 1 , 2 , 3... n ) P(X_j=x_{j\alpha}|Y=C_k) \; (j=1,2,3...n) P(Xj=xjαY=Ck)(j=1,2,3...n),对于输入样本的每一特征个数不同,我们这里默认每一个特征的选择都是是特征 α \alpha α. 对于后验概率中需要后验的就是对于每一个特征的不同选择。
在这里对于每个特征的的不同输入值有三种计算方案:

  • 如果该特征是离散值:
    P ( X j = x j α ∣ y = C k ) =    x j α + λ m k + n λ P(X_j =x_{j\alpha}|y=C_k)=\;{x_{j\alpha}+\lambda\over{m_k+n\lambda} } P(Xj=xjαy=Ck)=mk+nλxjα+λ
    其中 λ \lambda λ是拉普拉斯平滑参数,n是 X j X_j Xj的类别个数
    sklearn中所对应的类是MultinomialNB
  • 是稀疏的二项式离散值:
    P ( X j = x j α ∣ y = C k ) =    P ( j ∣ Y = C k ) X j α + ( 1 − P ( j ∣ Y = C k ) ) ( 1 − X j α ) P(X_j =x_{j\alpha}|y=C_k)=\;P(j|Y=C_k)X_{j\alpha}+(1-P(j|Y=C_k))(1-X_{j\alpha}) P(Xj=xjαy=Ck)=P(jY=Ck)Xjα+(1P(jY=Ck))(1Xjα)
    其中 X j α X_{j\alpha} Xjα取值为0,1。 P ( j ∣ Y = C K ) P(j|Y=C_K) P(jY=CK)为在类别为K是第j维特征出现1的概率
    sklearn中所对应的类是BernoulliNB
  • 该特征是连续值,认为 X j X_j Xj在类别 C k C_k Ck中为正态分布
    P ( X j = x j α ∣ y = C k ) =    1 2 π σ k 2 ∗ − ( X j − μ k ) 2 2 σ k 2 P(X_j =x_{j\alpha}|y=C_k)=\;{1\over{\sqrt{2\pi\sigma_k^2}}}*{-{(X_j-\mu_k)^2}\over2\sigma_k^2} P(Xj=xjαy=Ck)=2πσk2 12σk2(Xjμk)2
    其中 σ k 2 \sigma_k^2 σk2是在样本 C k C_k Ck中在该维度下所有的可取值的方差, μ k \mu_k μk是在样本 C k C_k Ck中所有可取值的均值(对于该样本的该特征我们的取值是 α \alpha α x j α x_{j\alpha} xjα,对于该特征值的取值为连续函数值)
    sklearn中所对应的类是GaussianNB

算法过程

训练集m个样本,n个维度,输出类别有k类,每一个类别的个数有 m 1 , m 2 , . . . m k m_1,m_2,...m_k m1,m2,...mk

  • 计算类别的先验概率 P ( Y = C k ) = m k m P(Y=C_k)={m_k \over m} P(Y=Ck)=mmk

  • 计算第k个类别的第j维特征取值为 α \alpha α时的条件概率 P ( X j α ∣ Y = C k ) P(X_{j\alpha}|Y=C_k) P(XjαY=Ck)其中 α \alpha α是要求的样本的第j维特征的取值,这个是需要在后验中给出的。

  • 由于贝叶斯假设性,我们可以得到 P ( X ∣ Y ) = ∏ j = 1 n P ( X j ∣ Y = C k ) P(X|Y)=\prod_{j=1}^nP(X_j|Y=C_k) P(XY)=j=1nP(XjY=Ck)那么对于输入样本X的分类 C r e s u l t C_{result} Cresult的结果是 C r e s u l t = a r g m a x    ∏ j = 1 n P ( X j ∣ Y = C k ) ∗ P ( Y = C k ) C_{result}=argmax\;\prod_{j=1}^nP(X_j|Y=C_k)*P(Y=C_k) Cresult=argmaxj=1nP(XjY=Ck)P(Y=Ck)

算法小结

  • 对于小规模数据表现良好,处理多分类问题
  • 对于缺失值不敏感,常用于文本分类
  • 但需要知道先验概率,而且是通过数据提供的后验数据(就是样本在每个特征上的取值)及先验决定分类,如果先验有问题(数据不平均差距很大)时有错误
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值