朴素贝叶斯的数学原理,完全手推,一针见血

朴素贝叶斯模型是一种生成式机器学习模型,其模型的数学原理是贝叶斯公式。本文假设读者已经有了概率论的知识。
贝叶斯公式如下:
P ( Y ∣ X ) = P ( X Y ) P ( X ) = P ( X ∣ Y ) P ( Y ) P ( X ) (1) \begin{aligned} P(Y|X)=\frac{P(XY)}{P(X)}=\frac{P(X|Y)P(Y)}{P(X)}\tag{1} \end{aligned} P(YX)=P(X)P(XY)=P(X)P(XY)P(Y)(1)
贝叶斯公式反映了先验概率和后验概率之间的关系,即 P ( X ∣ Y ) P(X|Y) P(XY) P ( Y ∣ X ) P(Y|X) P(YX)的关系,我们以分类问题为基础赋予式 ( 1 ) (1) (1)现实意义,得到式 ( 2 ) (2) (2)
P ( C ∣ X ) = P ( X ∣ C ) P ( C ) P ( X ) (2) \begin{aligned} P(C|X)=\frac{P(X|C)P(C)}{P(X)}\tag{2} \end{aligned} P(CX)=P(X)P(XC)P(C)(2)
其中X指的是特征向量, X = ( x 1 , x 2 , . . . , x n ) X=(x_{1},x_{2},...,x_{n}) X=(x1,x2,...,xn) C C C X X X属于的具体类别。通过已有的数据集可以得到先验 P ( X ∣ C ) P(X|C) P(XC)和类别总占比 P ( C ) P(C) P(C),并且 P ( X ) = 1 P(X)=1 P(X)=1,即可计算出 P ( C ∣ X ) P(C|X) P(CX)。式 ( 2 ) (2) (2)进一步变为:
P ( C ∣ X ) = P ( X ∣ C ) P ( C ) (3) \begin{aligned} P(C|X)=P(X|C)P(C)\tag{3} \end{aligned} P(CX)=P(XC)P(C)(3)
代入特征向量 X X X的具体形式
P ( C ∣ X ) = P ( x 1 , x 2 , . . . , x n ∣ C ) P ( C ) (4) \begin{aligned} P(C|X)=P(x_{1},x_{2},...,x_{n}|C)P(C)\tag{4} \end{aligned} P(CX)=P(x1,x2,...,xnC)P(C)(4)
所以关键在于求 P ( x 1 , x 2 , . . . , x n ∣ C ) P(x_{1},x_{2},...,x_{n}|C) P(x1,x2,...,xnC),由条件概率公式得
P ( x 1 , x 2 , . . . , x n ∣ C ) = P ( x 1 , x 2 , . . . , x n , C ) P ( C ) (5) \begin{aligned} P(x_{1},x_{2},...,x_{n}|C)=\frac{P(x_{1},x_{2},...,x_{n},C)}{P(C)}\tag{5} \end{aligned} P(x1,x2,...,xnC)=P(C)P(x1,x2,...,xn,C)(5)
( 5 ) (5) (5)代入式 ( 4 ) (4) (4)得到:
P ( C ∣ X ) = P ( x 1 , x 2 , . . . , x n , C ) (6) \begin{aligned} P(C|X)=P(x_{1},x_{2},...,x_{n},C)\tag{6} \end{aligned} P(CX)=P(x1,x2,...,xn,C)(6)
即求一个多维联合概率分布,由联合概率的链式法则易知:
P ( C ∣ X ) = P ( x 1 ∣ x 2 , . . . , x n , C ) P ( x 2 ∣ x 3 . . . x n , C ) . . . P ( x n ∣ C ) P ( C ) (7) \begin{aligned} P(C|X)=P(x_{1}|x_{2},...,x_{n},C)P(x_{2}|x_{3}...x_{n},C)...P(x_{n}|C)P(C)\tag{7} \end{aligned} P(CX)=P(x1x2,...,xn,C)P(x2x3...xn,C)...P(xnC)P(C)(7)
以上的每一个概率在现实问题中都不好求,因此有了贝叶斯分类器最重要的限制:假设给定的类别,所有的特征相互独立。
于是有:
P ( C ∣ X ) = P ( x 1 ∣ C ) P ( x 2 ∣ C ) . . . P ( x n ∣ C ) P ( C ) = P ( C ) ∏ i = 1 n P ( x i ∣ C ) (8) \begin{aligned} P(C|X)=P(x_{1}|C)P(x_{2}|C)...P(x_{n}|C)P(C)=P(C)\prod_{i=1}^nP(x_{i}|C)\tag{8} \end{aligned} P(CX)=P(x1C)P(x2C)...P(xnC)P(C)=P(C)i=1nP(xiC)(8)
最终得到朴素贝叶斯的数学模型如下:
a r g m a x K P ( C K ∣ X ) = P ( C K ) ∏ i = 1 n P ( x i ∣ C K ) (9) \begin{aligned} argmax_{K}P(C_{K}|X)=P(C_{K})\prod_{i=1}^nP(x_{i}|C_{K})\tag{9} \end{aligned} argmaxKP(CKX)=P(CK)i=1nP(xiCK)(9)
朴素贝叶斯模型的训练过程简单,就是根据所给的数据建立一个先验概率表,对于一个新的特征只需要查表计算所有类别的后验概率大小,最大的概率值对应的那个类别即是新特征送入朴素贝叶斯分类器的分类结果。
朴素贝叶斯分类器有如下的几点注意事项:
①如果需要分类的事件特征中有新的特征分量,那么使用拉普拉斯平滑技术给对应条件概率的分子分母同时加上一个数,一般是1,称为拉普拉斯平滑系数,作用是避免先验概率连乘时出现 0 0 0
②朴素贝叶斯模型分为:高斯模型(连续)、多项式模型(离散)和贝努利模型(二值),如果分类的特征中有离散和连续两种特征,有两种方法可以解决这个问题。第一种方法是连续特征离散化,将特征变为全部离散的形式,使用多项式模型。第二种方法是连续特征用高斯模型拟合、离散特征用多项式模型拟合,最后结合成为一个元模型。
③现实中的分类问题往往特征巨大,而 0 − 1 0-1 01之间的小数连乘会导致结果数值越来越小,有可能出现数值溢出,使得模型失效。模型两边取对数,连乘变连加即可解决这个问题。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
朴素贝叶斯算法原理: 朴素贝叶斯算法是一种基于贝叶斯定理和特征条件独立假设的分类算法。其基本思想是对于给定的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个类别的概率最大,就认为此待分类项属于哪个类别。具体来说,朴素贝叶斯算法假设每个特征与其他特征之间相互独立,即每个特征都独立地对分类结果产生影响。在实际应用中,朴素贝叶斯算法常用于文本分类、垃圾邮件过滤等领域。 Python实现: Python中有多个库可以实现朴素贝叶斯算法,其中比较常用的是scikit-learn库。下面是一个简单的示代码,用于展示如何使用scikit-learn库实现朴素贝叶斯算法进行文本分类: ```python from sklearn.naive_bayes import MultinomialNB from sklearn.feature_extraction.text import CountVectorizer # 构建训练数据 train_data = ['this is a good book', 'this is a bad book', 'good day', 'bad day'] train_labels = ['positive', 'negative', 'positive', 'negative'] # 构建特征提取器 vectorizer = CountVectorizer() # 将文本转换为特征向量 train_features = vectorizer.fit_transform(train_data) # 构建朴素贝叶斯分类器 clf = MultinomialNB() # 训练分类器 clf.fit(train_features, train_labels) # 构建测试数据 test_data = ['good book', 'bad book', 'happy day'] test_features = vectorizer.transform(test_data) # 进行预测 predicted_labels = clf.predict(test_features) # 输出预测结果 print(predicted_labels) # 输出:['positive' 'negative' 'positive'] ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值