目录
1 前置概念
- 先验概率:在不知道事务特征的情况下,根据以往的经验,判断出这件事发生的概率,这个概率就是先验概率,即:
- 后验概率:与先验概率相对应,是知道了事务特征判断出来的从而得出的事件发生的概率就是后验概率,即:
- 联合概率:两件事同时发生的改率,比如A发生且B发生,可以写作:
- 贝叶斯定理:贝叶斯定理起初是为了解决逆概率的问题,通过现象倒推本质,比如,如果在一个黑箱里摸球,箱中有3个红球7个黑球,可以轻易得出摸出红球的概率是0.3,现在假设不知道盒中有多少个黑球多少个红球,通过不断的摸球,不断的计算,摸球,再修正自己的结果,最终可以预测到黑盒中红球和黑球的比例。
贝叶斯公式如下:
分析这个公式,可以得到很多有意思的事情。首先叫做先验概率,叫做后验概率,而剩余的部分则剩下了:,观察这个部分,因为我们知道,条件概率公式是:,即两事件的联合概率比上作为条件的那个事件单独的概率,带入条件概率公式可以得到剩余部分变成了:。
此时,分析A事件和B事件的关系可以得到:
- 当A,B相互独立的时候,,此时,后验概率就等于先验概率。
- 当A,B相交时,两者存在重叠部分,,此时,后验概率就小于先验概率。
- 当A,B相包含时,,或,此时,后验概率就大于于先验概率。
画出文氏图可以很清楚的看出这三种情况:
因此这个剩余部分起到一个修正先验概率的作用,因此叫做可能性函数。
2 朴素贝叶斯算法
朴素贝叶斯是一种生成式模型,是在贝叶斯算法上做了简化,即假设定给定目标值的条件下,各个特征相互独立,这个简化使得各个特征对分类结果的影响较为平均,一定程度上降低了分类器的分类效果,但是极大的简化了算法的复杂度。引入CS229中的例子做解释。
使用朴素贝叶斯做垃圾邮件的分类器,首先构建特征向量,用特征向量来描述一封邮件。选取字典或者历史邮件中嘴常用的10000个词,一封邮件中出现的词标为1,未出现的词标为0,这样就得到了一个10000维的向量,每个元素的值为0或1,这个向量就是可以用来描述一封邮件的特征向量。
其中, 是向量中第 i 个元素,。
目标是建模计算出 和 ,然后根据这两项计算出,,这样就可以使用贝叶斯公式计算出后验概率了。首先使用朴素贝叶斯的假设,假设 给定 的情况下,是相互独立的,因此:
模型参数化:
由此写出联合似然函数:
使用极大似然估计法求解得到:
因此,使用贝叶斯公式计算概率如下:
由此计算出后概率,选择后验概率最高的类就是朴素贝叶斯的分类结果。
但是这个计算方法有一个致命的问题,就是假如有一个单词第一次出现,他在特征向量中的索引是 (随便取的字母无特殊含义),那么 ,,也就是说,,这就导致带入贝叶斯公式后分子分母均为0,导致模型崩溃。
3 拉普拉斯平滑
为解决上提到的问题,引入了Laplace Smoothing。假设y的取值有k个,引入之后公式做如下调整:
即在分母加上y的取值范围大小,在分子加上1,分子+1是防止概率为0,分母+分类数是为了使得所有概率相加等于1。
修正各分量的公式如下:
4 总结
朴素贝叶斯是一个非常简单,非常 “quick and dirty” 的算法,他不需要多次迭代来学习数据,只需要计数就可以得出预测结果。写完这个博客感觉有点不知所云,所以我再来总结一下。
首先朴素贝叶斯最核心的一个思想就是朴素贝叶斯假设,也叫做条件独立性假设。朴素贝叶斯是一个最简单的概率图模型之一,概率图模型去解释最为简单明了,是一个y到x的有向概率图。或者也可以简单理解为在给定目标值y的情况下,各个特征x之间是相互独立的,用上面的例子解释就是,在一封邮件中,假设各个单词的出现概率是相互独立的,一个单词的出现对其他单词没有影响。这个假设的唯一目的就是为了简化计算,当特征数量足够多的时候,如果不使用这个假设,计算量会十分庞大。公式如下:
整个预测的核心方法就是使用贝叶斯定理对后验概率进行计算,就是计算在给定特征的条件下,预测目标取得各个目标值的概率:。
其中,y如果取值是0或1,则是服从伯努利分布,如果y的取值范围为多个类别,则是服从类别分布(categorial distribution);如果x是离散型,则同样,两个特征则x服从伯努利分布,多个特征则x服从类别分布;如果x是连续型,则服从高斯分布。根据这些假设便可用MLE估计出、,然后用贝叶斯公式就可以计算出后验概率了。