聋哑工作设计做网站,海宁网站建设,河北工程建设造价信息网,做一套二级域名网站怎么做0. 前言
1.贝叶斯分类器介绍
贝叶斯分类是一类分类算法的总称#xff0c;这类算法均以贝叶斯定理为基础#xff0c;故统称为贝叶斯分类。而朴素贝叶斯#xff08;Naive Bayes#xff09;分类是贝叶斯分类中最简单#xff0c;也是常见的一种分类方法。
一些很常见的分类…0. 前言
1.贝叶斯分类器介绍
贝叶斯分类是一类分类算法的总称这类算法均以贝叶斯定理为基础故统称为贝叶斯分类。而朴素贝叶斯Naive Bayes分类是贝叶斯分类中最简单也是常见的一种分类方法。
一些很常见的分类算法如KNN逻辑回归决策树这些模型学习目的是学习输出 Y Y Y和特征 X X X之间的关系。它们属于判别方法 。
但这篇文章所讲的贝叶斯分类算法它是基于概率论的生成方法直接找出输出 Y Y Y和输入特征 X X X之间的联合分布 P ( X , Y ) P(X, Y) P(X,Y) 进而根据贝叶斯公式 P ( Y ∣ X ) P ( X , Y ) P ( X ) P(Y\mid X)\frac{P(X,Y)}{P(X)} P(Y∣X)P(X)P(X,Y)来进行判定。
那么
2. 概率基础
2.1 贝叶斯公式 p ( w i ∣ x ) p ( x ∣ w i ) p ( w i ) p ( x ) p(w_i|x)\frac{p(x|w_i)p(w_i)}{p(x)} p(wi∣x)p(x)p(x∣wi)p(wi)
上述这个简洁的公式就算贝叶斯公式这么简单真的可以用来进行分类吗
首先上述公式有以下两个创新点
1. 用概率的形式表示所有形式的不确定性 2. 引入了“先验”和后验的概念
贝叶斯概率基础:描述两个相关的随机事件或随机变量的概率关系 设试验 的样本空间为 为 的事件 , ,…, 为 S 的一个划分且() 0 ( , , … ) 则 ① 先验概率()预先已知的或者可以估计的模式识别系统位于某种类型的概率。根据大量统计确定某类事物出现的比例如 (男生) 代表整个教室里面男生的比列这个是已知的。 ② 条件概率(|)类别状态为时样本出现的概率 ③ 后验概率(|)一个具体事物属于某种类别的概率. 后验概率涉及一个具体事物而先验概率是泛指一类事物因此 男生| 和 男生 是两个不同的概念。 ④ 全概率样本在所有类别里出现的概率之和也称为的全概率: p ( x ) ∑ i 1 c p ( x ∣ w i ) p ( w i ) p(x)\sum_{i1}^cp(x|w_i)\:p(w_i) p(x)∑i1cp(x∣wi)p(wi)
⑤ 贝叶斯公式: 描述两个有因果关系的随机事件之间的概率关系 p ( w i ∣ x ) p ( x ∣ w i ) p ( w i ) p ( x ) p(w_i|x)\frac{p(x|w_i)p(w_i)}{p(x)} p(wi∣x)p(x)p(x∣wi)p(wi) 2.2 不確定性推理
推理可分为以下几种推理 确定性推理非概率推理 ➢ 如条件 B 存在就一定会有结果 A。现在已知条件 B 存在可以得出结论是结 果 A 一定也存在。 真正的确定性推理在真实世界中并不存在即使条件概率P(A|B)1 条件B存在也不意味着结果A 就确定一定会发生。 如果每个类别的样本分布在互不相交的特征空间区域中也就是说不同类的样本其特征向量会落入到特征空间的不同区域中。因此可以在特征空间中画出类别之间的分类决策边界。在识别一个样本时如果该样本的特征向量落入了某决策区域中则它一定属于对应的类。这称为“确定性的统计分类” 非确定性推理概率推理 ➢ 如条件 B 存在则结果 A 发生的概率为 P(A|B)。P(A|B)也称为结果 A 发生的条件概率ConditionalProbability。 如果每个类别样本的分布区域无法清晰地分开也就是说当样本属于不同类时也都有可能出现特征空间中的同一个点即对应到同一个特征向量的取值。那么虽然样本各不相同每个样本也都有自己真实所属的类别但是当抽取出一些特征将样本映射到特征空间的一个点时可能会出现多对一的映射。此时根据特征向量识别一个样本时就无法确定地判定该样本属于哪一个类而只能得出它属于某一个类或者某几个类的概率然后根据概率的大小来做出最终的分类决策。这种统计分类的方式称为“不确定的统计分类”。 逆概率推理 ➢ 已知条件 B 存在则结果 A 发生的概率为P(A|B)反之发现结果 A 出现了求条件 B 存在的概率 P(B|A)是多少根据所看到的结果来推测产生这一结果的原因。这种推理的过程我们成为“逆向推理”。贝叶斯公式就算解决逆概率推理根据后验结果预测先验。
一、贝叶斯算法核心思想与原理
1.1 原理介绍
上述什么先验、后验其实都是从概率的角度去看这个贝叶斯公式。贝叶斯算法的核心思想是通过考虑特征概率后验结果概率来预测分类先验即对于给出的待分类样本求解在此样本出现的条件下各个类别出现的概率哪个最大就认为此待分类样本属于哪个类别。 用贝叶斯公式解决分类问题预测出样本属于每个类的概率 贝叶斯公式阐明了两个随机变量之间的因果关系分类问题中的特征向量取值 x x x和样本所属类型 y y y 之间具有因果关系——因为样本属于类型 y y y所以具有特征值 x x x 分类器要做的则是根据这种因果关系由特征向量进行反推反推每个样本所属的类别根据贝叶斯公式样本属于每个类的后验概率为 p ( y i ∣ x ) p ( x ∣ y i ) p ( y i ) 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 i ) 为每一类出现的概率, p ( x ∣ y i ) 是类条件概率,即每一类的样本所服从的概率分布, p ( x ) 为证 据因子,对所有类相同 p(y_i)\text{为每一类出现的概率,}p(x|y_i)\text{ 是类条件概率,即每一类的样本所服从的概率分布,}p(x)\text{为证}\\\text{据因子,对所有类相同} p(yi)为每一类出现的概率,p(x∣yi) 是类条件概率,即每一类的样本所服从的概率分布,p(x)为证据因子,对所有类相同 如果只需要分类而不需要得到后验概率的值则可以忽略证据因子因为它对所有类都相同预测函数为 argmax y p ( x ∣ y i ) p ( y i ) \underset{y}{\operatorname*{argmax}}p(x|y_i)p(y_i) yargmaxp(x∣yi)p(yi) 这是一个求最大值的操作。它遍历所有可能的类别 y ,找到使得 p ( x ∣ y i ) p ( y i ) 最大的那个类别 \text{这是一个求最大值的操作。它遍历所有可能的类别 }y\text{,找到使得 }p(x|y_i)p(y_i)\text{ 最大的那个类别} 这是一个求最大值的操作。它遍历所有可能的类别 y,找到使得 p(x∣yi)p(yi) 最大的那个类别
1.2 实例解析
⭐举例01
题目在一个社会中男性和女性的比例基本是一样的也就是说如果把男性作为一类女性作为另一类那么两个类别的先验概率都是 0.5也可以说我们在路上随机遇到一个人他是男性和女性的概率各为 50%。如果我们在路上看到了一个人的背影发现他是长发那么他是男性或女性的概率会发生什么变化吗
答把“长发”作为一个样本所具有的特征值计算后验概率P(男性|长发)和P(女性|长发)无论这个人识别为男性还是识别为女性都有可能犯错----“不确定统计分类”的本质特点。
推理过程: 条件1男性留长发的概率是5%和女性留长发的概率是70%则P(长发|男性0.05P长发|女性0.7. ——条件概率1 条件2设 P男性50%女性50%——先验概率2 结论1P男性|长发(0.05 * 0.5)/(0.05 * 0.5 0.7 * 0.5)1/150.067——后验概率
如果我们在一个特殊的环境中男性女性的先验概率并不相同 条件3: 男性大约占总人群的 75%女性大约占 25% 结论2P男性|长发(0.050.75)/(0.050.750.7*0.25)3/170.176
注意在各类别先验概率不均等时后验概率也会发生很大的变化。
1.3 总结
假设在学习阶段通过训练已得到模型的联合概率(, )对于生成模型或后验概率(|)对于判别模型需要对类型输出做出最终判决即决策。贝叶斯决策是基于贝叶斯公式 上述的 p ( x , y ) p(x,y) p(x,y)就是$p(xy)即特征值和类别同时出现的概率。 二、贝叶斯分类器的分类
2.0 前言
➢ 用贝叶斯公式解决分类问题预测出样本属于每个类的概率不同的假设导致了不同的贝叶斯分类器 不同的假设主要是对数据分布和做出分类决策的特定前提设定 ① 最小错误概率贝叶斯分类器 ② 最小风险贝叶斯分类器 ③ 假设特征向量的各个分量相互独立 - 朴素贝叶斯分类器 ④ 假设每个类的特征向量服从多维正态分布 - 正态贝叶斯分类器
2.1最小错误概率贝叶斯分类器最大后验概率
2.1.1介绍
➢ 对于分类问题决策准则是使得错误分类率最小即最小错误分类率Minimum Misclassification RateMMR
➢ 对于二分类问题
前提条件是假设所有错误的代价是平等的
首先我们有一个二分类问题这意味着我们要将数据分为两类分别是 C 1 C_1 C1 和 C 2 C_2 C2。为了进行分类我们把特征空间也就是数据可能出现的所有特征组合所构成的空间划分成了两个区域 R 1 R_1 R1 和 R 2 R_2 R2。
对于第一个情况
假设存在一个数据点 x x x它实际上是属于类别 C 2 C_2 C2 的。但是我们的分类规则却把它划分到了区域 R 1 R_1 R1 中这就产生了错误分类。
那么错误概率 p ( x ∈ R 1 , C 2 ) p(x\in R_1,C_2) p(x∈R1,C2) 表示的是所有像这样被错误分到 R 1 R_1 R1 区域且实际上属于 C 2 C_2 C2 类别的数据点出现的可能性。
为了计算这个概率我们需要考虑在区域 R 1 R_1 R1 内属于类别 C 2 C_2 C2 的概率分布情况。概率分布函数 p ( x , C 2 ) p(x,C_2) p(x,C2) 描述了数据点 x x x 属于类别 C 2 C_2 C2 的概率在整个特征空间中的变化情况。
通过对区域 R 1 R_1 R1 上的这个概率分布函数进行积分 ∫ R 1 p ( x , C 2 ) d x \int_{R_1}p(x,C_2)\:dx ∫R1p(x,C2)dx我们就能得到数据点实际上属于类别 C 2 C_2 C2 但却被错误分到区域 R 1 R_1 R1 的总体概率。
对于第二个情况
同理当一个数据点 x x x 实际上是属于类别 C 1 C_1 C1 的但被错误地划分到了区域 R 2 R_2 R2 中。
错误概率 p ( x ∈ R 2 , C 1 ) p(x\in R_2,C_1) p(x∈R2,C1) 表示这种错误分类情况发生的可能性。
通过对区域 R 2 R_2 R2 上属于类别 C 1 C_1 C1 的概率分布函数 p ( x , C 1 ) p(x,C_1) p(x,C1) 进行积分 ∫ R 2 p ( x , C 1 ) d x \int_{R_2}p(x,C_1)dx ∫R2p(x,C1)dx我们就得到了数据点实际上属于类别 C 1 C_1 C1 但却被错误分到区域 R 2 R_2 R2 的总体概率。
总的来说这两个公式帮助我们定量地描述在二分类中由于区域划分不准确导致的错误分类的可能性大小。
将两者合并 p e p ( x ∈ R 1 , C 2 ) p ( x ∈ R 2 , C 1 ) ∫ R 1 p ( x , C 2 ) d x ∫ R 2 p ( x , C 1 ) d x p_ep(x\in R_1,C_2)p(x\in R_2,C_1)\int_{R_1}p(x,C_2)\:dx\int_{R_2}p(x,C_1)\:dx pep(x∈R1,C2)p(x∈R2,C1)∫R1p(x,C2)dx∫R2p(x,C1)dx
这个式子中 表示分类的总错误概率
基于概率 的决策原则
接下来当面对一个新的数据点 时如果 (, 1) (, 2) 我们就将其分类为 1 类别反之如果 (, 1) (, 2) 就将其分类为 2 类别。
⭐基于后验概率 的决策原则
(1|) 和 (2|) 分别表示在已知数据点 的情况下它属于类别 1 和 2 的条件概率。如果 (1|) (2|) 意味着在给定 的条件下它属于 1 类别的可能性更大所以分类为 1 反之则分类为 2 。
推广到多类情况设有{1, 2, … , }种类型最后分类结果为 C i ∗ argmax C i p ( C i ∣ x ) C^{*}_{i}\underset{C_{i}}{\operatorname*{argmax}}p(C_{i}|x) Ci∗Ciargmaxp(Ci∣x)后验概率最大的类作为分类输出。
下面我们来正式介绍最小错误概率分类器 2.1.2讲解
在模式分类问题中人们往往希望尽量减少分类错误使错误率最小的分类规则称为基于最小错误率的贝叶斯决策。贝叶斯分类器在最小化分类错误率上是最优的。
➢ 在对样本进行决策时使其错误率最小的决策就是使后验概率最大的决策所以在无特殊说明下说的贝叶斯决策通常就是指最小错误率贝叶斯决策。最小错误贝叶斯分类器的目的就是 min P ( e ) ∫ P ( e ∣ x ) p ( x ) d x \min P(e)\int P(e\mid x)p(x)dx minP(e)∫P(e∣x)p(x)dx
➢ 因为()是一致的简化后分类器的判别函数为: arg max y p ( x ∣ w i ) p ( w i ) \arg\max_yp(x|w_i)p(w_i) argmaxyp(x∣wi)p(wi) 即最大后验概率,其中类条件概率可以是均匀分布、指数分布、正态分布等。
➢ 贝叶斯分类器需要知道每类样本的特征向量服从的概率密度常用正态分布来表示特征向量的概率分布。 下面我们来讲解这个图像的含义 横轴代表特征向量x,y 轴代表基于特征向量得出的后验概率y P(wi/x) p(x/wi)*p(wi) 第一个函数是表示类别1的分布纵轴此时表示P(C1/x) ; 第二个函数代表2类别的分布 t这条竖线是两个类别的分界点。 最大后验概率此时t会与两个函数有两个交点每次选择y值高的那个交点类作为预测类经过这个步骤t位于两个函数互相的交点处。 最小错误概率因为 min P ( e ) ∫ P ( e ∣ x ) p ( x ) d x \min P(e)\int P(e\mid x)p(x)dx minP(e)∫P(e∣x)p(x)dx从上图可以看到红色区域黄色区域代表分成了2类但是实际是1类的错误概率绿色概率代表分成了1但实际是2类的错误概率我们发现如果想要让整个错误概率最小则必须黄色区域为0则此时t也位于两个函数的互相交点处。
综上 错误率最小的决策和使后验概率最大的决策在目的和效果上是一致的这两种决策方式的本质都是为了在分类任务中尽可能准确地将数据点分配到正确的类别以达到最优的分类效果。
2.1.3例题讲解
⭐举例02
某地发生了一起交通事故肇事逃逸事件现场有一位目击者他非常肯定地说他看见肇事车的车标是右侧的车标而不是左侧的车标。如果这个目击者的可信度非常99%用最小错误率贝叶斯分类器来算一算
P(认成左标|实为右标0.01 P认成右标|实为右标0.99
题目 1设 P左标P右标50% ——————市场占有率 则P实为右标|认成右标(0.99 * 0.5)/(0.99 * 0.5 0.01 * 0.5)0.99 只有 1%的可能性认错。
2设 P左标99%P右标1% ——————市场占有率 则P实为右标|认成右标 0.99 * 0.01)/(0.99 * 0.01 0.01 * 0.99) 0.5, 有50%的可能性认错.
⭐举例03
2013 年 3 月底以来人感染 H7N9 型禽流感的病例开始出现并造成了一定的社会恐慌。根据目前数据统计该病的总体发病率大约为 1000 万分之一对照普通流感的发病率可高达30%。研究发现易感人群中99%的人感染H7N9型禽流感病例曾出现过发热、咳嗽等急性呼吸道感染症状而同样的易感人群中 80%的普通流感患者也出现过同样症状。
题目 现有一位患者属于易感人群并出现了发热、咳嗽等急性呼吸道感染症状请问是否应当按照人感染H7N9型禽流感疑似病例对待该患者实为H7N9禽流感感染的后验概率
答
P(H7N9)0.0000001/(0.00000010.3); P(流感0.3/(0.00000010.3)——对样本空间进行划分
P(H7N9|症状)0.0000001/(0.00000010.3)*0.99)/(0.0000001/(0.00000010.3)*0.990.3/(0.00000010.3)*0.8)0.000000412
2.2 最小风险贝叶斯分类器
2.2.1介绍
在前面“最小错误概率贝叶斯分类器”中各种错误代理的损失我们默认前提都是相等的。但是实施情况并不如此比如在例题3中如果我们把一个换了禽流感的人误判为正常则这个带来的损失是极大的。所以当使用贝叶斯分类器时仅仅考虑识别错误率低是不够的还应当把所采取的分类决策所带来的后果考虑进去这就是“最小风险贝叶斯分类器”的由来。
基本概念最小风险贝叶斯决策就是考虑各种错误造成损失不同时的一种最优决策。决策把待识别样本归为类中损失把真实属于类的样本归到类中带来的损失条件风险(|)把样本采取决策后可能的总的风险 R ( α i ∣ x ) E [ λ i j ] ∑ j 1 c λ i j P ( C j ∣ x ) , i 1 , 2 , . . . c {\color{Red} } \mathrm{R}(\alpha_i|x)E\big[\lambda_{ij}\big]\sum_{j1}^c\lambda_{ij}P\big(C_j\big|x\big),i1,2,...c R(αi∣x)E[λij]j1∑cλijP(Cj x),i1,2,...c
决策规则 若 R ( α k ∣ x ) min i 1 , 2 , . . . , c R ( α i ∣ x ) 则 x ∈ ω k \text{若}R(\alpha_k|x)\min_{i1,2,...,c}R(\alpha_i|x)\text{ 则 }x\in\omega_k 若R(αk∣x)mini1,2,...,cR(αi∣x) 则 x∈ωk
预测步骤
1已知类条件概率密度(|)和先验概率() 1,2, … , 以及给出待识别的情况下根据贝叶斯公式计算后验概率 (|);
2利用第1步计算的后验概率及决策损失表计算采取, 1,2, … , 的条件风险 R ( α i ∣ x ) ∑ j 1 c λ ( α i , C j ) P ( C j ∣ x ) ; R(\alpha_i|x)\sum_{j1}^c\lambda(\alpha_i,C_j)P(C_j|x); R(αi∣x)∑j1cλ(αi,Cj)P(Cj∣x);
3对第2步得到的个条件风险值 R ( α i ∣ x ) , i 1 , 2 , . . . , a R(\alpha_i|x),\quad i1,2,...,a R(αi∣x),i1,2,...,a进行比较找出使条件风险最小的决策 a k a_k ak,即 R ( α k ∣ x ) min i 1 , 2 , . . . , a R ( α i ∣ x ) R(\alpha_k|x)\min_{i1,2,...,a}R(\alpha_i|x) R(αk∣x)mini1,2,...,aR(αi∣x)
2.2.2例题讲解
⭐举例04
如果将一名普通流感患者误诊为H7N9型禽流感患者所浪费的社会资源只有将一名 H7N9 型禽流感患者误诊为普通流感患者所带来的社会资源损失的 300万分之一请问是否应当将该病例按照人感染H7N9型禽流感疑似病例对待
答 当我们将该患者诊断为禽流感患者时条件风险为
判决为H7N9 RP普通|症状*11-0.000000412 *1 0.999999588判决为普通RPH7N9|症状*30000000.000000412*30000001.236
2.3 朴素贝叶斯分类器⭐
2.3.0 总体介绍
假设特征向量的分量之间相互独立这种假设简化了问题求解的难度
所谓「朴素」是假定所有输入事件之间是相互独立。进行这个假设是因为独立事件间的概率计算更简单。
该样本属于某一类的概率为 p ( y c i ∣ x ) p ( y c i ) p ( x ∣ y c i ) p ( x ) p(yc_i|\mathbf{x})\frac{p(yc_i)p(\mathbf{x}|yc_i)}{p(\mathbf{x})} p(yci∣x)p(x)p(yci)p(x∣yci)
朴素贝叶斯模型的基本思想 对于给定的待分类项 X { a 1 , a 2 , a 3 , ⋯ , a n } X\left\{a_{1},a_{2},a_{3},\cdots,a_{n}\right\} X{a1,a2,a3,⋯,an}求解在此项出现的条件下各个类别 y i y_i yi出现的概率哪个 P ( y i ∣ X ) P(y_i|X) P(yi∣X) 最大就把此待分类项归属于哪个类别其决策也是基于最大后验概率。 然而严格来讲不能简单地说朴素贝叶斯的本质就是最小错误率贝叶斯。最小错误率贝叶斯决策是一个更通用的理论框架而朴素贝叶斯是基于 特定假设特征条件独立性假设 实现的一种具体的分类方法。 朴素贝叶斯模型的定义 设 X { a 1 , a 2 , a 3 , ⋯ , a n } X\left\{a_{1},a_{2},a_{3},\cdots,a_{n}\right\} X{a1,a2,a3,⋯,an} 为一个待分类项每个 为 的一个特征属性且特征属性之间相互独立。设 C { y 1 , y 2 , y 3 , ⋯ , y n } C\left\{y_1,y_2,y_3,\cdots,y_n\right\} C{y1,y2,y3,⋯,yn} 为一个类别集合计算 P ( y 1 ∣ X ) , P ( y 2 ∣ X ) , P ( y 3 ∣ X ) , … , P ( y n ∣ X ) P\left(y_{1}\mid X\right),P\left(y_{2}\mid X\right),P\left(y_{3}\mid X\right),\ldots,P\left(y_{n}\mid X\right) P(y1∣X),P(y2∣X),P(y3∣X),…,P(yn∣X) P ( y k ∣ X ) max { P ( y 1 ∣ X ) , P ( y 2 ∣ X ) , P ( y 3 ∣ X ) , … , P ( y n ∣ X ) } , 则 X ∈ y k P\left(y_k\mid X\right)\max\left\{P\left(y_1\mid X\right),P\left(y_2\mid X\right),P\left(y_3\mid X\right),\ldots,P\left(y_n\mid X\right)\right\},\text{则}X\in y_k P(yk∣X)max{P(y1∣X),P(y2∣X),P(y3∣X),…,P(yn∣X)},则X∈yk
但是在这里求后验概率 P ( y k ∣ X ) P\left(y_{k}\mid X\right) P(yk∣X) 没有那么简单它需要利用特征分量之间的独立性
找到一个已知分类的待分类项集合这个集合叫做训练样本集统计得到在各类别下各个特征分量的条件概率估计。即 P ( a 1 ∣ y 1 ) , P ( a 2 ∣ y 1 ) , ⋯ , P ( a n ∣ y 1 ) P ( a 1 ∣ y 2 ) , P ( a 2 ∣ y 2 ) , ⋯ , P ( a n ∣ y 2 ) ⋯ P ( a 1 ∣ y n ) , P ( a 2 ∣ y n ) , ⋯ , P ( a n ∣ y n ) P\left(a_{1}\mid y_{1}\right),P\left(a_{2}\mid y_{1}\right),\cdots,P\left(a_{n}\mid y_{1}\right)\\P\left(a_{1}\mid y_{2}\right),P\left(a_{2}\mid y_{2}\right),\cdots,P\left(a_{n}\mid y_{2}\right)\\\cdots\\P\left(a_{1}\mid y_{n}\right),P\left(a_{2}\mid y_{n}\right),\cdots,P\left(a_{n}\mid y_{n}\right) P(a1∣y1),P(a2∣y1),⋯,P(an∣y1)P(a1∣y2),P(a2∣y2),⋯,P(an∣y2)⋯P(a1∣yn),P(a2∣yn),⋯,P(an∣yn)
在朴素贝叶斯算法中待分类项的每个特征属性都是条件独立的由贝叶斯公式 P ( y i ∣ X ) P ( X ∣ y i ) P ( y i ) P ( X ) P\left(y_i\mid X\right)\frac{P\left(X\mid y_i\right)P\left(y_i\right)}{P\left(X\right)} P(yi∣X)P(X)P(X∣yi)P(yi)
因为分母相当于在数据库中 X X X 存在的概率所以对于任何一个待分类项 P ( X ) P(X) P(X)来说 都是常数固定的。再求后验概率 P ( y i ∣ X ) P(y_i | X) P(yi∣X) 的时候只用考虑分子即可。
因为各特征值是独立的所以有 P ( X ∣ y i ) P ( y i ) P ( a 1 ∣ y i ) P ( a 2 ∣ y i ) ⋯ P ( a n ∣ y i ) P ( y i ) P ( y i ) ∏ j 1 n P ( a j ∣ y i ) P\left(X\mid y_{i}\right)P\left(y_{i}\right)P\left(a_{1}\mid y_{i}\right)P\left(a_{2}\mid y_{i}\right)\cdots P\left(a_{n}\mid y_{i}\right)P\left(y_{i}\right)\\P\left(y_{i}\right)\prod_{j1}^{n}P\left(a_{j}\mid y_{i}\right) P(X∣yi)P(yi)P(a1∣yi)P(a2∣yi)⋯P(an∣yi)P(yi)P(yi)j1∏nP(aj∣yi)
可以推出 P ( X ∣ y i ) ∏ k 1 n P ( a k ∣ y i ) P\left(X\mid y_i\right)\prod_{k1}^nP\left(a_k\mid y_i\right) P(X∣yi)k1∏nP(ak∣yi) 对于 P ( y i ) P(y_i) P(yi) 是指在训练样本中 y i y_i yi出现的概率可以近似的求解为 P ( y i ) ∣ y i ∣ D P\left(y_i\right)\frac{\left|y_i\right|}{D} P(yi)D∣yi∣
对于先验概率 P ( a j ∣ y i ) P(a_j | y_i) P(aj∣yi)是指在类别 y i y_i yi 中特征元素 a j a_j aj 出现的概率可以求解为 P ( a j ∣ y i ) ∣ 在训练样本为 y i 时, a j 出现的次数 ∣ ∣ y i 训练样本数 ∣ P\left(a_j\mid y_i\right)\frac{\left|\text{在训练样本为}y_i\text{时,}a_j\text{出现的次数}\right|}{\left|y_i\text{训练样本数}\right|} P(aj∣yi)∣yi训练样本数∣∣在训练样本为yi时,aj出现的次数∣
总结一下朴素贝叶斯模型的分类过程如下流程图所示 2.3.1 特征为离散的情况
如果特征向量的分量是离散型随机变量可以直接根据训练样本计算出其服从的概率分布统计每一类训练样本中每个特征分量取每个值的频率作为类条件概率的估计值 p ( x i v ∣ y c ) N x i v , y c N y c p(x_iv|yc)\frac{N_{x_iv,yc}}{N_{yc}} p(xiv∣yc)NycNxiv,yc
类概率是各个类的样本占总样本数的比例 p ( y c ) N y c N p(yc)\frac{N_{yc}}N p(yc)NNyc 其中( )为第c类样本在整个训练样本集中出现的概率。
分类器的预测函数为 arg max y p ( y c ) ∏ i 1 n p ( x i v ∣ y c ) \arg\max_yp(yc)\prod_{i1}^np(x_iv|yc) argymaxp(yc)i1∏np(xiv∣yc)
2.3.2特征值连续
如果特征向量的分量是连续型随机变量可以假设它们服从一维正态分布 p ( x i x ∣ y c ) 1 2 π σ i exp ( − ( x − μ i ) 2 2 σ i 2 ) p(x_ix|yc)\frac1{\sqrt{2\pi}\sigma_i}\exp\left(-\frac{(x-\mu_i)^2}{2\sigma_i^2}\right) p(xix∣yc)2π σi1exp(−2σi2(x−μi)2) 分类器的预测函数为 argmax a p ( y c ) ∏ i 1 n 1 2 π σ i exp ( − ( x i − μ i ) 2 2 σ i 2 ) \operatorname{argmax}_ap\left(yc\right)\prod_{i1}^n\frac1{\sqrt{2\pi}\sigma_i}\exp\left(-\frac{(x_i-\mu_i)^2}{2\sigma_i^2}\right) argmaxap(yc)i1∏n2π σi1exp(−2σi2(xi−μi)2)
均值和方差通过最大似然估计得到对于特征 假设某一类所有训练样本该特征的取值 为 x i , i 1 , … , l , x_i,i1,\ldots,l, xi,i1,…,l,
此类样本该特征所服从的正态分布的均值和方差分别为 μ 1 l ∑ i 1 l x i \mu\frac1l\sum_{i1}^lx_i μl1i1∑lxi σ 2 1 l ∑ i 1 l ( x i − μ ) 2 \sigma^2\frac1l\sum_{i1}^l(x_i-\mu)^2 σ2l1i1∑l(xi−μ)2
2.3.3平滑处理
1为什么需要平滑处理? 使用朴素贝叶斯有时候会面临零概率问题。零概率问题指的是在计算实例的概率时如果某个量 x x x 在观察样本库训练集中没有出现过会导致整个实例的概率结果是 0。
在文本分类的问题中当「一个词语没有在训练样本中出现」时这个词基于公式统计计算得到的条件概率为 0 使用连乘计算文本出现概率时也为 0 。这是不合理的 不能因为一个事件没有观察到就武断的认为该事件的概率是 0 0 0 。
2拉普拉斯平滑及依据
为了解决零概率的问题法国数学家拉普拉斯最早提出用加1的方法估计没有出现过的现象的概率所以加法平滑也叫做拉普拉斯平滑。
假定训练样本很大时每个分量 的计数加 造成的估计概率变化可以忽略不计但可以方便有效的避免零概率问题。
对应到文本分类的场景中如果使用多项式朴素贝叶斯假定特征 x i x_i xi 表示某个词在样本中出现的次数当然用TF-IDF表示也可以。拉普拉斯平滑处理后的条件概率计算公式为 P ( x i ∣ y ) N y i α N y n α P\left(x_i\mid y\right)\frac{N_{yi}\alpha}{N_yn\alpha} P(xi∣y)NynαNyiα N y i 表示类 y 的所有样本中特征 x i 的特征值之和。 N_{yi}\text{ 表示类 }y\text{ 的所有样本中特征 }x_i\text{ 的特征值之和。} Nyi 表示类 y 的所有样本中特征 xi 的特征值之和。 N y 表示类 y 的所有样本中全部特征的特征值之和。 N_y\text{ 表示类 }y\text{ 的所有样本中全部特征的特征值之和。} Ny 表示类 y 的所有样本中全部特征的特征值之和。 α 表示平滑值( α ∈ [ 0 , 1 ] ,主要为了防止训练样本中某个特征没出现而导致 N p i 0 ,从而导致条件概率 P ( x i ∣ y ) 0 的情况,如果不加入平滑值,则计算联合概率时由于某一项为 0 导致后验概率为 0 的异常情况出 现。 \begin{aligned}\alpha\text{ 表示平滑值(}\alpha\in[0,1]\text{,主要为了防止训练样本中某个特征没出现而导致 }N_{pi}0\text{,从而导致条件概率}\\P\left(x_{i}\mid y\right)0\text{ 的情况,如果不加入平滑值,则计算联合概率时由于某一项为}0\text{导致后验概率为}0\text{的异常情况出}\\\text{现。}\end{aligned} α 表示平滑值(α∈[0,1],主要为了防止训练样本中某个特征没出现而导致 Npi0,从而导致条件概率P(xi∣y)0 的情况,如果不加入平滑值,则计算联合概率时由于某一项为0导致后验概率为0的异常情况出现。 n 表示特征总数。 n表示特征总数。 n表示特征总数。
一般我们取去a为1即可 p ( x i v ∣ y c ) N x i v , y c 1 N y c k p(x_iv|yc)\frac{N_{x_iv,yc}1}{N_{yc}k} p(xiv∣yc)NyckNxiv,yc1
2.3.4案例练习
举个例子眼前有17个西瓜好瓜和坏瓜个数差不多现在要用这些西瓜来训练一个「坏瓜识别器」我们要怎么办呢
一般挑西瓜时通常要「敲一敲」听听声音是清脆声、浊响声、还是沉闷声。所以我们先简单点考虑这个问题只用敲击的声音来辨别西瓜的好坏。根据经验敲击声「清脆」说明西瓜还不够熟敲击声「沉闷」说明西瓜成熟度好更甜更好吃。
朴素贝叶斯把类似「敲击声」这样的特征概率化构成一个「西瓜的品质向量」以及对应的「好瓜/坏瓜标签」训练出一个标准的「基于统计概率的好坏瓜模型」这些模型都是各个特征概率构成的。
这样在面对未知品质的西瓜时我们迅速获取了特征分别输入「好瓜模型」和「坏瓜模型」得到两个概率值。如果「坏瓜模型」输出的概率值大一些那这个瓜很有可能就是个坏瓜。
下面我们有17个瓜的数据
编号色泽根蒂敲声纹理脐部触感密度含糖率好瓜1青绿蜷缩浊响清晰凹陷硬滑0.6970.46是2乌黑蜷缩沉闷清晰凹陷硬滑0.7740.376是3乌黑蜷缩浊响清晰凹陷硬滑0.6340.264是4青绿蜷缩沉闷清晰凹陷硬滑0.6080.318是5浅白蜷缩浊响清晰凹陷硬滑0.5560.215是6青绿稍蜷浊响清晰稍凹软粘0.4030.237是7乌黑稍蜷浊响稍糊稍凹软粘0.4810.149是8乌黑稍蜷浊响清晰稍凹硬滑0.4370.211是9乌黑稍蜷沉闷稍糊稍凹硬滑0.6660.091否10青绿硬挺清脆清晰平坦软粘0.2430.267否11浅白硬挺清脆模糊平坦硬滑0.2450.057否12浅白蜷缩浊响模糊平坦软粘0.3430.099否13青绿稍蜷浊响稍糊凹陷硬滑0.6390.161否14浅白稍蜷沉闷稍糊凹陷硬滑0.6570.198否15乌黑稍蜷浊响清晰稍凹软粘0.360.37否16浅白蜷缩浊响模糊平坦硬滑0.5930.042否17青绿蜷缩沉闷稍糊稍凹硬滑0.7190.103否
将其特征数字化如下 色泽 1-3代表 浅白 青绿 乌黑 根蒂 1-3代表 稍蜷 蜷缩 硬挺 敲声 1-3代表 清脆 浊响 沉闷 纹理 1-3代表 清晰 稍糊 模糊 脐部 1-3代表 平坦 稍凹 凹陷 硬滑用1表示软粘用2 好瓜 1代表 是 0 代表 不是|
编号色泽根蒂敲声纹理脐部触感密度含糖率好瓜12221310.6970.46123231310.7440.376133221310.6340.264142231310.6080.318151221310.5560.215162121220.4030.237173122220.4810.149183121210.4370.211193132210.6660.0910102311120.2430.2670111313110.2450.0570121223120.3430.0990132122310.6390.1610141132310.6570.1980153121220.360.370161223110.5930.0420172232210.7190.1030
现在我们有一个带判断瓜如下
色泽根蒂敲声纹理脐部触感密度含糖量好瓜青绿蜷缩浊响清晰凹陷硬滑0.6970.46
判断其为好瓜or坏瓜
答先验概率 (1) 、 2 P ( 好瓜 是 ) 8 17 0.471 P ( 好瓜 否 ) 9 17 0.529 P(\text{好瓜}\text{是})\frac8{17}0.471\\P(\text{好瓜}\text{否})\frac9{17}0.529 P(好瓜是)1780.471P(好瓜否)1790.529
求每个属性估计条件概率 P ( x i ∣ C : P(x_i| C: P(xi∣C:
import numpy as np
import math
import pandas as pd# 构建数据集
def loadDataSet():dataSet [[青绿, 蜷缩, 浊响, 清晰, 凹陷, 硬滑, 0.697, 0.460, 好瓜],[乌黑, 蜷缩, 沉闷, 清晰, 凹陷, 硬滑, 0.774, 0.376, 好瓜],[乌黑, 蜷缩, 浊响, 清晰, 凹陷, 硬滑, 0.634, 0.264, 好瓜],[青绿, 蜷缩, 沉闷, 清晰, 凹陷, 硬滑, 0.608, 0.318, 好瓜],[浅白, 蜷缩, 浊响, 清晰, 凹陷, 硬滑, 0.556, 0.215, 好瓜],[青绿, 稍蜷, 浊响, 清晰, 稍凹, 软粘, 0.403, 0.237, 好瓜],[乌黑, 稍蜷, 浊响, 稍糊, 稍凹, 软粘, 0.481, 0.149, 好瓜],[乌黑, 稍蜷, 浊响, 清晰, 稍凹, 硬滑, 0.437, 0.211, 好瓜],[乌黑, 稍蜷, 沉闷, 稍糊, 稍凹, 硬滑, 0.666, 0.091, 坏瓜],[青绿, 硬挺, 清脆, 清晰, 平坦, 软粘, 0.243, 0.267, 坏瓜],[浅白, 硬挺, 清脆, 模糊, 平坦, 硬滑, 0.245, 0.057, 坏瓜],[浅白, 蜷缩, 浊响, 模糊, 平坦, 软粘, 0.343, 0.099, 坏瓜],[青绿, 稍蜷, 浊响, 稍糊, 凹陷, 硬滑, 0.639, 0.161, 坏瓜],[浅白, 稍蜷, 沉闷, 稍糊, 凹陷, 硬滑, 0.657, 0.198, 坏瓜],[乌黑, 稍蜷, 浊响, 清晰, 稍凹, 软粘, 0.360, 0.370, 坏瓜],[浅白, 蜷缩, 浊响, 模糊, 平坦, 硬滑, 0.593, 0.042, 坏瓜],[青绿, 蜷缩, 沉闷, 稍糊, 稍凹, 硬滑, 0.719, 0.103, 坏瓜]]testSet [青绿, 蜷缩, 浊响, 清晰, 凹陷, 硬滑, 0.697, 0.460]labels [色泽, 根蒂, 敲声, 纹理, 脐部, 触感, 密度, 含糖率]return dataSet, testSet, labels# 计算(不同类别中指定连续特征的)均值、标准差
def mean_std(feature, cla):dataSet, testSet, labels loadDataSet()lst [item[labels.index(feature)] for item in dataSet if item[-1] cla]mean round(np.mean(lst), 3)std round(np.std(lst), 3)return mean, std# 计算先验概率 P(c)
def prior():dataSet loadDataSet()[0]countG 0countB 0countAll len(dataSet)for item in dataSet:if item[-1] 好瓜:countG 1for item in dataSet:if item[-1] 坏瓜:countB 1# 计算先验概率 P(c)P_G round(countG / countAll, 3)P_B round(countB / countAll, 3)# 拉普拉斯修正# P_G round((countG 1)/(countAll 2), 3)# P_B round((countB 1)/(countAll 2), 3)return P_G, P_B# 计算离散属性的条件概率 P(xi|c)
def P(index, cla):dataSet, testSet, labels loadDataSet()countG 0countB 0for item in dataSet:if item[-1] 好瓜:countG 1for item in dataSet:if item[-1] 坏瓜:countB 1lst [item for item in dataSet if (item[-1] cla) (item[index] testSet[index])]P round(len(lst) / (countG if cla 好瓜 else countB), 3)# P round((len(lst)1)/((countG if cla好瓜 else countB)3), 3)return P# 计算连续属性的条件概率 p(xi|c)
def p():dataSet, testSet, labels loadDataSet()denG_mean, denG_std mean_std(密度, 好瓜)denB_mean, denB_std mean_std(密度, 坏瓜)sugG_mean, sugG_std mean_std(含糖率, 好瓜)sugB_mean, sugB_std mean_std(含糖率, 坏瓜)print(连续属性条件概率)# p(密度0.697|好瓜)p_density_G (1 / (math.sqrt(2 * math.pi) * denG_std)) * np.exp(-(((testSet[labels.index(密度)] - denG_mean) ** 2) / (2 * (denG_std ** 2))))p_density_G round(p_density_G, 3)print(fp(密度0.697|好瓜){p_density_G})# p(密度0.697|坏瓜)p_density_B (1 / (math.sqrt(2 * math.pi) * denB_std)) * np.exp(-(((testSet[labels.index(密度)] - denB_mean) ** 2) / (2 * (denB_std ** 2))))p_density_B round(p_density_B, 3)print(fp(密度0.697|坏瓜){p_density_B})# p(含糖率0.460|好瓜)p_sugar_G (1 / (math.sqrt(2 * math.pi) * sugG_std)) * np.exp(-(((testSet[labels.index(含糖率)] - sugG_mean) ** 2) / (2 * (sugG_std ** 2))))p_sugar_G round(p_sugar_G, 3)print(fp(含糖率0.460|好瓜){p_sugar_G})# p(含糖率0,460|坏瓜)p_sugar_B (1 / (math.sqrt(2 * math.pi) * sugB_std)) * np.exp(-(((testSet[labels.index(含糖率)] - sugB_mean) ** 2) / (2 * (sugB_std ** 2))))p_sugar_B round(p_sugar_B, 3)print(fp(含糖率0.460|坏瓜){p_sugar_B})return p_density_G, p_density_B, p_sugar_G, p_sugar_B# 预测后验概率 P(c|xi)
def bayes():# 计算类先验概率P_G, P_B prior()# 计算离散属性的条件概率print(离散属性条件概率)P0_G P(0, 好瓜)print(fP(青绿|好瓜){P0_G})P0_B P(0, 坏瓜)print(fP(青绿|坏瓜){P0_B})P1_G P(1, 好瓜)print(fP(蜷缩|好瓜){P1_G})P1_B P(1, 坏瓜)print(fP(蜷缩|坏瓜){P1_B})P2_G P(2, 好瓜)print(fP(浊响|好瓜){P2_G})P2_B P(2, 坏瓜)print(fP(浊响|坏瓜){P2_B})P3_G P(3, 好瓜)print(fP(清晰|好瓜){P3_G})P3_B P(3, 坏瓜)print(fP(清晰|坏瓜){P3_B})P4_G P(4, 好瓜)print(fP(凹陷|好瓜){P4_G})P4_B P(4, 坏瓜)print(fP(凹陷|坏瓜){P4_B})P5_G P(5, 好瓜)print(fP(硬滑|好瓜){P5_G})P5_B P(5, 坏瓜)print(fP(硬滑|坏瓜){P5_B})# 计算连续属性的条件概率p_density_G, p_density_B, p_sugar_G, p_sugar_B p()# 计算后验概率isGood P_G * P0_G * P1_G * P2_G * P3_G * P4_G * P5_G * p_density_G * p_sugar_GisBad P_B * P0_B * P1_B * P2_B * P3_B * P4_B * P5_B * p_density_B * p_sugar_Btotal_probability isGood isBadnormalized_isGood isGood / total_probabilitynormalized_isBad isBad / total_probabilityreturn isGood, isBad, normalized_isGood, normalized_isBadif __name__ __main__:dataSet, testSet, labels loadDataSet()testSet [testSet]df pd.DataFrame(testSet, columnslabels, index[1])print(待测样本)print(f待测集:\n{df})isGood, isBad, normalized_isGood, normalized_isBad bayes()print(后验概率)print(后验概率:)print(f好瓜后验概率分子: {isGood})print(f坏瓜后验概率分子: {isBad})print(fP(好瓜|xi) {normalized_isGood})print(fP(坏瓜|xi) {normalized_isBad})print(预测结果)print(predict --- 好瓜 if (normalized_isGood normalized_isBad) else predict --- 坏瓜)2.3.5 思维导图总结