朴素贝叶斯介绍

贝叶斯分类是一类分类算法的总称,这类算法均以贝叶斯定理为基础,故统称为贝叶斯分类。而朴素朴素贝叶斯分类是贝叶斯分类中最简单,也是常见的一种分类方法。

一、分类的数学描述

  • $C=y_{1}, y_{2}, \dots . y_{m}$:类别集合,每个y是一个类别
  • $I=x_{1}, x_{2}, \dots . x_{n}$:项集合,每个x是一个待分类项,每个待分类项有若干个特征

构造一个f,使得$y_{i}=f(x_{i})$,其中f就是分类器。

二、贝叶斯定理

贝叶斯定理实际上就是计算”条件概率”的公式。

条件概率(Conditional Probability)是指在事件B发生的情况下,事件A发生的概率,用P(A|B)表示,读作在B条件下的A的概率。

根据文氏图,可以很清楚地看到在事件B发生的情况下,事件A发生的概率就是P(A∩B)除以P(B)。

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

同时,P(A∩B)又可以由$P(A \cap B)=P(B | A) P(A)$表示,然后我们就可以推得贝叶斯公式:

$$
P(A | B)=\frac{P(B | A) P(A)}{P(B)}
$$

贝叶斯定理之所以有用,是因为我们在生活中经常遇到这种情况:我们可以很容易直接得出P(A|B),P(B|A)则很难直接得出,但我们更关心P(B|A),贝叶斯定理就为我们打通从P(A|B)获得P(B|A)的道路。

在分类任务中,我们可以把贝叶斯定理换一个更清楚的形式:

$$
P(类别 | 特征)=\frac{P(特征 | 类别) P(类别)}{P(特征)}
$$

三、朴素贝叶斯分类器

1、小例子

训练样本的属性集为$X={性别,年龄,婚姻}$,类别为$Y={Yes,No}$,表示是否购买产品,训练样本共有10条记录,购买记录有4条,不购买记录有6条。下面是具体的数据集:

性别(A)年龄(B)婚姻状况(C)是否购买(Y)
M未婚Yes
F已婚No
F未婚Yes
M已婚No
M离异No
M未婚Yes
F已婚No
M未婚Yes
F未婚No
F已婚No

现在给定一个测试样本X′为性别=F,年龄=中,婚姻=离异,预测该用户是否会购买公司的产品。因此,我们需要计算概率:

$$
\left { \begin{aligned} & P(Y=Yes|性别=F,年龄=中,婚姻=离异) \ & P(Y=No|性别=F,年龄=中,婚姻=离异) \end{aligned} \right.
$$

根据贝叶斯定理:

$$
\begin{aligned} P_1 &= P(Y=Yes|性别=F,年龄=中,婚姻=离异) \ &= \frac{P(性别=F,年龄=中,婚姻=离异 | Y=Yes) P(Y=Yes)}{P(性别=F,年龄=中,婚姻=离异)} \ &= \frac{P(性别=F|Yes) P(年龄=中|Yes) P(婚姻=离异|Yes) P(Y=Yes)}{P(性别=F) P(年龄=中) P(婚姻=离异)} \end{aligned}
$$

同时我们知道

$$
\left{ \begin{aligned} & P(Y=Yes) = 4/10 \ & P(性别=F|Yes) = 1/4 \ & P(年龄=中|Yes) = 1/4 \ & P(婚姻=离异|Yes) = 0 \ \end{aligned} \right.
$$

我们可以求得$P(Y=Yes|性别=F,年龄=中,婚姻=离异)$为:

$$
\begin{aligned} P_1 &= \frac{1}{4} \times \frac{1}{4} \times 0 \times \frac{4}{10} / \alpha = 0 \end{aligned}
$$

同理我们可以求得$P(Y=No|性别=F,年龄=中,婚姻=离异)$为:

$$
\begin{aligned} P_2 &= \frac{4}{6} \times \frac{3}{6} \times \frac{1}{6} \times \frac{6}{10} / \alpha = 0.033 / \alpha \end{aligned}
$$

其中$\alpha = P(性别=F) P(年龄=中) P(婚姻=离异)$。

由于$P_1 < P_2$,根据朴素贝叶斯算法,我们给出NO。

2、朴素贝叶斯算法的朴素一词解释

朴素贝叶斯算法是假设各个特征之间相互独立。

正是这个特征之间相互独立的假设,使得上面那个例子可以把P(Y=Yes|性别=F,年龄=中,婚姻=离异)拆分成P(性别=F|Yes) P(年龄=中|Yes) P(婚姻=离异|Yes)

为什么需要假设特征之间相互独立呢?

假如没有这个假设,那么我们对右边这些概率的估计其实是不可做的,我们这个例子有三个特征,其中性别包括{M,F},年龄包括{大,中,小},婚姻状态包括{未婚,已婚},那么三个特征的联合概率分布总共是三维空间,总个数为2*3*2=12个。但是现实生活中,往往有非常多的特征,每一个特征的取值也是非常之多,那么我们统计的时候,就需要在整个特征空间中去找,比如统计P(性别=F,年龄=中,婚姻=离异∣Y=Yes),我们就需要在YES的条件下,去找三种特征全满足的人的个数,这样的话,由于数据的稀疏性,很容易统计到0的情况。

3、拉普拉斯校准

当某个类别下某个特征项划分没有出现时,比如例子里的P(婚姻=离异|Yes)=0就是产生这种现象,这会令分类器质量大大降低。为了解决这个问题,我们引入Laplace校准,它的思想非常简单,就是对每类别下所有划分的计数加1,这样如果训练样本集数量充分大时,并不会对结果产生影响,并且解决了上述频率为0的尴尬局面。

4、朴素贝叶斯算法优缺点

  • 优点:

    • 朴素贝叶斯模型发源于古典数学理论,有稳定的分类效率
    • 对小规模的数据表现很好,能个处理多分类任务,适合增量式训练,尤其是数据量超出内存时,我们可以一批批的去增量训练
    • 对缺失数据不太敏感,算法也比较简单,常用于文本分类
  • 缺点:

    • 理论上,朴素贝叶斯模型与其他分类方法相比具有最小的误差率。但是实际上并非总是如此,这是因为朴素贝叶斯模型给定输出类别的情况下,假设属性之间相互独立,这个假设在实际应用中往往是不成立的,在属性个数比较多或者属性之间相关性较大时,分类效果不好。而在属性相关性较小时,朴素贝叶斯性能最为良好。对于这一点,有半朴素贝叶斯之类的算法通过考虑部分关联性适度改进
    • 需要知道先验概率,且先验概率很多时候取决于假设,假设的模型可以有很多种,因此在某些时候会由于假设的先验模型的原因导致预测效果不佳
    • 由于我们是通过先验和数据来决定后验的概率从而决定分类,所以分类决策存在一定的错误率
    • 对输入数据的表达形式很敏感

四、参考

赞赏一杯咖啡
0%