机器学习之朴素贝叶斯模型

编程入门 行业动态 更新时间:2024-10-08 04:26:58

机器学习之<a href=https://www.elefans.com/category/jswz/34/1743724.html style=朴素贝叶斯模型"/>

机器学习之朴素贝叶斯模型

朴素贝叶斯

1、什么是朴素贝叶斯算法

(1)字面理解:朴素贝叶斯 = “朴素”+贝叶斯

朴素:假定特征之间都是条件独立的(这里理解起来比较抽象,后续使用具体实例说明)

贝叶斯:贝叶斯定理
p ( y ∣ x ) = p ( x ∣ y ) ∗ p ( y ) p ( x ) 证 明 : p ( x , y ) = p ( x ∣ y ) ∗ p ( y ) = p ( y ∣ x ) ∗ p ( x ) 移 项 得 : p ( y ∣ x ) = p ( x ∣ y ) ∗ p ( y ) p ( x ) p(y|x) = \frac{p(x|y)*p(y)}{p(x)} \\证明:p(x,y) = p(x|y)*p(y) = p(y|x)*p(x)\\移项得:p(y|x) = \frac{p(x|y)*p(y)}{p(x)} p(y∣x)=p(x)p(x∣y)∗p(y)​证明:p(x,y)=p(x∣y)∗p(y)=p(y∣x)∗p(x)移项得:p(y∣x)=p(x)p(x∣y)∗p(y)​
说明:

1)p(y|x):后验概率

2)p(x|y):似然概率

3)p(y):先验概率

4)p(x):样本数据的所有特征

(2)官方解释:朴素贝叶斯分类(NBC)是以贝叶斯定理为基础并且假设特征条件之间相互独立的方法,先通过已给定的训练集,以特征词之间独立作为前提假设,学习从输入到输出的联合概率分布,再基于学习到的模型,输入X求出使得后验概率最大的输出Y。(来自于百度百科)

2、朴素贝叶斯的应用

1)各类文本分析的任务,比如垃圾邮件的分类,文本主题分类,情感分析

2)文字识别

3)图像识别

3、使用朴素贝叶斯对垃圾邮件进行分类

这里用一个具体的实例来分享朴素贝叶斯模型,能够更直观的理解朴素贝叶斯模型

3.1、朴素贝叶斯对垃圾邮件分类的两个步骤

1)统计出每一个单词对一个邮件成为垃圾邮件或正常邮件的概率

2)用这些统计的结果对一个新的邮件做预测

3.2、实现

1)例:现若干邮件,其中有正常邮件,有垃圾邮件,邮件中出现了”购买“,”物品“,”不是“,”广告“,”这“等词…我们分别统计这些词出现在正常邮件中的个数,出现在垃圾邮件中的个数

则正常邮件含有”购买“,”物品“,”不是“,”广告“,”这“词的概率为
p ( 购 买 ∣ 正 常 邮 件 ) = 1 80 p ( 物 品 ∣ 正 常 邮 件 ) = 1 60 p ( 不 是 ∣ 正 常 邮 件 ) = 1 60 p ( 广 告 ∣ 正 常 邮 件 ) = 1 48 p ( 这 ∣ 正 常 邮 件 ) = 1 80 p ( 正 常 ) = 2 3 ( 分 子 : 所 有 邮 件 中 正 常 邮 件 的 个 数 ; 分 母 : 邮 件 的 总 数 ) \begin{aligned} p(购买|正常邮件)&=\frac{1}{80}\\p(物品|正常邮件)&=\frac{1}{60}\\p(不是|正常邮件)&=\frac{1}{60}\\p(广告|正常邮件)&=\frac{1}{48}\\p(这|正常邮件)&=\frac{1}{80}\\p(正常)&=\frac{2}{3}\quad (分子:所有邮件中正常邮件的个数;分母:邮件的总数) \end{aligned} p(购买∣正常邮件)p(物品∣正常邮件)p(不是∣正常邮件)p(广告∣正常邮件)p(这∣正常邮件)p(正常)​=801​=601​=601​=481​=801​=32​(分子:所有邮件中正常邮件的个数;分母:邮件的总数)​
垃圾邮件含有”购买“,”物品“,”不是“,”广告“,”这“词的概率为
p ( 购 买 ∣ 垃 圾 邮 件 ) = 7 120 p ( 物 品 ∣ 垃 圾 邮 件 ) = 1 30 p ( 不 是 ∣ 垃 圾 邮 件 ) = 1 40 p ( 广 告 ∣ 垃 圾 邮 件 ) = 1 30 p ( 这 ∣ 垃 圾 邮 件 ) = 0 p ( 正 常 ) = 2 3 ( 分 子 : 所 有 邮 件 中 垃 圾 邮 件 的 个 数 ; 分 母 : 邮 件 的 总 数 ) \begin{aligned} p(购买|垃圾邮件)&=\frac{7}{120}\\p(物品|垃圾邮件)&=\frac{1}{30}\\p(不是|垃圾邮件)&=\frac{1}{40}\\p(广告|垃圾邮件)&=\frac{1}{30}\\p(这|垃圾邮件)&=0\\p(正常)&=\frac{2}{3}\quad (分子:所有邮件中垃圾邮件的个数;分母:邮件的总数) \end{aligned} p(购买∣垃圾邮件)p(物品∣垃圾邮件)p(不是∣垃圾邮件)p(广告∣垃圾邮件)p(这∣垃圾邮件)p(正常)​=1207​=301​=401​=301​=0=32​(分子:所有邮件中垃圾邮件的个数;分母:邮件的总数)​
收到了新的一份邮件E(购买物品这不是广告),属于垃圾邮件还是正常邮件?
p ( E ∣ 正 常 邮 件 ) = p ( 购 买 , 物 品 , 这 , 不 是 , 广 告 ∣ 正 常 邮 件 ) ∗ p ( 正 常 邮 件 ) p ( 邮 件 内 容 ) = p ( 购 买 ∣ 正 常 邮 件 ) ∗ p ( 物 品 ∣ 正 常 邮 件 ) ∗ p ( 这 ∣ 正 常 邮 件 ) ∗ p ( 不 是 ∣ 正 常 邮 件 ) ∗ p ( 广 告 ∣ 正 常 邮 件 ) ∗ p ( 正 常 邮 件 ) p ( 邮 件 内 容 ) ( 在 这 里 我 们 把 联 合 概 率 转 换 成 了 条 件 概 率 , 前 提 就 是 一 开 始 我 提 到 的 “ 朴 素 ” , 如 果 没 有 这 个 条 件 , 两 式 是 不 能 划 等 号 的 ) = 1 80 ∗ 1 60 ∗ 1 80 ∗ 1 60 ∗ 1 48 ∗ 2 3 p ( 邮 件 内 容 ) p ( E ∣ 垃 圾 邮 件 ) = p ( 购 买 , 物 品 , 这 , 不 是 , 广 告 ∣ 垃 圾 邮 件 ) ∗ p ( 垃 圾 邮 件 ) p ( 邮 件 内 容 ) = p ( 购 买 ∣ 垃 圾 邮 件 ) ∗ p ( 物 品 ∣ 垃 圾 邮 件 ) ∗ p ( 这 ∣ 垃 圾 邮 件 ) ∗ p ( 不 是 ∣ 垃 圾 邮 件 ) ∗ p ( 广 告 ∣ 垃 圾 邮 件 ) ∗ p ( 垃 圾 邮 件 ) p ( 邮 件 内 容 ) = 7 120 ∗ 1 30 ∗ 0 ∗ 1 40 ∗ 1 30 ∗ 1 3 p ( 邮 件 内 容 ) \begin{aligned} p(E|正常邮件) &= \frac{p(购买,物品,这,不是,广告|正常邮件)*p(正常邮件)}{p(邮件内容)}\\ &=\frac{p(购买|正常邮件)*p(物品|正常邮件)*p(这|正常邮件)*p(不是|正常邮件)*p(广告|正常邮件)*p(正常邮件)}{p(邮件内容)} {\quad(在这里我们把联合概率转换成了条件概率,前提就是一开始我提到的“朴素”,如果没有这个条件,两式是不能划等号的)}\\ &=\frac{\frac{1}{80}*\frac{1}{60}*\frac{1}{80}*\frac{1}{60}*\frac{1}{48}*\frac{2}{3}}{p(邮件内容)}\\ p(E|垃圾邮件) &= \frac{p(购买,物品,这,不是,广告|垃圾邮件)*p(垃圾邮件)}{p(邮件内容)}\\ &=\frac{p(购买|垃圾邮件)*p(物品|垃圾邮件)*p(这|垃圾邮件)*p(不是|垃圾邮件)*p(广告|垃圾邮件)*p(垃圾邮件)}{p(邮件内容)} \\ &=\frac{\frac{7}{120}*\frac{1}{30}*0*\frac{1}{40}*\frac{1}{30}*\frac{1}{3}}{p(邮件内容)} \end{aligned} p(E∣正常邮件)p(E∣垃圾邮件)​=p(邮件内容)p(购买,物品,这,不是,广告∣正常邮件)∗p(正常邮件)​=p(邮件内容)p(购买∣正常邮件)∗p(物品∣正常邮件)∗p(这∣正常邮件)∗p(不是∣正常邮件)∗p(广告∣正常邮件)∗p(正常邮件)​(在这里我们把联合概率转换成了条件概率,前提就是一开始我提到的“朴素”,如果没有这个条件,两式是不能划等号的)=p(邮件内容)801​∗601​∗801​∗601​∗481​∗32​​=p(邮件内容)p(购买,物品,这,不是,广告∣垃圾邮件)∗p(垃圾邮件)​=p(邮件内容)p(购买∣垃圾邮件)∗p(物品∣垃圾邮件)∗p(这∣垃圾邮件)∗p(不是∣垃圾邮件)∗p(广告∣垃圾邮件)∗p(垃圾邮件)​=p(邮件内容)1207​∗301​∗0∗401​∗301​∗31​​​
通过上面的计算,我们可以看到分母相同的情况下P(E|正常邮件)明显大于P(E|垃圾邮件)=0,大家认为这个结论合理嘛?明显是不合理的,原因是或许邮件包含某个垃圾邮件的关键词,但这封邮件并不一定是垃圾邮件,同理正常邮件也是如此,导致这个问题的罪魁祸首就是某个关键词的条件概率为0,如何解决这个问题呢?答案就是采用平滑

2)什么是平滑?不说废话直接上公式
p ( w ∣ y = c ) = 语 料 库 中 的 单 词 w 出 现 的 次 数 + 1 类 别 为 c 的 语 料 库 中 包 含 所 有 的 单 词 个 数 + v v : 词 典 的 大 小 p(w|y=c)=\frac{语料库中的单词w出现的次数+1}{类别为c的语料库中包含所有的单词个数+v}\\v:词典的大小 p(w∣y=c)=类别为c的语料库中包含所有的单词个数+v语料库中的单词w出现的次数+1​v:词典的大小
这里分母为什么要加v(词典的大小)?

答:为了让每一个词的条件概率最终相加为1,假设有一个词库v=[a,b,c,d,…]T(T:转置),

则p(a|y=c)+p(b|y=c)+p(c|y=c)+p(d|y=c)+… = 1

3)现在有一个新的需求:

①垃圾邮件,包含8个词

(1)点击 更多 信息

(2)最新 产品

(3)信息 点击 链接

②正常邮件,包含 6个词

(1)开会

(2)信息 详见 邮件

(3)最新 信息

新邮件:S = 最新 产品 点击 链接 产品

新邮件S是垃圾邮件还是正常邮件?

建立词库v={点击,更多,信息,最新,产品,链接,开会,详见,邮件}

单词数量n=9
p ( 点 击 ∣ 正 常 邮 件 ) = 0 + 1 6 + 9 p ( 更 多 ∣ 正 常 邮 件 ) = 0 + 1 6 + 9 p ( 信 息 ∣ 正 常 邮 件 ) = 2 + 1 6 + 9 p ( 最 新 ∣ 正 常 邮 件 ) = 1 + 1 6 + 9 p ( 产 品 ∣ 正 常 邮 件 ) = 0 + 1 6 + 9 p ( 链 接 ∣ 正 常 邮 件 ) = 0 + 1 6 + 9 p ( 开 会 ∣ 正 常 邮 件 ) = 1 + 1 6 + 9 p ( 详 见 ∣ 正 常 邮 件 ) = 1 + 1 6 + 9 p ( 邮 件 ∣ 正 常 邮 件 ) = 1 + 1 6 + 9 p ( 正 常 邮 件 ) = 1 2 \begin{aligned} p(点击|正常邮件)&=\frac{0+1}{6+9}\\p(更多|正常邮件)&=\frac{0+1}{6+9}\\p(信息|正常邮件)&=\frac{2+1}{6+9}\\p(最新|正常邮件)&=\frac{1+1}{6+9}\\p(产品|正常邮件)&=\frac{0+1}{6+9}\\p(链接|正常邮件)&=\frac{0+1}{6+9}\\p(开会|正常邮件)&=\frac{1+1}{6+9}\\p(详见|正常邮件)&=\frac{1+1}{6+9}\\p(邮件|正常邮件)&=\frac{1+1}{6+9}\\p(正常邮件)=\frac{1}{2} \end{aligned} p(点击∣正常邮件)p(更多∣正常邮件)p(信息∣正常邮件)p(最新∣正常邮件)p(产品∣正常邮件)p(链接∣正常邮件)p(开会∣正常邮件)p(详见∣正常邮件)p(邮件∣正常邮件)p(正常邮件)=21​​=6+90+1​=6+90+1​=6+92+1​=6+91+1​=6+90+1​=6+90+1​=6+91+1​=6+91+1​=6+91+1​​

p ( 点 击 ∣ 垃 圾 邮 件 ) = 2 + 1 8 + 9 p ( 更 多 ∣ 垃 圾 邮 件 ) = 1 + 1 8 + 9 p ( 信 息 ∣ 垃 圾 邮 件 ) = 2 + 1 8 + 9 p ( 最 新 ∣ 垃 圾 邮 件 ) = 1 + 1 8 + 9 p ( 产 品 ∣ 垃 圾 邮 件 ) = 1 + 1 8 + 9 p ( 链 接 ∣ 垃 圾 邮 件 ) = 1 + 1 8 + 9 p ( 开 会 ∣ 垃 圾 邮 件 ) = 0 + 1 8 + 9 p ( 详 见 ∣ 垃 圾 邮 件 ) = 0 + 1 8 + 9 p ( 邮 件 ∣ 垃 圾 邮 件 ) = 0 + 1 8 + 9 p ( 垃 圾 邮 件 ) = 1 2 \begin{aligned} p(点击|垃圾邮件)&=\frac{2+1}{8+9}\\p(更多|垃圾邮件)&=\frac{1+1}{8+9}\\p(信息|垃圾邮件)&=\frac{2+1}{8+9}\\p(最新|垃圾邮件)&=\frac{1+1}{8+9}\\p(产品|垃圾邮件)&=\frac{1+1}{8+9}\\p(链接|垃圾邮件)&=\frac{1+1}{8+9}\\p(开会|垃圾邮件)&=\frac{0+1}{8+9}\\p(详见|垃圾邮件)&=\frac{0+1}{8+9}\\p(邮件|垃圾邮件)&=\frac{0+1}{8+9}\\p(垃圾邮件)=\frac{1}{2} \end{aligned} p(点击∣垃圾邮件)p(更多∣垃圾邮件)p(信息∣垃圾邮件)p(最新∣垃圾邮件)p(产品∣垃圾邮件)p(链接∣垃圾邮件)p(开会∣垃圾邮件)p(详见∣垃圾邮件)p(邮件∣垃圾邮件)p(垃圾邮件)=21​​=8+92+1​=8+91+1​=8+92+1​=8+91+1​=8+91+1​=8+91+1​=8+90+1​=8+90+1​=8+90+1​​

在上述计算词库中每个词的条件概率,使用加1平滑后,分母加词库的大小n=9,使P(v|正常邮件)=1;P(v|垃圾邮件)=1,可以加加看!
p ( S ∣ 正 常 邮 件 ) = p ( 最 新 , 产 品 , 点 击 , 链 接 , 产 品 ∣ 正 常 邮 件 ) ∗ p ( 正 常 邮 件 ) p ( 邮 件 内 容 ) = p ( 最 新 ∣ 正 常 邮 件 ) ∗ p ( 产 品 ∣ 正 常 邮 件 ) ∗ p ( 点 击 ∣ 正 常 邮 件 ) ∗ p ( 链 接 ∣ 正 常 邮 件 ) ∗ p ( 产 品 ∣ 正 常 邮 件 ) ∗ p ( 正 常 邮 件 ) p ( 邮 件 内 容 ) = 2 15 ∗ 1 15 ∗ 1 15 ∗ 1 15 ∗ 1 15 ∗ 1 2 p ( 邮 件 内 容 ) p ( S ∣ 垃 圾 邮 件 ) = p ( 最 新 , 产 品 , 点 击 , 链 接 , 产 品 ∣ 垃 圾 邮 件 ) ∗ p ( 正 常 邮 件 ) p ( 邮 件 内 容 ) = p ( 最 新 ∣ 垃 圾 邮 件 ) ∗ p ( 产 品 ∣ 垃 圾 邮 件 ) ∗ p ( 点 击 ∣ 垃 圾 邮 件 ) ∗ p ( 链 接 ∣ 垃 圾 邮 件 ) ∗ p ( 产 品 ∣ 垃 圾 邮 件 ) ∗ p ( 垃 圾 邮 件 ) p ( 邮 件 内 容 ) = 2 17 ∗ 2 17 ∗ 3 17 ∗ 2 17 ∗ 2 17 ∗ 1 2 p ( 邮 件 内 容 ) \begin{aligned} p(S|正常邮件)&=\frac{p(最新,产品,点击,链接,产品|正常邮件)*p(正常邮件)}{p(邮件内容)}\\ &=\frac{p(最新|正常邮件)*p(产品|正常邮件)*p(点击|正常邮件)*p(链接|正常邮件)*p(产品|正常邮件)*p(正常邮件)}{p(邮件内容)}\\ &=\frac{\frac{2}{15}*\frac{1}{15}*\frac{1}{15}*\frac{1}{15}*\frac{1}{15}*\frac{1}{2}}{p(邮件内容)}\\ p(S|垃圾邮件)&=\frac{p(最新,产品,点击,链接,产品|垃圾邮件)*p(正常邮件)}{p(邮件内容)}\\ &=\frac{p(最新|垃圾邮件)*p(产品|垃圾邮件)*p(点击|垃圾邮件)*p(链接|垃圾邮件)*p(产品|垃圾邮件)*p(垃圾邮件)}{p(邮件内容)}\\ &=\frac{\frac{2}{17}*\frac{2}{17}*\frac{3}{17}*\frac{2}{17}*\frac{2}{17}*\frac{1}{2}}{p(邮件内容)} \end{aligned} p(S∣正常邮件)p(S∣垃圾邮件)​=p(邮件内容)p(最新,产品,点击,链接,产品∣正常邮件)∗p(正常邮件)​=p(邮件内容)p(最新∣正常邮件)∗p(产品∣正常邮件)∗p(点击∣正常邮件)∗p(链接∣正常邮件)∗p(产品∣正常邮件)∗p(正常邮件)​=p(邮件内容)152​∗151​∗151​∗151​∗151​∗21​​=p(邮件内容)p(最新,产品,点击,链接,产品∣垃圾邮件)∗p(正常邮件)​=p(邮件内容)p(最新∣垃圾邮件)∗p(产品∣垃圾邮件)∗p(点击∣垃圾邮件)∗p(链接∣垃圾邮件)∗p(产品∣垃圾邮件)∗p(垃圾邮件)​=p(邮件内容)172​∗172​∗173​∗172​∗172​∗21​​​
最后我们得出:

因为p(S|正常邮件)<p(S|垃圾邮件),所以S为垃圾邮件的可能性会更大

**Tips:我们可以看到上述计算出的条件概率非常小,在计算机中容易出现”溢出的现象“,为了避免该问题我们加入log,这样log(p1 p2 p3) = logp1+logp2+log3,我就不在这里过多的赘述了!

4、朴素贝叶斯的最大似然估计

4.1、预备知识

1)最大似然估计:

最大似然的核心:假设未知参数为θ,已知的样本为D,最大似然估计通过最大化P(D|θ)来求解未知参数θ

最大似然估计的详细解释我在逻辑回归一文中做了详细阐述,就不过多赘述

2)带限制条件的优化

①无约束条件的优化:
例 1. 求 f ( x ) = x 2 − 2 x − 3 的 最 小 值 解 : f ′ ( x ) = 2 x − 2 令 f ′ ( x ) = 0 得 x = 1 \begin{aligned} 例1.求f(x) = x^2 - 2x - 3的最小值\\ 解:f^{'}(x) = 2x - 2 \\ 令f^{'}(x)=0\\得x=1 \end{aligned} 例1.求f(x)=x2−2x−3的最小值解:f′(x)=2x−2令f′(x)=0得x=1​
②带约束条件的优化-拉格朗日惩罚项
求 f ( x , y ) = x + y 的 最 大 值 , 但 有 个 条 件 是 x 2 + y 2 = 1 解 : 由 x 2 + y 2 = 1 得 x 2 + y 2 − 1 = 0 设 f ( x , y , λ ) = x + y + λ ( x 2 + y 2 − 1 ) { f x ′ ( x , y , λ ) = 1 + 2 λ x = 0 f y ′ ( x , y , λ ) = 1 + 2 λ y = 0 f λ ′ ( x , y , λ ) = x 2 + y 2 − 1 = 0 得 : { λ 1 = 2 2 x 1 = − 2 2 y 1 = − 2 2 { λ 2 = − 2 2 x 2 = 2 2 y 2 = 2 2 综 上 : 得 令 f ( x , y ) = x + y 最 大 的 值 为 { λ 2 = − 2 2 x 2 = 2 2 y 2 = 2 2 求f(x,y)=x+y的最大值,但有个条件是x^{2}+y^2 = 1\\解:由x^2+y^2 = 1 \\得x^2+y^2 - 1 =0 \\ 设f(x,y,\lambda) = x + y + \lambda{(x^2+y^2 - 1)}\\ \begin{cases} f^{'}_x(x,y,\lambda) = 1+2\lambda{x}=0 \\ f^{'}_y(x,y,\lambda) = 1+2\lambda{y}=0 \\ f^{'}_{\lambda}(x,y,\lambda) = x^2+y^2-1=0 \end{cases}\\ 得: \begin{cases} \lambda_{1} = \frac{\sqrt{2}}{2} \\ x_1 = -\frac{\sqrt{2}}{2} \\ y_1 = -\frac{\sqrt{2}}{2}\\ \end{cases}\quad \begin{cases} \lambda_{2} = -\frac{\sqrt{2}}{2} \\ x_2 = \frac{\sqrt{2}}{2} \\ y_2 = \frac{\sqrt{2}}{2}\\ \end{cases}\\ 综上:得令f(x,y)=x+y最大的值为\\ \begin{cases} \lambda_{2} = -\frac{\sqrt{2}}{2} \\ x_2 = \frac{\sqrt{2}}{2} \\ y_2 = \frac{\sqrt{2}}{2}\\ \end{cases} 求f(x,y)=x+y的最大值,但有个条件是x2+y2=1解:由x2+y2=1得x2+y2−1=0设f(x,y,λ)=x+y+λ(x2+y2−1)⎩⎪⎨⎪⎧​fx′​(x,y,λ)=1+2λx=0fy′​(x,y,λ)=1+2λy=0fλ′​(x,y,λ)=x2+y2−1=0​得:⎩⎪⎨⎪⎧​λ1​=22 ​​x1​=−22 ​​y1​=−22 ​​​⎩⎪⎨⎪⎧​λ2​=−22 ​​x2​=22 ​​y2​=22 ​​​综上:得令f(x,y)=x+y最大的值为⎩⎪⎨⎪⎧​λ2​=−22 ​​x2​=22 ​​y2​=22 ​​​

4.2、得到朴素贝叶斯的目标函数

4.3、对目标函数的求解

更多推荐

机器学习之朴素贝叶斯模型

本文发布于:2024-02-05 11:47:46,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1745003.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:朴素   模型   机器   贝叶斯

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!