朴素贝叶斯

Deadly 提交于 2019-12-06 14:42:58

朴素贝叶斯

(一)引言

朴素贝叶斯是一种基于贝叶斯定理和特征条件独立性假设的常见的机器学习分类算法。假设给定一个训练数据集,首先根据特征条件独立性假设来学习输入/输出 的联合概率分布(学习得到一个模型)。然后根据该模型,对于给定的新的样本数据(即不在训练数据集中),利用贝叶斯定理求出后验概率最大的输出y(类别标签)。


目标:给定样本数据

, 我们要求的是

。其中

代表类别,共有k个类(Mnist数据集k为10)。为了求

,我们要用到贝叶斯定理来求后验概率。下面先介绍一下贝叶斯定理(先验概率、后验概率)。

(二)理解贝叶斯公式

此部分参考博客(https://www.cnblogs.com/yemanxiaozu/p/7680761.html)。
(1)先验概率:根据客观事实和统计频率得出的概率。
(2)后验概率:某件事情已经发生了,在这个事实下,判断导致这件事情发生的不同原因的概率。后验概率要用先验概率来求解(贝叶斯公式)。
(3)不正经例子(这个例子造着玩的,觉得有问题请看下个例子或直接转参考的博客):
有一个班级只有小倪、小杨和班花小柳三人。重磅消息:小柳和班里的某个人交往了。已知小倪(高富帅)各方面都优于小杨且小柳只能被追,问小柳的交往对象是小倪的概率是多少?(假设你回答是80%,那么你已经进行了一次后验概率的猜测。)下面用贝叶斯公式来求解一下:
假设小倪和小杨对小柳进行追求的概率分别为80%和20%,且小倪追小柳成功的概率是60%,小杨追小柳成功的概率是40%。即
P(小倪追小柳)=80%
P(小杨追小柳)=20%
P(成功|小倪追小柳)=60%
P(成功|小杨追小柳)=40%


求解:
    



(4)正经的例子:
设想一个判断:已知烟龄10年以上的人群中患肺癌的概率是1e-4,其他人群中患肺癌的概率是1e-5。有知道10年以上烟龄的人在总人口中的比例大约为10%。
问:如果有一个人,他得了癌症,那么他抽烟10年以上的概率是多少?
解:

为烟龄10年以上,

为不吸烟或者烟龄不到10年。
      

为患肺癌,

为不患肺癌
则:**
        


   =


也就是说在这个题设下,随机选取一个患有肺癌的人,那么他烟龄10年以上的概率为52.6%,即使在全体人群中,烟龄10年以上的人数只占10%。

(三)朴素贝叶斯算法

理解了贝叶斯定理之后。再来看一看朴素贝叶斯算法:
(1)基本方法:
给定训练数据集T={X,Y}={

},其中

,X是样本特征向量集合,Y是样本标签集合。朴素贝叶斯方法需要通过训练数据集来学习联合概率分布P(X,Y)。其中P(X,Y)=P(X|Y)P(Y)。P(Y)即先验概率可以根据样本标签集合求得。
各标签值的概率:

(共K各类别)。
由训练数据集可得条件概率分布


朴素贝叶斯法对条件概率分布作了条件独立性假设,根据这个假设,可以得到:


其中j代表第j个特征。共有n个特征。
还记得引言中的目标嘛,现在用贝叶斯公式来求解

OK,至此我们得到了朴素贝叶斯的基本公式。目标是求

,且上式的分母对所有的类别值相同,所以我们只需要求:



其对应的标签值

就是求得的标签值y。
(2)总结一下朴素贝叶斯方法的流程:
输入:训练数据T={X,Y}={

},其中

是第i个样本的第j个特征。

是第j个特征可能取得第l个值。


输出:实例x的分类标签值。
① 计算先验概率以及条件概率:




②对于给定的实例

,计算
        


③确定实例x的类别:


(四)其他

后面会补充具体实例。并且用极大似然估计会出现索要估计的概率值为0的情况,会影响分类效果。可以用贝叶斯估计来解决。
参考文献:
【1】李航.统计学习方法
【2】博客(https://www.cnblogs.com/yemanxiaozu/p/7680761.html)。

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!