朴素贝叶斯
朴素贝叶斯算法是以后验概率最大为理论基础而得出的分类模型。要了解朴素贝叶斯,就需要先了解贝叶斯公式。
贝叶斯公式
首先,先看下面这个例子:
假设一所学校里面有40%的男生,60%的女生。
你在这所学校的大道上走,迎面走来一个人,由于比较远,看不清楚特征。现在需要你判断Ta的性别,请问你的答案是什么?
根据学校人数的分布情况,你知道这个学校女生多,因此,回答女生没一点毛病。
好了,现在Ta走近了一点,可以看到这个人穿着长裤。已知,男生总是穿着长裤,女生有一般穿着长裤,一半穿着裙子(短裤什么的在这个学校不流行,所以没人穿)。那么,现在你的回答是什么?
这个虽然麻烦一点,但是,简单的算一算还是能够得到答案的:男生全部穿长裤,所以所有男生都有可能是Ta,但女生有一般是穿的长裙,因此只有一半的女生有可能Ta。假设学校总共有100人(虽然有点小,但毕竟有人),那么候选人中有40个男生,30个女生。因此,是男生的概率大一些。
OK,你们又近了一些,你发现Ta留着长发!!!仔细想想,女生中有2/3的是留着长发的,而男生,嘻嘻,就只有一个(比较非主流撒)。那个留着长发的男生你正好认识,好像他是戴眼镜的,而Ta,并没有戴眼镜!!!没错,真相只有一个,Ta是一个女生,哇咔咔,真佩服自己,推理小王子有没有。
这个例子中,根据一个又一个特征的出现,我们得到了最后的结果,而从Bayes的角度,则可以这样理解:
在刚开始,我们仅仅知道先验概率,即学校的男女比例P(男生)和P(女生)。
之后,我们又得到了Ta的一个特征——穿长裤。那么,我们就需要来修正之前得到的先验概率了,因为有一半的女生已经被排除了。
这个就是Bayes公式,其一半形式如下:
或者是:
高大上的Bayes公式就这么出来了。
朴素贝叶斯
朴素贝叶斯的思想基础可以概括如下:对于给出的待分类项,求解在此项出现的条件下各个类别出现的概率,哪个最大,就分到哪一类中。仅仅如此,还不能称之为朴素。其之所以朴素,是因为它假定了变量之间相互独立。这个假设很强,强到是个人都觉得有问题。简单想想,如果有两个特征:穿裙子和性别,那么,很容易想到,穿裙子的基本都是女生(男生穿个裙子,确定不是在演小品?),所以,这两个特征之间相互不独立。在现实中,像这种例子还有很多,但是,朴素贝叶斯作为大杀器,在这种强假设的情况下,仍有优异的表现,不得不说,贝叶斯的强大啊。
朴素贝叶斯的正式定义如下:
设
为一个待分类项,而每个\(a\)为\(x\)的一个特征属性。
有类别集合
。
计算
。
求
所以,问题的关键就在于求解\(P(y_k|x)\)。
计算\(P(y_k|x)\)
假设我们已经有一个训练样本集\(X\)。那么,就可以统计各个特征在各个类别下的条件概率估计,即
如果各个属性见条件独立,则根据贝叶斯定理可得
由于分母是个常数,因此只需要将分子最大化即可,又因为各特征属性是条件独立的,所以有
拉普拉斯修正
计算\(P(y_k|x)\)时,由于特征空间较为稀疏,因此,常常会出现概率为0的情况,这是我们不愿意看到了。
比如:
在这种情况下,认为其概率为0显然是不合适的,因此,需要对其进行一些修正。常用的修正方法是拉普拉斯修正法。
原有的\(P(a_j|y_i)\)的计算方式为
引入拉普拉斯修正以后,计算公式变为
由于分子中含有常数1,因此分子必定非0,也就消除了上述的风险。
优缺点
优点
- 易执行
- 特征空间大
- 有效
缺点
- 无语义分析