机器学习:朴素贝叶斯分类

贝叶斯公式

先看条件概率,就是指事件A在事件B发生条件下发生的概率:  P(A|B) = \frac{P(A\cap B)}{P(B)} 

同理 P(B|A) = \frac{P(A\cap B)}{P(A)}

可以推出 P(A\cap B) = P(A|B)P(B) = P(B|A)P(A)  

可以推出 P(A|B) = \frac{P(A)P(B|A)}{P(B)}  ,该公式就是贝叶斯公式


如何让计算机程序对水果分类


1.特征处理(准备数据)

生活中人们根据水果的形状、颜色、大小、表面纹路等特征很容易就可以对水果进行正确分类。但是让计算机来做这件事情就不那么容易了。计算机并不能像人一样去识别水果的形状、颜色、大小、表面纹路,所以需要我们将水果的特征提取为计算机可以看懂的数据。

假设我们有一批水果,我们将水果的特征提取为下表的数据,让计算机从表中数据学习如何对水果分类。

水果名称

形状

1.不规则圆形

2.圆形

3.椭圆形

颜色

1.红色

2.深绿色

3.浅绿色

4.黄色

大小(水果表面任意两点间最大直线距离,单位:mm)

1.小于50

2.大于50小于100

3.大于100小于150

4.大于150

表面纹路

1.有条纹

2.无条纹

苹果11112
苹果21322
苹果32122
西瓜12231
西瓜22241
西瓜33241
橘子12421
橘子22411
橘子32321
橘子43411

从表中数据可以看出,我将所有的特征都转化成了数字,计算机程序更容易统计。而且我将水果的大小由连续值转化成了离散值,这是因为贝叶斯只能处理离散值。


2.训练(统计数据)

到现在为止,计算机程序已经可以获得上表的数据了。

那么问题来了,假设有一个新的水果,形状为不规则圆形,颜色为红色,大小60mm,表面无纹路,转为化特征数据:

(形状,颜色,大小,表面纹路)=(1,1,2,2)

怎么告诉程序对这个水果分类呢?

思路1:可以从上表数据中统计各个分类下特征(1,1,2,2)出现的概率,概率最大的分类就是这个水果的分类。但是我们发现这个特征并没有出现在我的数据中。

这个思路是统计各个特征共同出现的概率,也就是联合概率。案例中特征维度为4,那么至少需要各个特征值的数目的乘积个数数据才能覆盖所有特征组合,也就是至少需要3*4*4*2=96条数据,才能覆盖所有特征组合。而且我们需要从样本数据中统计概率,那么样本数据量就必须远大于96,才能满足统计频率约等于概率。

结论就是,思路1需要大量的样本,然而现实中样本数量并不能很好满足,所以思路1行不通。

思路2:从贝叶斯公式(其中F表示一个水果的所有特征,C表示分类)

P(C|F) = \frac{P(C)P(F|C)}{P(F)}

可以看出,求出现某个特征时水果类别的概率P(C|F),可以转化为求P(C)和P(F|C)

假设各个特征在各个类别下条件独立,因此

P(F|C)=P(f1|C)P(f2|C)P(f3|C)P(f4|C)

所以          P(C|F)=\frac{P(C)P(f1|C)P(f2|C)P(f3|C)P(f4|C)}{P(F)}

因为对于C取不同值(苹果、西瓜、橘子)时,P(F)都是一样的,我们只需要统计P(C),P(f1|C),P(f2|C),P(f3|C),P(f4|C),最后再比较分子的大小,分子最大的分类就是最后的分类结果。这就是朴素贝叶斯分类。

统计数据如下表

水果类别P(C)P(形状|C)P(颜色|C)P(大小|C)P(纹路|C)
苹果0.3

1:0.67

2:0.33

3:0

1:0.67

2:0

3:0.33

4:0

1:0.33

2:0.67

3:0

4:0

1:0

2:1

西瓜0.3

1:0

2:0.67

3:0.33

1:0

2:1

3:0

4:0

1:0

2:0

3:0.33

4:0.67

1:1

2:0

橘子0.4

1:0

2:0.75

3:0.25

1:0

2:0

3:0.25

4:0.75

1:0.5

2:0.5

3:0

4:0

1:1

2:0

解释:苹果那一行,P(形状|C)那一列, 1:0.67表示形状=1的概率为.067,其他数据同理。

在我们的计算中,对概率为0的值通常使用一个极小值来替代,避免出现结果为0的情况,这里我们取位0.01。这种技巧叫“平滑”。


3.预测(计算各个分类的概率)

根据上面训练所得数据,开始计算  P(C|F)=\frac{P(C)P(f1|C)P(f2|C)P(f3|C)P(f4|C)}{P(F)}

当C=苹果时, P(C|F)=\frac{0.3*0.67*0.67*0.67*1}{P(F)}=\frac{0.09}{P(F)}

当C=西瓜时,P(C|F)=\frac{0.3*0.01*0.01*0.01*0.01}{P(F)}=\frac{0.000000003}{P(F)}

当C=橘子时,P(C|F)=\frac{0.3*0.01*0.01*0.5*0.01}{P(F)}=\frac{0.00000015}{P(F)}

由计算结果看出,C=苹果的概率最大,这个水果的分类结果就是苹果。


为什么叫“朴素”呢

在朴素贝叶斯分类(训练环节的思路2)推导中,我们假设了各个特征在各类别下出现都是独立事件,也就是条件独立,这也是这个分类叫“朴素”的原因。

 

版权声明:转载请注明原文出处,谢谢!https://blog.csdn.net/jiandabang/article/details/97686791

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值