您的位置:首页 > 其它

机器学习实战笔记(3.1)-朴素贝叶斯算法(原理分析)

2017-10-20 16:42 597 查看
机器学习实战笔记(3)-朴素贝叶斯算法(原理分析)

 

       相比较前面的决策树,这个章节是绕口更难理解。我是反复看,反复看不同人写的笔记,看了10多遍加几个具体的例子才豁然开朗了。

为何这么难理解? 主要是引入了概率论后,太多的文章都是一个模式:引用公共的一段数学描述,

不说人话!不说人话!不说人话!

大家都被一堆概率符号给打败了。

我下面以一个真实的例子来描述朴素贝叶斯分类器的原理和算法。举例接近生活,让我们有直观的认识。

 

比如一个数据表:背影描述一个人,判断是男还是女

 

身高 体重 皮肤 体型 步伐  等数据,可以推断是男性还是女性。

 

身高 体重 皮肤体型 
步伐

175 75  粗糙  胖 
矫健

165 55  正常  瘦
 正常

165          52  细腻  
标准   轻盈

172 65  正常  标准  
轻盈

158 50  白皙  瘦 
矫健

 

这里的分类就是 男 女两类。

 

我们需要解决下面的问题:一个背影身高1.68,体重=62,皮肤=白皙,体型=标准,步伐=轻盈, 那么是女士还是男士?

 

按照统计来说,我们可以算概率。我们可以从一定的人群数据中得到一些规律来判断。

 

P(男|(身高1.68,体重=62,皮肤=白皙,体型=匀称,步伐=轻盈)的概率是多少?

P(女|(身高1.68,体重=62,皮肤=白皙,体型=匀称,步伐=轻盈)的概率是多少?

那个概率大,那么性别就判定了,这个就是概率思路在分类中的应用。

 

贝叶斯概率用在分类上,就是如下的计算过程:

 

P(男|(身高1.68,体重=62,皮肤=白皙,体型=匀称,步伐=轻盈) = P( (身高1.68,体重=62,皮肤=白皙,体型=匀称,步伐=轻盈)|男)* P(男)/ P(身高1.68,体重=62,皮肤=白皙,体型=匀称,步伐=轻盈)

 

在这个公式中,P(身高1.68,体重=62,皮肤=白皙,体型=匀称,步伐=轻盈)和P(男)在样本中是可以简单计算出来的。下面就是要计算:

P( (身高1.68,体重=62,皮肤=白皙,体型=匀称,步伐=轻盈)|男)=? 这里就是要用到了条件概率了。

按照朴素贝叶斯的思路,可以认为:身高 ,体重 ,皮肤 ,体型 ,步伐 都是独立的事件,彼此没有依赖。身高多少不受到皮肤体型的影响(其实自然角度看,当然是互相影响的,不过认为是彼此独立的,可以简化计算!!)

那么就简单了:

P( (身高1.68,体重=62,皮肤=白皙,体型=匀称,步伐=轻盈)|男)= P( 身高1.68|男)* P( 体重62|男)* P( 皮肤=白皙|男)* P( 身材=匀称|男)* P( 步伐=轻盈|男)

 

本来复杂的条件概率就变成了简单的计算P( 身高1.68|男)等的乘积了。

P( 身高1.68|男)很简单啊, 统计样本中比如有55个男士,5个是1.68, 那么概率就是1/11.其它的计算同理。

 

女士的概率同样方法计算,无非是条件变成了P( 身高1.68|女)* P( 体重62|女)

 

然后比较概率大小即可。谁大,分类就是谁。当然也可以三分类,四分类等。二分类最简单直观。

分类的准确率取决于样本数量和各个属性的独立程度。对于上面的举例,样本得有几百个才能有良好的训练效果。

 

以上就是朴素贝叶斯分类的计算方法。

 

实际应用中,分为两类:

 

1.  每个样本特征属性完备,统计即可。比如化验结果等。

2.  分析文章句子是否是某个分类,是否是垃圾邮件等。这个需要对某一些属性做一些补偿,比如拉普拉斯平滑。

 

本文参考学习不少网文。

参考资料: 

                 1. 周老师西瓜书 2. 机器学习实战

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息