文章目录

  • 一、 朴素贝叶斯
    • 1、概率基础知识:
    • 2、朴素贝叶斯模型流程:
      • ①计算流程:
      • ②三个阶段:
    • 3、拉普拉斯平滑
  • 二、 半朴素贝叶斯分类器
    • 概念
  • 三、朴素贝叶斯的面试题

一、 朴素贝叶斯

1、概率基础知识:

条件概率是指事件A在另外一个事件B已经发生条件下的发生概率。 条件概率表示为: P(A|B), 读作“在B条件下A的概率”。
若只有两个事件A, B, 那么:
P(AB)=P(A∣B)P(B)=P(B∣A)P(A)P(AB) = P(A|B)P(B)=P(B|A)P(A) P(AB)=P(A∣B)P(B)=P(B∣A)P(A)
P(A∣B)=P(AB)P(B)P(A|B) = \frac{P(AB)}{P(B)} P(A∣B)=P(B)P(AB)​
那么:
P(A∣B)=P(B∣A)∗P(A)P(B)P(A|B) = \frac{P(B|A)*P(A)}{P(B)} P(A∣B)=P(B)P(B∣A)∗P(A)​

全概率公式: 表示若事件A1,A2,…,An构成一个完备事件组且都有正概率,则对任意一个事件B都有公式成立。

P(B)=P(A1B)+P(A2B)+...+P(AnB)=∑P(AiB)=∑P(B∣Ai)∗P(Ai)\begin{aligned} P(B) &= P(A_1B)+P(A_2B)+...+P(A_nB) \\ &=\sum{}P(A_iB) \\ &=\sum{}P(B|A_i)*P(A_i) \end{aligned} P(B)​=P(A1​B)+P(A2​B)+...+P(An​B)=∑P(Ai​B)=∑P(B∣Ai​)∗P(Ai​)​

贝叶斯公式是将全概率公式带入到条件概率公式当中, 对于事件Ak和事件B有:
P(Ak∣B)=P(B∣Ak)∗P(Ak)∑P(B∣Ai)∗P(Ai)P(A_k|B)=\frac{P(B|A_k)*P(A_k)}{\sum{}P(B|A_i)*P(A_i)} P(Ak​∣B)=∑P(B∣Ai​)∗P(Ai​)P(B∣Ak​)∗P(Ak​)​
对于P(Ak∣B)P(A_k|B)P(Ak​∣B)来说, 分母 ∑P(B∣Ai)∗P(Ai)∑P(B|A_i)*P(A_i)∑P(B∣Ai​)∗P(Ai​) 为一个固定值, 因为我们只需要比较P(Ak∣B)P(A_k|B)P(Ak​∣B)的大小,
所以可以将分母固定值去掉, 并不会影响结果。 因此, 可以得到下面公式:
P(Ak∣B)=P(Ak)∗P(B∣Ak)P(A_k|B)=P(A_k)*P(B|A_k) P(Ak​∣B)=P(Ak​)∗P(B∣Ak​)
$P(A_k) $先验概率, P(Ak∣B)P(A_k|B)P(Ak​∣B) 后验概率, P(B∣Ak)P(B|A_k)P(B∣Ak​) 似然函数
先验*似然=后验

特征条件独立假设在分类问题中,常常需要把一个事物分到某个类别中。 一个事物又有许多属性,即x=(x1,x2,···,xn)。常常类别也是多个, 即y=(y1,y2,⋅⋅⋅,yk)。P(y1∣x),P(y2∣x),…,P(yk∣x)y=(y_1,y_2,···,y_k)。P(y_1|x),P(y_2|x),…,P(y_k|x)y=(y1​,y2​,⋅⋅⋅,yk​)。P(y1​∣x),P(y2​∣x),…,P(yk​∣x), 表示x属于某个分类的概率,那么,我们需要找出其中最大的那个概率P(yk|x), 根据上一步得到的公式可得:
P(yk∣x)=P(yk)∗P(x∣yk)P(y_k|x) = P(y_k)*P(x|y_k) P(yk​∣x)=P(yk​)∗P(x∣yk​)

就样本x有n个属性:x=(x1,x2,⋅⋅⋅,xn)x=(x_1,x_2,···,x_n)x=(x1​,x2​,⋅⋅⋅,xn​)
所以:P(yk∣X)=P(yk)∗P(x1,x2,⋅⋅⋅,xn∣yk)P(y_k|X) =P(y_k) * P(x_1,x_2,···,x_n|y_k)P(yk​∣X)=P(yk​)∗P(x1​,x2​,⋅⋅⋅,xn​∣yk​)
条件独立假设,就是各条件之间互不影响
所以样本的联合概率就是连乘:P(x1,x2,⋅⋅⋅,xn∣yk)=∏P(xi∣yk)P(x_1,x_2,···,x_n|y_k) = ∏P(x_i|y_k)P(x1​,x2​,⋅⋅⋅,xn​∣yk​)=∏P(xi​∣yk​)
最终公式为:P(yk∣x)=P(yk)∗∏P(xi∣yk)P(y_k|x) =P(y_k) * ∏P(x_i|y_k)P(yk​∣x)=P(yk​)∗∏P(xi​∣yk​)
根据公式P(yk∣x)=P(yk)∗∏P(xi∣yk)P(y_k|x) =P(y_k) * ∏P(x_i|y_k)P(yk​∣x)=P(yk​)∗∏P(xi​∣yk​), 就可以做分类问题了

朴素贝叶斯公式:
P(yk∣x)=P(yk)∗∏P(xi∣yk)P(y_k|x) =P(y_k) * ∏P(x_i|y_k) P(yk​∣x)=P(yk​)∗∏P(xi​∣yk​)

【例2】一起汽车撞人逃跑事件,已知只有两种颜色的车,比例为蓝色15% 绿色85%,目击者指证是蓝车,但根据现场分析,当时那种条件目击者看正确车的颜色的可能性是
80%,那么,肇事的车是蓝车的概率到底是多少()
答案:
设A={目击者看到车是蓝色的}, B={车的实际颜色是蓝色}
P(A)=80%×15%+20%×85%=29%
即: 车是蓝色(15%)×目击者看正确(80%)+车是绿色(85%)×目击
者看错了(20%)
P(AB)=80%×15%=12%
即: 车是蓝色(15%)×目击者看正确(80%)
P(B|A)=P(AB)/P(A)=12%/29%≈41%

2、朴素贝叶斯模型流程:

**朴素贝叶斯的基本方法:**在统计数据的基础上,依据条件概率公式,计算当前特征的样本属于某个分类的概率,选最大的概率分类

对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就认为此待分类项属于哪个类别:

①计算流程:

(1) x={a1,a2,....,am}x =\{a_1,a_2,....,a_m\}x={a1​,a2​,....,am​}为待分类项, 每个a为x的一个特征属性
(2)有类别集合$C= {y_1,y_2,…,y_n} $
(3)计算P(y1∣x),P(y2∣x),...,P(yn∣x)P(y_1|x),P(y_2|x),...,P(y_n|x)P(y1​∣x),P(y2​∣x),...,P(yn​∣x)
(4)如果P(yk∣x)=max{P(y1∣x),P(y2∣x),...,P(yn∣x)}P(y_k|x) = max\{P(y_1|x),P(y_2|x),...,P(y_n|x)\}P(yk​∣x)=max{P(y1​∣x),P(y2​∣x),...,P(yn​∣x)}

如何计算第3步中的各个条件概率?
课堂案例-2
1、 找到一个已知分类的待分类项集合,这个集合叫做训练样本集。
2、 统计得到在各类别下各个特征属性的条件概率估计。 即:
$P(a_1|y_1),P(a_2,y_2),…,P(a_m|y_1) $
3、 如果各个特征属性是条件独立的,则根据贝叶斯定理有如下推导:
P(yi∣x)=P(x∣yi)P(yi)P(x)P(y_i|x)=\frac{P(x|y_i)P(y_i)}{P(x)} P(yi​∣x)=P(x)P(x∣yi​)P(yi​)​
因为分母对于所有类别为常数, 因为我们只要将分子最大化皆可。 又因为各特征属性是条
件独立的, 所以有:
$P(y_k|x) =P(y_k) * ∏P(x_i|y_k) $
P(x∣yi)P(yi)=P(ai∣yi)P(a2∣yi)...P(am∣yi)P(yi)=P(yi)∏j=1mP(aj∣yi)P(x|y_i)P(y_i)=P(a_i|y_i)P(a_2|y_i)...P(a_m|y_i)P(y_i)=P(y_i)\prod_{j=1}^mP(a_j|y_i) P(x∣yi​)P(yi​)=P(ai​∣yi​)P(a2​∣yi​)...P(am​∣yi​)P(yi​)=P(yi​)j=1∏m​P(aj​∣yi​)

例题:

②三个阶段:

第一阶段——准备阶段, 根据具体情况确定特征属性, 对每个特征属性进行适当划分, 然后由人工对一部分待分类项进行分类,形成训练样本集合。这一阶段的输入是所有待分类数据,输出是特征属性和训练样本。这一阶段是整个朴素贝叶斯分类中唯一需要人工完成的阶段, 其质量对整个过程将有重要影响,分类器的质量很大程度上由特征属性、特征属性划分及训练样本质量决定。

第二阶段——分类器训练阶段, 这个阶段的任务就是生成分类器,主要工作是计算每个类别在训练样本中的出现频率及每个特征属性划分对每个类别的条件概率估计, 并将结果记录。 其输入是特征属性和训练样本,输出是分类器。这一阶段是机械性阶段, 根据前面讨论的公式可以由程序自动计算完成。

第三阶段——应用阶段。 这个阶段的任务是使用分类器对待分类项进行分类, 其输入是分类器
和待分类项, 输出是待分类项与类别的映射关系。这一阶段也是机械性阶段, 由程序完成。

3、拉普拉斯平滑

为了解决零概率的问题,法国数学家拉普拉斯最早提出用加1的方法估计没有出现过的现象的概率,所以加法平滑也叫做拉普拉斯平滑。假定训练样本很大时,每个分量x的计数加1造成的估计概率变化可以忽略不计,但可以方便有效的避免零概率问题。

公式P(yk∣x)=P(yk)∗∏P(xi∣yk)P(y_k|x) =P(y_k) * ∏P(x_i|y_k)P(yk​∣x)=P(yk​)∗∏P(xi​∣yk​), 是一个多项乘法公式, 其中有一项数值为0, 则整个公式就为
0, 显然不合理, 避免每一项为零的做法就是, 在分子、 分母上各加一个数值。
P(y)=∣Dy∣+1∣D∣+NP(y)=\frac{|D_y|+1}{|D|+N} P(y)=∣D∣+N∣Dy​∣+1​
∣Dy∣|D_y|∣Dy​∣表示分类y的样本数,|D|样本总数,N是样本总数加上分类总数
P(xi∣Dy)=∣Dy,xi∣+1∣Dy∣+NiP(x_i|D_y) = \frac{|D_y,x_i|+1}{|D_y|+N_i} P(xi​∣Dy​)=∣Dy​∣+Ni​∣Dy​,xi​∣+1​
∣Dy,xi∣|D_y,x_i|∣Dy​,xi​∣表示分类y属性i的样本数, ∣Dy∣|D_y|∣Dy​∣表示分类y的样本数, Ni表示i属性的可能的取值数
例子:
假设在文本分类中,有3个类,C1、C2、C3,在指定的训练样本中, 某个词语K1,在各个类中观测计数分别为0, 990, 10, K1的概率为0, 0.99,0.01,对这三个量使用拉普拉斯平滑的计算方法如下:
1/1003 = 0.001, 991/1003=0.988, 11/1003=0.011
在实际的使用中也经常使用加 λ\lambdaλ(1≥λ≥01≥\lambda≥01≥λ≥0) 来代替简单加1。 如果对N个计数都加上λ\lambdaλ, 这时分母也要记得加上N∗λN*\lambdaN∗λ。

二、 半朴素贝叶斯分类器

概念

在朴素的分类中, 我们假定了各个属性之间的独立,这是为了计算方便,防止过多的属性之间的依赖导致的大量计算。这正是朴素的含义,虽然朴素贝叶斯的分类效果不错,但是属性之间毕竟是有关联的, 某个属性依赖于另外的属性, 于是就有了半朴素贝叶斯分类器:

因此, 对某个样本x 的预测朴素贝叶斯公式就由如下:

h(x)=max(P(c)∏i=1dP(Xi∣c))h(x)=max(P(c)\prod_{i=1}^dP(X_i|c)) h(x)=max(P(c)i=1∏d​P(Xi​∣c))
修正为如下的半朴素贝叶斯分类器公式:
h(x)=max(P(c)∏i=1dP(Xi∣pai))h(x)=max(P(c)\prod_{i=1}^dP(X_i|pa_i)) h(x)=max(P(c)i=1∏d​P(Xi​∣pai​))
从上式中, 可以看到类条件概率 P(xi | c) 修改为了 xi 依赖于分类c 和 一个依赖属性pai
上述超父ODE算法: SPODE。 显然, 这个算法是每个属性值只与其他唯一 一个有依赖关
系。 基于它之上, 又提出另一种基于集成学习机制, 更为强大的独依赖分类器, AODE,
算法思路很简单, 就是在SPODE算法的基础上在外面包一个循环, 就是尝试将每个属性
作为超父属性来构建SPODE, 请看下面的公式, 在SPODE外面包了一个循环, 然后求它
们的和作为当前预测样本的分类:
h(x)=max(∑j=1dP(c,xj)∏i=1dP(xi∣c,xj))h(x)=max(\sum_{j=1}^dP(c,x_j)\prod_{i=1}^dP(x_i|c,x_j)) h(x)=max(j=1∑d​P(c,xj​)i=1∏d​P(xi​∣c,xj​))
1.SOPDE方法。 这种方法是假定所有的属性都依赖于共同的一个父属性。
2.TAN方法。 每个属性依赖的另外的属性由最大带权生成树来确定。
(1) 先求每个属性之间的互信息来作为他们之间的权值。
(2) 构件完全图。 权重是刚才求得的互信息。然后用最大带权生成树算法求得此图的最大带权的生成树。
(3) 找一个根变量, 然后依次将图变为有向图。
(4) 添加类别y到每个属性的的有向边。
3 . 朴素贝叶斯与两种半朴素贝叶斯分类器所考虑的属性依赖关系, 假定每个属性仅依赖于
其他最多一个属性, 称其依赖的这个属性为其超父属性, 这种关系称为: 独依赖估计
(ODE) 。

三、朴素贝叶斯的面试题

1、 朴素贝叶斯与LR的区别?
简单来说:朴素贝叶斯是生成模型,根据已有样本进行贝叶斯估计学习出先验概率P(Y)和条件概率P(X|Y),进而求出联合分布概率P(XY),最后利用贝叶斯定理求解P(Y|X), 而LR是判别模型,根据极大化对数似然函数直接求出条件概率P(Y|X);朴素贝叶斯是基于很强的条件独立假设(在已知分类Y的条件下,各个特征变量取值是相互独立的),而LR则对此没有要求;朴素贝叶斯适用于数据集少的情景,而LR适用于大规模数据集。

2、朴素贝叶斯“朴素”在哪里?
简单来说:利用贝叶斯定理求解联合概率P(XY)时,需要计算条件概率P(X|Y)。在计算P(X|Y)时,朴素贝叶斯做了一个很强的条件独立假设(当Y确定时,X的各个分量取值之间相互独立),即P(X1=x1,X2=x2,…Xj=xj|Y=yk) = P(X1=x1|Y=yk)P(X2=x2|Y=yk)…*P(Xj=xj|Y=yk)。

3、 在估计条件概率P(X|Y)时出现概率为0的情况怎么办?
简单来说:引入λ,当λ=1时称为拉普拉斯平滑。

4、 朴素贝叶斯的优缺点
优点:对小规模的数据表现很好,适合多分类任务,适合增量式训练。
缺点:对输入数据的表达形式很敏感(离散、连续,值极大极小之类的)。

重点:
面试的时候怎么回答朴素贝叶斯呢?
首先朴素贝斯是一个生成模型(很重要),其次它通过学习已知样本,计算出联合概率,再求条件概率。

生成模式和判别模式的区别:
生成模式:由数据学得联合概率分布,求出条件概率分布P(Y|X)的预测模型;
常见的生成模型有:朴素贝叶斯、隐马尔可夫模型、高斯混合模型、文档主题生成模型(LDA)、限制玻尔兹曼机
判别模式:由数据学得决策函数或条件概率分布作为预测模型
常见的判别模型有:K近邻、SVM、决策树、感知机、线性判别分析(LDA)、线性回归、传统的神经网络、逻辑斯蒂回归、boosting、条件随机场

机器学习之朴素贝叶斯算法详解相关推荐

  1. 朴素贝叶斯 php,PHP实现机器学习之朴素贝叶斯算法详解.pdf

    PHP实实现现机机器器学学习习之之朴朴素素贝贝叶叶斯斯算算法法详详解解 本文实例讲述了PHP实现机器学习之朴素贝叶斯算法.分享给大家供大家参考 具体如下: 机器学习已经在我们的生活中变得随处可见了.比 ...

  2. 朴素贝叶斯算法详解及python代码实现

    朴素贝叶斯算法 算法原理 对数据的要求 算法的优缺点 算法需要注意的点 算法实现(python)(待更.......) 算法原理 P(Ck∣xi)=p(xi∣ck)∗p(ck)p(xi)=p(x1∣c ...

  3. 机器学习实战---朴素贝叶斯算法实现+使用K折交叉验证(代码详解+创新)

    <机器学习实战朴素贝叶斯算法实现+使用K折交叉验证> 未经允许,不得擅自转载! 提供数据集如下(永久有效,需要的自行下载): 链接:https://pan.baidu.com/s/1Sv0 ...

  4. 【机器学习】贝叶斯算法详解 + 公式推导 + 垃圾邮件过滤实战 + Python代码实现

    文章目录 一.贝叶斯简介 二.贝叶斯公式推导 三.拼写纠正案例 四.垃圾邮件过滤案例 4.1 问题描述 4.2 朴素贝叶斯引入 五.基于朴素贝叶斯的垃圾邮件过滤实战 5.1 导入相关库 5.2 邮件数 ...

  5. matlab算法用python做_机器学习笔记—朴素贝叶斯算法实现(matlab/python)

    原理知道一百遍不如自己动手写一遍,当然,现在基本上不需要自己来写算法的底层code了,各路大神们已经为我等凡夫俗子写好了,直接调用就行. 这里介绍在MATLAB中和Python中应用贝叶斯算法的小例子 ...

  6. 机器学习之朴素贝叶斯算法

    作者:RayChiu_Labloy 版权声明:著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处 目录 贝叶斯公式与朴素贝叶斯算法 贝叶斯公式推导 用机器学习的视角理解贝叶斯公式 NB ...

  7. 【机器学习】朴素贝叶斯算法

    朴素贝叶斯(Naive Bayes)是经典的机器学习算法之一,也是为数不多的基于概率论的分类算法.由于朴素贝叶斯计算联合概率,所以朴素贝叶斯模型属于生成式模型.经典应用案例包括:文本分类.垃圾邮件过滤 ...

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

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

  9. 机器学习基础 朴素贝叶斯算法

    文章目录 一. 朴素贝叶斯算法简介 二.概率基础复习 1.概率定义 2.案例:判断女神对你的喜欢情况 3.联合概率.条件概率与相互独立 4.贝叶斯公式 4.1 公式介绍 4.2 案例计算 4.3 文章 ...

最新文章

  1. illegalstateexception是什么异常_异常源码分析—告诉你学习“源码”究竟有什么用!...
  2. let const var 比较说明
  3. python浏览器自动化测试库【2018/7/27-更新】
  4. spring入门案例
  5. 做事情一定要从小事情着手
  6. struct的初始化
  7. 用于Elasticsearch成绩单的Java客户端
  8. 数据库系统内部体系结构与外部体系结构
  9. 云云协同解决方案全景图发布 华为云助力科技企业云上创新
  10. woff字体MIME类型配置
  11. Win10安装配置CLion+MinGW
  12. 趣闻|论文不必参考任何文献?看到作者,网友大呼失敬了
  13. 【MPLS ***】基础知识:模型、PE路由器、VRF、RD及RT
  14. 中国贻贝养殖种类、养殖面积、养殖产量和进出口量分析「图」
  15. Go语言 gorutine和channel协同工作经典应用案例 (Golang经典编程案例)
  16. Win10系统遇到驱动需要数字签名无法安装问题的解决方法(手机通过数据线无法链接电脑)
  17. unity reflect_使用Unity Reflect的不同方法
  18. IDEA全局配置图文教程
  19. Qt之实现图片轮播效果
  20. 20届最难毕业的前端程序员的一年前端工作经验总结

热门文章

  1. 计算机视觉之图像增广(翻转、随机裁剪、颜色变化[亮度、对比度、饱和度、色调])
  2. 批量创建Azure DevOps Server 的账户
  3. 生活记录:突然“醒来”
  4. android ios 微信 备份通讯录备份通讯录,苹果手机怎么备份通讯录?手机通讯录微信联系人备份教程...
  5. Python中第三方库-Faker应用
  6. 【haoi2009】毛毛虫
  7. USTCOJ 1382 毛毛虫
  8. win10ltsc转版本,win10ltsc升级win11,无损
  9. 服务器显示ipv4有两个ip地址,ipconfig命令后为什么出现两个IPV4地址?
  10. yolov5方框的颜色及粗细更改