机器学习小白笔记系列——朴素贝叶斯

本系列是针对于DataWhale学习小组的笔记,从一个对统计学和机器学习理论基础薄弱的初学者角度出发,在小组学习资料的基础上,由浅入深地对知识进行总结和整理,今后有了新的理解可能还会不断完善。由于水平实在有限,不免产生谬误,欢迎读者多多批评指正。如需要转载请与博主联系,谢谢

朴素贝叶斯核心概念


判别模型与生成模型

机器学习中针对分类问题有两类主要的建模方法,分别称为判别模型生成模型,常见的逻辑回归、线性回归、支持向量机、人工神经网络等模型都属于判别模型,而隐马尔可夫模型、高斯混合模型、受限玻尔兹曼机及今天要讲的朴素贝叶斯均属于生成模型。总的来说,机器学习分类所要实现的目标就是基于有限的训练样本尽可能准确地估计出条件概率P(y|x),但上述两种建模方法在思路和效果上均有所不同。

判别模型:通过训练集构建输入变量x(如西瓜响声是否“清脆”等)与输出变量y(如西瓜是否甜)之间的关系,直接获得条件概率分布P(y|x),然后在新数据集中根据已知的x来预测y的值。

生成模型:先根据训练集构建输入变量x与输出变量y之间的联合概率分布P(x,y),再通过贝叶斯公式推出条件概率分布P(y|x)来进行预测。生成模型由于计算了联合概率,可以获得关于样本更多的信息,但会加大计算量,另外由于样本数量往往有限而且可能存在类别间的不平衡,因此通过估计得到一个接近真实分布的联合概率比较困难,所以实际情况中生成模型的应用会少一些。

关于二者的思想和区别我目前理解还不够深刻,需要进一步查阅资料并在实践中探索

贝叶斯决策理论

贝叶斯决策理论是概率框架下实施决策(在多个可能类别中做出选择)的基本方法。它的核心思路是最小化各类判断失误带来的总体风险。在这里我们主要关注其针对分类任务的决策方法。假设我们的数据最终所属类别有\(Y=\left \{ c_1,c_2\cdots,c_N \right \}\)共N种,设\(λ_{ij}\)为将实际为\(c_j\)的样本错误分类为\(c_i\)带来的损失(在这里我们假设其在判断正确是为0,判断错误时为1),x为一个已知包含某些特征(如颜色=“青绿”,声音=“清脆”等)的样本,我们基于后验概率\(𝑃(𝑐_𝑖|𝑥)\)可以获得将当前样本x分类为\(𝑐_𝑖\)所产生的期望损失,即在样本x上的条件风险。

\[R(c_i|\mathbf{x}) = \sum_{j=1}^N \lambda_{ij} P(c_j|\mathbf{x}) \]

而要想最小化总体风险,我们实际上就要找到一个最优判断依据(策略)h,使得针对各种特征组合不同的样本x判断时条件风险R均为最小值,当\(λ_{ij}\)为01分布时,最优策略\(h^*\)可写作:

\[h^* (x) = argmin_{c\in y} R(c|\mathbf{x}) = argmin_{c\in y} P(c|\mathbf{x}) \]

到这里我们发现,正如我们前面所言,分类决策任务的解决最终可以化简为对因变量相对于自变量间的条件概率P(y|x)的估计。

又因为我们前面讲过的,在贝叶斯模型等生成模型中,我们要利用联合分布来计算条件分布,根据大一概率论中讲过的贝叶斯公式,我们可以得出:

\[P(c|x) = \frac{P(x,c)}{P(x)} = \frac{P(c) P(x|c)}{P(x)} \]

在这里我们给已知特征向量x的前提下样本类别为c的条件概率P(c|x)取另一个名字叫做“后验概率”;而不确定样本特征向量x时样本类别为c的概率P(c)称之为“先验概率”;P(x|c)是样本x对于类标记c的类条件概率,或称为“似然”;而P(x)是用于归一化的“证据”因子,它由于与类别无关而在所有策略“后验概率”的计算中都是一样的,可以忽略。

此时估计“后验概率”的任务变成了估计“先验概率”和“似然”,“先验概率”P(c)为样本空间中各类样本所占的比例,根据大数定理,可通过训练集中各类样本出现的频率来估计。但在估计“似然”P(x|c)我们会发现一个问题,当特征向量x中包含的特征数目很多时,由于涉及各属性的联合概率,可能产生组合爆炸的问题(比如西瓜的颜色有5种,声音有2种,外形有3种,则不同特征组合的样本就有30种),利用训练集中有限的样本难以准确地对其分布进行估计。因此我们需要引入极大似然估计的思想来解决这一问题。

极大似然估计

估计类条件概率有一种常用的策略就是先假定其具有某种确定的概率分布形式,再基于训练样本对概率分布的参数进行估计。这里我们常用的方法之一是极大似然估计法,即根据实验数据采样来估计概率分布参数。在这里我们暂时忽略推导过程(以后补充。。),令\(D_c\)为训练集D中类别为c的样本集合,假设样本独立同分布,可以得到参数\(θ_c\)对于数据集\(D_c\)的似然为\(P(D_c|θ_c)\),由于其计算中的连乘操作可能导致数值下溢(即小于1的数连乘可能导致最终结果太小而无法被计算机存储),我们常利用对数似然来代替,这样就可以将连乘变为连加操作:

\[P\left ( D_c | \theta _c \right )=\prod _{x\in D_{c}}P\left ( x | \theta _{c} \right ) \]

\[LL\left ( \theta _{c} \right )=logP\left ( D_{c}|\theta _{c} \right )=\sum _{x\in D_{c}}logP\left ( x|\theta _{c} \right ) \]

所谓的极大似然估计就是在概率分布模型参数\(θ_c\)的所有取值中找到一个能使我们已有数据出现可能性最大的值,因此P(x|c)的概率分布参数\(θ_c\)的极大似然估计为:

\[\hat{\theta_{c}}=argmax_{\theta c}LL\left ( \theta _{c} \right ) \]

朴素贝叶斯方法

由前面的讨论我们可以发现,“似然”P(x|c)是所有属性上的联合概率,直接利用样本来估计会有困难。为了简化问题,在朴素贝叶斯方法中我们采用“属性条件独立性假设”,这代表我们假设了各属性间是相互独立没有影响的,因此可以用每个属性概率的总乘积来代替一个联合概率,此时,根据贝叶斯判定准则,有:

\[h_{nb}(\mathbf{x}) =\arg max_{c\in \mathcal{Y}}P(c)P(\mathbf{x}|c) = \arg max_{c\in \mathcal{Y}}P(c)\prod_{i=1}^d P(x_i|c) \]

参考资料:

  1. https://github.com/datawhalechina/team-learning/tree/master/机器学习算法基础 datawhale小组学习资料
  2. https://zhuanlan.zhihu.com/p/32655097 判别模型与生成模型
  3. https://www.zhihu.com/question/20446337 机器学习“判定模型”和“生成模型”有什么区别
  4. 《机器学习》周志华著
  5. https://blog.csdn.net/randompeople/article/details/82683146 朴素贝叶斯理论--自我理解
posted @ 2020-04-23 23:54  刘国栋_0017  阅读(227)  评论(0编辑  收藏  举报