目录

  • 1 朴素贝叶斯算法
    • 1.1 贝叶斯原理
      • 条件概率
      • 全概率
      • 贝叶斯定理推导
    • 1.2 特征条件独立
      • 朴素贝叶斯分类器
  • 2 概率计算模型
    • 2.1 多项式模型
    • 2.2 高斯模型
    • 2.3 伯努利模型

1 朴素贝叶斯算法

朴素贝叶斯算法是是基于贝叶斯定理与特征条件独立假设的分类方法。接下来我们就分别从贝叶斯原理和特征条件独立假设介绍贝叶斯算法。

1.1 贝叶斯原理

条件概率

条件概率是指:在事件yyy已经发生的条件下,事件xxx发生的概率。条件概率可表示为P(x∣y)P(x|y)P(x∣y),其计算公式为:
P(x∣y)=P(x,y)P(y)P(x|y) = \frac{P(x,y)}{P(y)} P(x∣y)=P(y)P(x,y)​
其中P(x,y)P(x,y)P(x,y)就是联合概率,表示xxx和yyy两件事情同事发生的概率,而P(y)P(y)P(y)和P(x)P(x)P(x)就是先验概率,是根据以往的经验和分析得到的概率,就是通过训练集得到的统计概率。

全概率

全概率公式是指:如果事件y1,y2,...,yny_1,y_2,...,y_ny1​,y2​,...,yn​可构成一个完备事件组,即它们两两互不相容,其和为全集。则对于事件xxx有:
P(x∣y)=∑i=1nP(yi)P(x∣yi)P(x|y)=\sum_{i=1}^{n}P(y_i)P(x|y_i) P(x∣y)=i=1∑n​P(yi​)P(x∣yi​)
既然有先验概率,那拥有后验概率是最直接的想法。后验概率是指,某事件xxx已经发生,那么该事件是因为事件yyy而发生的概率。后验概率以先验概率为基础,通过贝叶斯公式,用先验概率和似然函数计算出来。这里就引出了贝叶斯定理:
P(x∣y)=P(y∣x)P(x)P(y)P(x|y)=\frac{P(y|x)P(x)}{P(y)} P(x∣y)=P(y)P(y∣x)P(x)​

  • P(x∣y)P(x|y)P(x∣y)是已知yyy发生后xxx的条件概率,也被称作xxx的后验概率,直观理解就是事后的概率;
  • P(x)P(x)P(x)是xxx的先验概率,之所以称为"先验"是因为它不考虑任何yyy方面的因素;
  • P(y∣x)P(y|x)P(y∣x)是已知x发生后y的条件概率,也被称作yyy的后验概率,即P(y)P(y)P(y)是yyy的先验概率。

贝叶斯算法正是利用以上信息求解后验概率,并根据后验概率的值来进行分类的。

贝叶斯定理推导

根据条件概率公式,yyy发生条件下xxx的概率为:
P(x∣y)=P(x,y)P(y)P(x|y)=\frac{P(x,y)}{P(y)} P(x∣y)=P(y)P(x,y)​
xxx发生条件下yyy的概率为:
P(y∣x)=P(y,x)P(x)P(y|x)=\frac{P(y,x)}{P(x)} P(y∣x)=P(x)P(y,x)​
合并后得到:
P(x∣y)=P(y∣x)P(x)=Px∣yP(y)P(x|y)=P(y|x)P(x)=P{x|y}P(y) P(x∣y)=P(y∣x)P(x)=Px∣yP(y)
若p(y)p(y)p(y)非零,两边同时除以p(y)p(y)p(y)得到贝叶斯定理:
P(x∣y)=P(y∣x)P(x)P(y)P(x|y)=\frac{P(y|x)P(x)}{P(y)} P(x∣y)=P(y)P(y∣x)P(x)​

1.2 特征条件独立

首先对上述xxx和yyy扩展一下,有一个训练数据集(X,Y)(X,Y)(X,Y),其中x∈Xx\in Xx∈X,并且包含nnn维特征,即x=(x−1,x2,...,xn)x=(x-1,x_2,...,x_n)x=(x−1,x2​,...,xn​),y∈Yy\in Yy∈Y,共有kkk种类别,即y=(y1,y2,...,yk)y=(y_1,y_2,...,y_k)y=(y1​,y2​,...,yk​)。
给定一个新的输入xxx,需要判定它属于哪一个类别,从概率的角度来看,这个问题就是给定xxx,它属于哪个类别的概率是最大的。那么问题就转化为求解P(y1∣x),P(y2∣x),...,P(yk∣x)P(y_1|x),P(y_2|x),...,P(y_k|x)P(y1​∣x),P(y2​∣x),...,P(yk​∣x)中最大的那个,即求后验概率最大的输出:argmaxykP(yk∣x)argmax_{y_k}P(y_k|x)argmaxyk​​P(yk​∣x)

由贝叶斯定理可求:
P(yk∣x)=P(x∣yk)P(yk)P(x)P(y_k|x) = \frac{P(x|y_k)P(y_k)}{P(x)} P(yk​∣x)=P(x)P(x∣yk​)P(yk​)​
而根据全概率公式,可以求得
P(x)=∑i=1kP(yi)P(x∣yi)P(x)=\sum_{i=1}^{k}P(y_i)P(x|y_i) P(x)=i=1∑k​P(yi​)P(x∣yi​)
就有:
P(yk∣x)=P(x∣yk)P(yk)∑i=1kP(yi)P(x∣yi)P(y_k|x) = \frac{P(x|y_k)P(y_k)}{\sum_{i=1}^{k}P(y_i)P(x|y_i)} P(yk​∣x)=∑i=1k​P(yi​)P(x∣yi​)P(x∣yk​)P(yk​)​
其中P(yk)P(y_k)P(yk​)是可以通过统计训练集即可计算得到,重点是P(x∣yk)P(x|y_k)P(x∣yk​)的计算,我们将其分解:
P(x∣yk)=P(x1,x2,...,xn∣yk)P(x|y_k)=P(x_1,x_2,...,x_n|y_k) P(x∣yk​)=P(x1​,x2​,...,xn​∣yk​)
现在假设xix_ixi​特征的可选值由sis_isi​个,那么很容易算的其参数个数为k∏i=1nsik\prod_{i=1}^{n}s_ik∏i=1n​si​,其参数规模是指数级别的。
所以就有了朴素贝叶斯,它非常纯真可爱,它假设这些特征x1,x2,...,xnx_1,x_2,...,x_nx1​,x2​,...,xn​之间是相互独立的,那么就有:
P(x∣yk)=P(x1,x2,...,xn∣yk)=∏i=1nP(xi∣yk)P(x|y_k)=P(x_1,x_2,...,x_n|y_k)=\prod_{i=1}^{n}P(x_i|y_k) P(x∣yk​)=P(x1​,x2​,...,xn​∣yk​)=i=1∏n​P(xi​∣yk​)
参数个数降低到了k∑i=1nsik\sum_{i=1}^{n}s_ik∑i=1n​si​。

朴素贝叶斯分类器

结合上一节的结论,很容易计算得到:
P(yk∣x)=P(x∣yk)P(yk)∑i=1kP(yi)P(x∣yi)=P(yk)∏i=1nP(xi∣yk)∑i=1kP(yi)∏i=1nP(xi∣yk)P(y_k|x) = \frac{P(x|y_k)P(y_k)}{\sum_{i=1}^{k}P(y_i)P(x|y_i)} \\ =\frac{P(y_k)\prod_{i=1}^{n}P(x_i|y_k)}{\sum_{i=1}^{k}P(y_i)\prod_{i=1}^{n}P(x_i|y_k)} P(yk​∣x)=∑i=1k​P(yi​)P(x∣yi​)P(x∣yk​)P(yk​)​=∑i=1k​P(yi​)∏i=1n​P(xi​∣yk​)P(yk​)∏i=1n​P(xi​∣yk​)​
则朴素贝叶斯分类器的表达式为:
f(x)=argmaxykP(yk∣x)=argmaxykP(yk)∏i=1nP(xi∣yk)∑i=1kP(yi)∏i=1nP(xi∣yk)f(x)=argmax_{y_k}P(y_k|x)=argmax_{y_k}\frac{P(y_k)\prod_{i=1}^{n}P(x_i|y_k)}{\sum_{i=1}^{k}P(y_i)\prod_{i=1}^{n}P(x_i|y_k)} f(x)=argmaxyk​​P(yk​∣x)=argmaxyk​​∑i=1k​P(yi​)∏i=1n​P(xi​∣yk​)P(yk​)∏i=1n​P(xi​∣yk​)​

很明显,对于分母∑i=1kP(yi)∏i=1nP(xi∣yk)\sum_{i=1}^{k}P(y_i)\prod_{i=1}^{n}P(x_i|y_k)∑i=1k​P(yi​)∏i=1n​P(xi​∣yk​)其值是恒定的,因此朴素贝叶斯分类器的最终表达式为:
f(x)=argmaxykP(yk)∏i=1nP(xi∣yk)f(x) = argmax_{y_k}P(y_k)\prod_{i=1}^{n}P(x_i|y_k) f(x)=argmaxyk​​P(yk​)i=1∏n​P(xi​∣yk​)
接下来就只需要计算好P(yk)P(y_k)P(yk​)和P(xi∣yk)P(x_i|y_k)P(xi​∣yk​)即可。

2 概率计算模型

上一节末尾我们已经推导出朴素贝叶斯分类器的基本公式,只需要再计算先验概率P(yk)P(y_k)P(yk​)和条件概率P(xi∣yk)P(x_i|y_k)P(xi​∣yk​)即可。而在实际的应用中,不同的场景应用不同的计算模型。一般有三种模型:

  • 多项式模型
    适用于特征取值为离散型的场景,特征取值可选个数大于等于2;
  • 高斯模型
    适用于特征取值为连续型的场景;
  • 伯努利模型
    适用于特征取值为离散型的场景,并且可选值必须为0或者1。

2.1 多项式模型

多项式模型适用于特征值取值为离散值,并且较多的场景,如风险等级为取值为高中低等特征。它在计算先验概率和条件概率时会加一个平滑处理,其具体计算方法为:
P(yk)=Nyk+αN+kαP(y_k)=\frac{N_{y_k}+\alpha}{N+k\alpha} P(yk​)=N+kαNyk​​+α​
P(xi∣yk)=N(yk,xi)+αNyk+nαP(x_i|y_k)=\frac{N_{(y_k,x_i)}+\alpha}{N_{y_k} + n\alpha} P(xi​∣yk​)=Nyk​​+nαN(yk​,xi​)​+α​
其中NykN_{y_k}Nyk​​是类别为yky_kyk​的样本个数,nnn是特征的维数,N(yk,xi)N_{(y_k,x_i)}N(yk​,xi​)​是类别为yky_kyk​的样本中,第iii维特征的值是xix_ixi​的样本个数,α\alphaα是平滑参数。
为什么需要平滑?在有些应用中,如文本分类任务中,可能存在有些词语压根儿就没出现过,那么就可能导致N(yk,xi)N_{(y_k,x_i)}N(yk​,xi​)​为零,这就会导致P(xi∣yk)P(x_i|y_k)P(xi​∣yk​)为0,这显然不大合理,总不能因某个因素观察到老天爷没下雨,就说老天爷永远不下雨吧。

在实际的应用过程中可以使用sklearn.naive_bayes.MultinomialNB函数实现,传入合适参数α\alphaα即可完成分类器的训练。

2.2 高斯模型

高斯模型其特征取值为连续型,如身高、距离等。

  • 高斯分布
    高斯分布又称正态分布,在实际应用中最为广泛。对于单变量x∈(−∞,+∞)x \in(−\infty,+\infty)x∈(−∞,+∞),高斯分布的参数有两个,分别是均值μ∈(−∞,+∞)\mu \in (−\infty,+\infty)μ∈(−∞,+∞)和方差σ2>0\sigma^2>0σ2>0,其概率密度函数为:
    N(x∣μ,σ2)=12πσe−(x−μ)22σ2N(x|\mu,\sigma^2)=\frac{1}{\sqrt{2\pi\sigma}}e^{-\frac{(x-\mu)^2}{2\sigma^2}} N(x∣μ,σ2)=2πσ​1​e−2σ2(x−μ)2​
  • 多元高斯分布
    N(x∣μ,∑)=1(2π)D∣∑∣12e−12(x−μ)T∑−1(x−μ)N(x|\mu,\sum)=\frac{1}{\sqrt{(2\pi)^D|\sum|^{\frac{1}{2}}}}e^{-\frac{1}{2}(x-\mu)^T\sum^{-1}(x-\mu)} N(x∣μ,∑)=(2π)D∣∑∣21​​1​e−21​(x−μ)T∑−1(x−μ)
    其中μ\muμ是DDD维均值向量,∑\sum∑是D×DD\times DD×D的协方差矩阵,∣∑∣|\sum|∣∑∣是∑\sum∑的行列式,多元高斯分布的期望是μ\muμ,方差是∑\sum∑。
  • 概率计算
    高斯朴素贝叶斯模型是假设条件概率P(X=x∣Yk)P(X=x|Y_k)P(X=x∣Yk​)是多元高斯分布,另一方面,由之前的特征的条件独立性假设,我们就可以通过对每个特征的条件概率建模,每个特征的条件概率N(μt,σt2)N(\mu_t,\sigma_t^2)N(μt​,σt2​)也服从高斯分布。
    在yky_kyk​类下第iii个特征的高斯分布为:
    g(xi;μ(xi,yk),σ(xi,yk))=1σ(xi,yk)2πe−(xi−μ(xi,yk))22σ(xi,yk)2g(x_i;\mu_{(x_i,y_k)},\sigma_{(x_i,y_k)})=\frac{1}{\sigma_{(x_i,y_k)}\sqrt{2\pi}}e^{-\frac{(x_i-\mu_{(x_i,y_k)})^2}{2\sigma_{(x_i,y_k)}^{2}}} g(xi​;μ(xi​,yk​)​,σ(xi​,yk​)​)=σ(xi​,yk​)​2π​1​e−2σ(xi​,yk​)2​(xi​−μ(xi​,yk​)​)2​
    其中,μ(xi,yk)\mu_{(x_i,y_k)}μ(xi​,yk​)​,σ(xi,yk)2\sigma_{(x_i,y_k)}^{2}σ(xi​,yk​)2​表示yky_kyk​类下第iii个特征的均值和方差。
    由于特征之间的独立性,很容易得到:
    P(X=x∣Y=yk)=∏i=1ng(xi;μ(xi,yk),σ(xi,yk))P(X=x|Y=y_k)=\prod_{i=1}^{n}g(x_i;\mu_{(x_i,y_k)},\sigma_{(x_i,y_k)}) P(X=x∣Y=yk​)=i=1∏n​g(xi​;μ(xi​,yk​)​,σ(xi​,yk​)​)
    接着就是对参数进行估计,计算得到μ(xi,yk)\mu_{(x_i,y_k)}μ(xi​,yk​)​和σ(xi,yk)\sigma_{(x_i,y_k)}σ(xi​,yk​)​。
  • 参数估计
    先验概率P(yk)P(y_k)P(yk​)还是进行统计计算即可。而均值和方差需要通过极大似然估计来计算。其中:
  • 均值的估计μ(xi,yk)\mu_{(x_i,y_k)}μ(xi​,yk​)​是在样本类别yky_kyk​中,所有xix_ixi​的平均值;
  • 方差的估计σ(xi,yk)\sigma_{(x_i,y_k)}σ(xi​,yk​)​为样本类别yky_kyk​中所有xix_ixi​的方差。
    对于一个连续的样本值,带入高斯分布,就可以求出它的概率分布了。得出分布后很轻松的可以计算得到分类器的表达式。

在实际的应用中可以使用sklearn.naive_bayes.GaussianNB,即可完成分类器的训练。

2.3 伯努利模型

与多项式模型一样,伯努利模型适用于离散特征的情况,但不同的是,伯努利模型中每个特征的取值只能是1和0(以文本分类为例,某个单词在文档中出现过,则其特征值为1,否则为0)。
伯努利模型中,条件概率P(xi∣yk)P(x_i|y_k)P(xi​∣yk​)的计算方式是:
当特征值xix_ixi​为1时,P(xi∣yk)=P(xi=1∣yk)P(x_i|y_k)=P(x_i=1|y_k)P(xi​∣yk​)=P(xi​=1∣yk​);
当特征值xix_ixi​为0时,P(xi∣yk)=1−P(xi=1∣yk)P(x_i|y_k)=1−P(x_i=1|y_k)P(xi​∣yk​)=1−P(xi​=1∣yk​)。

在实际的应用中可以使用sklearn.naive_bayes.BernoulliNB,即可完成分类器的训练。

感谢阅读。

如果觉得文章对你有所帮助,欢迎打赏哦~

朴素贝叶斯算法机器常用模型解析相关推荐

  1. k近邻算法,朴素贝叶斯算法,分类模型评估,模型调优

    k近邻算法,朴素贝叶斯算法,分类模型评估,模型调优 k近邻算法 k近邻算法概述 k近邻算法代码实现 k近邻算法的评价 朴素贝叶斯算法 朴素贝叶斯算法概述 朴素贝叶斯代码实现 朴素贝叶斯的评价 分类模型 ...

  2. 朴素贝叶斯算法的介绍

    一.朴素贝叶斯算法的介绍 1.什么是朴素贝叶斯算法? 朴素贝叶斯算法(Naive Bayes Algorithm)是一种基于贝叶斯定理和特征独立性假设的概率分类算法.它被广泛应用于文本分类.垃圾邮件过 ...

  3. 5 机器学习 朴素贝叶斯算法 高斯模型 多项式模型 伯努利模型 拉普拉普平滑系数 TfidfVectorizer

    机器学习 1 朴素贝叶斯算法 1.1 朴素贝叶斯算法介绍 朴素贝叶斯算法是一种衡量标签和特征之间概率关系的监督学习算法,是一种专注于分类的算法."朴素"二字表示这个算法基于一个朴素 ...

  4. 数学角度解析朴素贝叶斯算法

    简介 朴素贝叶斯算法仍然是流行的十大挖掘算法之一,也是是文本分析领域最为常用的算法之一,该算法是有监督的学习算法,解决的是分类问题,如客户是否流失.是否值得投资.信用等级评定等多分类问题.该算法的优点 ...

  5. 朴素贝叶斯算法+模型的评价-查准率、召回率、F1-score及混淆矩阵(code实现)

    1.介绍 朴素贝叶斯算法是基于贝叶斯定理与特征条件独立假设的分类算法. 朴素:特征条件独立. 贝叶斯:基于贝叶斯定理.

  6. 算法高级(43)-过滤垃圾邮件、短信?-朴素贝叶斯算法

    一.算法介绍 朴素贝叶斯算法,简称NB算法,是贝叶斯决策理论的一部分,是基于贝叶斯定理与特征条件独立假设的分类方法. 两个重要概念: 先验概率是指根据以往经验和分析得到的概率,它往往作为"由 ...

  7. 人工智能知识全面讲解:垃圾邮件克星——朴素贝叶斯算法

    6.1 什么是朴素贝叶斯 6.1.1 一个流量预测的场景 某广告平台接到小明和小李两家服装店的需求,准备在A.B两个线上渠道 投放广告.因为小明和小李两家店都卖女装,属于同一行业相同品类的广告, 所以 ...

  8. 机器学习(7): 朴素贝叶斯算法 小结及实验

    文章目录 1 朴素贝叶斯简介 2 条件概率与全概率公式 3 贝叶斯推断 4 引例 5 朴素贝叶斯算法分类 (1) GaussianNB (2) MultinomialNB (3) BernoulliN ...

  9. 贝叶斯文本分类python_scikit_learn 中朴素贝叶斯算法做文本分类的 实践总结

    朴素贝叶斯算法对于分类非常高效 想了解的可以参考这篇博文:贝叶斯从浅入深详细解析,详细例子解释 - zwan0518的专栏 - 博客频道 - CSDN.NET贝叶斯从浅入深 先来做个小小总结说明 在这 ...

最新文章

  1. Google guava cache源码解析1--构建缓存器(3)
  2. 雅虎宣布关闭旗下7个数字杂志
  3. UIWebView内存泄露问题解决方法
  4. PostgreSQL在何处处理 sql查询之二十一
  5. 30. Leetcode 83. 删除排序链表中的重复元素 (链表-双指针)
  6. 第四范式团队KDD Cup世界冠军方案详解:解密共享出行场景中的优化问题
  7. 图形结构:遍历模型,分治法,动态规划,回溯法,BFS,DFS
  8. 测试点解析:1049 数列的片段和_12行代码AC
  9. sku设计mysql_基于spring boot拥有完整sku和下单流程的完全商城
  10. python深度优先_python数据结构之图深度优先和广度优先实例详解
  11. Entity Framework ---初见
  12. 双拼输入法键位图_你知道双拼输入法吗?
  13. 苹果系统上安装linux系统,Mac OS X下制作安装Linux系统的USB启动盘
  14. 【SpringBoot_ANNOTATIONS】组件注册 05 @Lazy 懒加载
  15. 2019 SD卡、U盘无法格式化怎么办的解决方法
  16. MongoDB(四)——GridFS
  17. 做个全栈工程师真的好吗?
  18. 线上展会APP开发解决方案
  19. 我的北大考古,我的无悔选择。
  20. 如何使用Node.js连接数据库

热门文章

  1. 讲述java资源关闭 -莫问身后事
  2. 计算机在开机后显示器在显示桌面,电脑开机后显示屏一片空白
  3. 利用JavaScript计算圆的面积
  4. 网络营销实战课-笔记5
  5. java 字符串驻留_实例讲解字符串驻留机制
  6. L1-057 PTA使我精神焕发 (5 分) 天梯赛 详解
  7. 【ACM】杭电1178:Heritage from father 小心溢出!
  8. ASP.NET(C#)常用数据加密和解密方法
  9. unity脚本学习3
  10. 看门狗2服务器位置,看门狗2怎么爬进服务器 | 手游网游页游攻略大全