基于概率论的分类方法--朴素贝叶斯04

首先将朴素贝叶斯引入到分类问题中。

思想

通过某对象的先验概率,利用贝叶斯公式,计算出其后验概率,即该对象属于某一类的概率,选择具有最大后验概率的类作为该对象所属的类。

推导

1、设为一个待分类项xj={​a1,a2,...,am},每个a为xj的一个属性值;

2、设类别集合​c={​y1,y2,...,yn};

3、计算带分类样本xj属于各个类别的后验概率,P(y1|xj),P(y2|xj),...,P(yn|xj);

4、找出第三步骤中求得的最大后验概率值,其所对应的类yk即为该样本点所属类别。​

​求解


因而,​P(yk|xj)得:       对于推导过程中,第三步的求解过程,利用到贝叶斯公式(右图):

 

上式中,P(xj|yk)为:


现在假设各个属性间独立,从而得到:

将式3带入式1,从而得到:


同时,因为分母P(xj)的值对于所有类别yk都是一样,因此在计算的时候可以省略。对于每个P(ai|yk)值,都可以通过训练数据得来,其含义为:属性ai出现在类yk中的概率。P(yk)即为类yk在训练样本中出现的概率。

Q&A

​1. 贝叶斯核心部分,是假设属性间相互独立,从而大大简化了其计算过程,简化的同时,也造成了算法本身的缺陷,现实生活中,往往很多事物不是相互独立的。

2. 贝叶斯有个好处,计算简单,是一种比较快速的分类方法。

代码实现

1. 实现的时候,考虑到数据稀疏的特点,往往在假定在训练样本中,所有属性至少出现一次。

2. 求得的​P(xj|yk)往往比较小,因此往往加入对数后再进行比较logP(xj|yk)。

python实现见​github:https://github.com/xwzhong/classical-machine-learning-algorithm/tree/master/bayesian


例子:

    研究一个问题挂科与喝酒、逛街和学习之间的关系,根据表中的数据计算出,不喝酒、不逛街和学习了,判断是否挂科?(0代表不挂科,1代表挂科,其他类推)


y = f(x)   

不喝酒、不逛街和学习了  是y = f(x1=0,x2=0,x3=1) 是否挂科呢???




p(y=0|x1,x2,x3) > p(y=1|x1,x2,x3) -- > 不会挂科




阅读更多
个人分类: 机器学习
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭
关闭