本文主要用于理解朴素贝叶斯模型的原理,并且通过对实际案例的剖析来加深大家的理解。
基本目录如下:
先导数学知识
1.1 条件概率
1.2 贝叶斯定理
1.3 条件独立朴素贝叶斯模型
2.1 模型原理与流程
2.2 案例解析
------------------第一菇 - 先导数学知识------------------
在深入模型细节之前,还是先为大家铺垫一下理解该模型所需的先导数学知识。
1.1 条件概率
最基本的高中(初中)的知识,我们用来表示,在事件已经发生的前提下,事件发生的概率。若事件为独立事件,则我们可以知道,
若AB之间存在一定的关联性,则我们可以知道,
1.2 贝叶斯定理
伟大的贝叶斯定理如下所示,
该定理其实就是用来求解,已知在事件A发生的情况下B的概率,则交换俩个事件后,我们能通过该定理来求得在事件B发生的情况,事件A的概率。其实要推导上式也很简单,根据上面的条件概率公式,我们能得到,
即重新排序一下后面的式子,我们就能推理出贝叶斯定理。
1.3 条件独立
在图模型领域,条件独立的性质能用于简化模型的参数,其最基本的形式可以表达为,
上式代表的意思就是,X和Y是条件独立于Z。
------------------第二菇 - 朴素贝叶斯模型------------------
2.1 模型原理流程理解
朴素贝叶斯的分类方法其实就是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练集合,首先基于特征条件独立(朴素由此而来)学习输入,输出的联合概率分布,然后基于学到的,对给定的输入,利用贝叶斯定理求出后验概率最大的输出。把上面的贝叶斯定理,运用在分类问题上,我们可以得到一个浅显易懂的式子,
至此,大家应该对该模型有了一个初步的理解印象。接下来,我将详细阐述一下该模型的细节流程。
假设我们的训练集合为,
其中为维的向量(即每个输入,都有维特征),且输入样本之间无干扰,独立分布;输出样本。
则根据上述的贝叶斯公式,我们可以计算得出,
因此,我们的预测分类即为,
而对于所有的分类概率来说,其分母都是一致的,且各个特征之间满足条件独立的假设,因此,上式又可以简化为,
至此,整套朴素贝叶斯模型已经讲清楚了。肯定有很多数学基础不是太好的小伙伴已经被上面的式子绕晕了,别急,接下来我给大家演算一个案例,想必大家就应该都明白了。
2.2 案例解析
这里我用一个垃圾邮件过滤的case来跟大家演示朴素贝叶斯模型的整个工作原理。假设我们现在有两类邮件,分别为“垃圾邮件”与“正常邮件”。我们手中的训练数据(空格分词)如下,
垃圾邮件(共13个词):
- 点击 获得 更多 信息
- 购买 最新 产品 获得 优惠
- 优惠 信息 点击 链接
正常邮件(共10个词):
- 明天 一起 开会
- 开会 信息 详见 邮件
- 最新 竞品 信息
利用上述语料,我们要去预测
“最新 产品 优惠 点击 链接”
属于哪一类型的邮件?
首先,我们要训练一个朴素贝叶斯模型(计算先验概率)
然后我们针对词库(总共15个),
V = {点击,获得,更多,信息,购买,最新,产品,优惠,链接,明天,一起,开会,详见,邮件,竞品}
中的每一个单词,来分别计算每一个单词在俩个类别中的出现概率(采用加法平滑方法,详见我的另一篇博文 - 机器学习基础(3)- 数据平滑),
训练完毕后,我们就可以利用上述所计算的概率来计算,
而根据上面介绍的式子,我们可以计算得出,
同理可以计算得到,而基于本语料库,显然,我们可以得到,
因此我们的模型将这封邮件判别为垃圾邮件。当然,真实的应用场景肯定不会这样连乘(会有underflow的问题),所以一般我们都会加个log改连乘为累加~至此,整个朴素贝叶斯模型的应用案例就算解释清晰了,想必大家对此也有了更深的理解。
简单总结一下本文,先是铺垫讲述了一些基础的数学知识,接着详细阐述了贝叶斯模型的原理并附上了详细的案例解析。希望大家读完本文后对机器学习中的朴素贝叶斯模型这一块有全新的认识。有说的不对的地方也请大家指出,多多交流,大家一起进步~😁