Python 全栈 60 天精通之路

Day 53:朴素贝叶斯案例、原理、应用和拉普拉斯修正

发布日期:2022年3月14日 14:56 阅读: 313 访问: 314

今天探讨朴素贝叶斯分类原理,使用案例帮助大家尽快理解原理是专栏的宗旨,今天也不例外。 小美买苹果 小美比较喜欢吃苹果,所以去超市买水果时,苹果往往是必买的。长年累月,摸索出一套挑选苹果的方法,一般红润而圆滑的果子都是好苹果,泛青无规则的一般质量比较一般。 根据之前几次买过的苹果,已经验证过 10 个苹果,主要根据大小、颜色和形状这三个

今天探讨朴素贝叶斯分类原理,使用案例帮助大家尽快理解原理是专栏的宗旨,今天也不例外。

小美买苹果

小美比较喜欢吃苹果,所以去超市买水果时,苹果往往是必买的。长年累月,摸索出一套挑选苹果的方法,一般红润而圆滑的果子都是好苹果,泛青无规则的一般质量比较一般。

根据之前几次买过的苹果,已经验证过 10 个苹果,主要根据大小、颜色和形状这三个特征,来区分苹果是好果子是坏果子,如下:

编号 大小 颜色 形状 好果
1 青色 非规则
2 红色 非规则
3 红色 圆形
4 青色 圆形
5 青色 非规则
6 红色 圆形
7 青色 非规则
8 红色 非规则
9 青色 圆形
10 红色 圆形

加入现在小美在超市正要买的一个苹果特征如下:

大小 颜色 形状 好果
红色 圆形

问这是好果还是一般的苹果?

假定,苹果的三个特征:大小、颜色、形状是相互独立的,言外之意它们之间没有相关关系。这就是朴素贝叶斯中朴素的含义所在。

好还是一般

根据学习经验,我们先以第一节案例提出的问题为线索,从具体的求解问题中摸索出朴素贝叶斯模型的基本原理,这样有助于大家迅速掌握朴素贝叶斯模型。

定义苹果的情况为事件 c,事件 c 取值为好果或一般,概率 $P(c)$,求解方法:每类样本的个数除以所有样本个数,因此:

$$P(c=好果)= \frac {4}{10}$$

$$P(c=一般) = \frac{6}{10}$$

每个特征的条件概率等于此类别和特征下样本个数除以此类别的样本个数,因此:

编号 大小 颜色 形状 好果
1 青色 非规则
2 红色 非规则
3 红色 圆形
4 青色 圆形
5 青色 非规则
6 红色 圆形
7 青色 非规则
8 红色 非规则
9 青色 圆形
10 红色 圆形

$$P(大小=大 | c=好果) = \frac{3}{4}$$

编号 大小 颜色 形状 好果
1 青色 非规则
2 红色 非规则
3 红色 圆形
4 青色 圆形
5 青色 非规则
6 红色 圆形
7 青色 非规则
8 红色 非规则
9 青色 圆形
10 红色 圆形

$$P(颜色=红色 | c=好果) = \frac{4}{4}$$

编号 大小 颜色 形状 好果
1 青色 非规则
2 红色 非规则
3 红色 圆形
4 青色 圆形
5 青色 非规则
6 红色 圆形
7 青色 非规则
8 红色 非规则
9 青色 圆形
10 红色 圆形

$$P(形状=圆形 | c=好果) = \frac{3}{4}$$

编号 大小 颜色 形状 好果
1 青色 非规则
2 红色 非规则
3 红色 圆形
4 青色 圆形
5 青色 非规则
6 圆形
7 青色 非规则
8 红色 非规则
9 青色 圆形
10 圆形

$$P(大小=大 | c=一般) = \frac{3}{6}$$

编号 大小 颜色 形状 好果
1 青色 非规则
2 红色 非规则
3 红色 圆形
4 青色 圆形
5 青色 非规则
6 圆形
7 青色 非规则
8 红色 非规则
9 青色 圆形
10 圆形

$$P(颜色=红色 | c=一般) = \frac {1}{6}$$

编号 大小 颜色 形状 好果
1 青色 非规则
2 红色 非规则
3 红色 圆形
4 青色 圆形
5 青色 非规则
6 圆形
7 青色 非规则
8 红色 非规则
9 青色 圆形
10 圆形

$$P(形状=圆形 | c=一般) = \frac {2}{6}$$

因此根据朴素贝叶斯分类原理可得:

$$P(c=好果) \times P(大小=大 | c=好果) \times P(颜色=红色 | c=好果) \times P(形状=圆形 | c=好果) = \frac {4}{10} \times \frac {3}{4} \times \frac {4}{4} \times \frac{3}{4} = 0.225$$

$$P(c=一般) \times P(大小=大 | c=一般) \times P(颜色=红色 | c=一般) \times P(形状=圆形 | c=一般) = \frac{6}{10} \times \frac {3}{6} \times \frac{1}{6} \times \frac{2}{6} = 0.0167$$

因为 0.225 > 0.0167,所以得出结论:此苹果为好果。

朴素贝叶斯模型原理

根据贝叶斯公式可得:

$$P(c|x) = \frac {P(c) \times P(x|c)}{P(x)}$$

上式中概率 $P(c)$ 和 $P(x)$ 比较容易求出。关键是求解概率 $P(x|c)$。

朴素贝叶斯模型假定所有特征间都相互独立,英文名称为:naive bayesian model。

因此在各个特征间相互独立的前提假定下,$P(x|c)$ 计算公式便可进一步推导为如下:

$$P(x|c) = \prod_{i=0}^dP(x_i|c)$$

其中,$d$ 是样本的所有特征个数,在上面案例中特征数为 3。

因为各个属性间相互独立,所以 $P(x|c)$ 的概率等于每个特征的类条件概率 $P(x_i|c)$ 的乘积。

因此,联立上面两个公式,可以得到如下公式:

$$P(c|x) = \frac {P(c) \times \prod_{i=0}^dP(x_i|c)}{P(x)}$$

由于对所有类别来说,$P(x)$ 是相同的,因此贝叶斯分类器的目标函数进一步化简为如下:

$$h(x) = max(P(c)\prod_{i=0}^dP(x_i|c))$$

其中 $c$ 为某个类别,比如以上苹果案例中一共有两个类别:好果、坏果。

称上式为朴素贝叶斯分类器的目标函数。

朴素贝叶斯分类器的训练学习的过程便是基于训练数据,求得概率 $P(c)$,并且为每个属性求得概率 $P(x_i)|c$,然后相乘取最大值的过程。

特殊处理

值得注意,如果要预测如下苹果是否为好苹果:

大小 颜色 形状 好果
青色 圆形

通过已知的数据集发现:

$$P(颜色=青色 | c=好果) = 0 $$

那么无论 $P(其他属性取值 | c=好果)$ 取值为多大,哪怕在其他属性上取值多么像好果,相乘后都为 0,这显然不太合理。

通常解决这个问题的方法是要进行平滑处理,常用拉普拉斯修正。

拉普拉斯修正的含义,总共的分类数用 $N$ 表示;$d_i$ 属性可能的取值数用 $N_i$ 表示,因此原概率 $P(c)$ 的计算公式由:

$$P(C) = \frac{D_c}{D}$$

其中,$D_c$ 表示数据集中第 $c$ 类样本的总个数,$D$ 表示数据集中样本总个数,被拉普拉斯修正后 $P(c)$ 为:

$$P(C) = \frac{D_c+1}{D+N}$$

而概率 $P(x_i | c)$ 的计算公式由:

$$P(x_i|c) = \frac {D_{c,x_i}}{D_c}$$

其中,$D_{c,x_i}$ 表示第 $c$ 类样本中第 $i$ 个属性取值等于 $x_i$ 的样本个数。

被拉普拉斯修正后变为:

$$P(x_i|c) = \frac {D_{c,x_i} +1}{D_c + N_i}$$

小结

今天以小美买苹果判断好坏为案例引入朴素贝叶斯模型,以及使用一个极简 10 个样本的数据集,演示朴素贝叶斯分类的整个过程,进而提取归纳出朴素贝叶斯的模型原理,最后解决朴素贝叶斯问题可能遇到的特殊情况,某个分类中某个属性值的样本个数为 0 的问题,一般使用拉普拉斯平滑修正问题。示意图如下: