贝叶斯公式
先看条件概率,就是指事件A在事件B发生条件下发生的概率:
同理
可以推出
可以推出 ,该公式就是贝叶斯公式。
如何让计算机程序对水果分类
1.特征处理(准备数据)
生活中人们根据水果的形状、颜色、大小、表面纹路等特征很容易就可以对水果进行正确分类。但是让计算机来做这件事情就不那么容易了。计算机并不能像人一样去识别水果的形状、颜色、大小、表面纹路,所以需要我们将水果的特征提取为计算机可以看懂的数据。
假设我们有一批水果,我们将水果的特征提取为下表的数据,让计算机从表中数据学习如何对水果分类。
水果名称 | 形状 1.不规则圆形 2.圆形 3.椭圆形 | 颜色 1.红色 2.深绿色 3.浅绿色 4.黄色 | 大小(水果表面任意两点间最大直线距离,单位:mm) 1.小于50 2.大于50小于100 3.大于100小于150 4.大于150 | 表面纹路 1.有条纹 2.无条纹 |
苹果1 | 1 | 1 | 1 | 2 |
苹果2 | 1 | 3 | 2 | 2 |
苹果3 | 2 | 1 | 2 | 2 |
西瓜1 | 2 | 2 | 3 | 1 |
西瓜2 | 2 | 2 | 4 | 1 |
西瓜3 | 3 | 2 | 4 | 1 |
橘子1 | 2 | 4 | 2 | 1 |
橘子2 | 2 | 4 | 1 | 1 |
橘子3 | 2 | 3 | 2 | 1 |
橘子4 | 3 | 4 | 1 | 1 |
从表中数据可以看出,我将所有的特征都转化成了数字,计算机程序更容易统计。而且我将水果的大小由连续值转化成了离散值,这是因为贝叶斯只能处理离散值。
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),可以转化为求P(C)和P(F|C)
假设各个特征在各个类别下条件独立,因此
所以
因为对于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.预测(计算各个分类的概率)
根据上面训练所得数据,开始计算
当C=苹果时,
当C=西瓜时,
当C=橘子时,
由计算结果看出,C=苹果的概率最大,这个水果的分类结果就是苹果。
为什么叫“朴素”呢
在朴素贝叶斯分类(训练环节的思路2)推导中,我们假设了各个特征在各类别下出现都是独立事件,也就是条件独立,这也是这个分类叫“朴素”的原因。
版权声明:转载请注明原文出处,谢谢!https://blog.csdn.net/jiandabang/article/details/97686791