机器学习系列-朴素贝叶斯分类器

贝叶斯分类器

什么是贝叶斯分类器

贝叶斯分类器是一类分类器的总称,这些分类器均以贝叶斯定理为基础,故统称为贝叶斯分类器。这些分类器中最简单的是朴素贝叶斯分类器,它几乎完全按照贝叶斯定理进行分类,因此我们从朴素贝叶斯分类器说起。

贝叶斯定理:

贝叶斯定理是概率论中一个比较重要的定理,在讲解贝叶斯定理之前,首先回顾一下贝叶斯定理的基础:条件概率和全概率公式。

  • 条件概率:设\(A,B\)是两个事件,且\(P(A)>0\),称

\[P(B|A)=\frac{P(AB)}{P(A)} \]

为在事件\(A\)发生的情况下事件\(B\)发生的条件概率。

条件概率很容易理解。一般情况下,概率可以表示为事件所包含的基本事件数(表示为\(count(B)\))与样本空间的基本事件数(表示为\(count(S)\))之商,即

\[P(A)=\frac{count(B)}{count(S)} \]

当我们在求条件概率时,分母不再是\(count(S)\)而是\(count(A\cap S)\),而分子也变成了\(count(A\cap B)\),因此

\[P(B|A)=\frac{count(AB)}{count(AS)}=\frac{count(AB)}{count(A)} \]

因为\(\frac{count(AB)}{count(A)}=\frac{P(AB)count(A)}{P(A)count(A)}\),约去\(count(A)\),就得到了条件概率公式。

  • 全概率公式:设试验\(E\)的样本空间为\(S\)\(A\)\(E\)的事件,\(B_1,B_2,...,B_n\)\(S\)的一个划分,且\(P(B_i)>0(i=1,2,...n)\),则

\[P(A)=\sum_{i=1}^{n}P(A|B_i)P(B_i)$$称为全概率公式。 全概率公式的证明也很简单: $A=AS=A(B_1\cup B_2\cup ...\cup B_n)=AB_1\cup AB_2\cup ...\cup AB_n$,因为$P(B_i)>0$ 且 $(AB_i)(AB_j)=\varnothing,i\neq j,i,j=1,2,...,n$,所以, $P(A)=\sum_{i=1}^{n} P(AB_i)=\sum_{i=1}^{n} P(A|B_i)P(B_i)$ 介绍完上面两个公式,就可以引出贝叶斯公式: * 设试验$E$的样本空间为$S$,$A$为$E$的事件,$B_1,B_2,...,B_n$为$S$的一个划分,且$P(A_i)>0,P(B_i)>0(i=1,2,...n)$,则 $$P(B_i|A)=\frac{P(A|B_i)P(B_i)}{\sum_{j=1}^{n}P(A|B_j)P(B_j)}\]

称为贝叶斯公式。

贝叶斯分类器

贝叶斯公式的直观意义显而易见:当我们得知了\(P(B_i|A),P(B_i)\)就可以求\(P(A|B_i)\)。对应到分类任务中,就是当我们得知了\(P(\)属性\(|\)类别\(),P(\)属性\()\)就可以求\(P(\)类别\(|\)属性\()\)

朴素贝叶斯分类的定义如下:

1、设\(X=\{a_1,a_2,...,a_m\}\)为一个待分类项,而每个\(a\)\(x\)的一个特征属性。

2、有类别集合\(C=\{y_1,y_2,...,y_n\}\)

3、计算\(P(y_1|x),P(y_2|x),...,P(y_n|x)\)

4、如果\(P(y_k|x)=max\{P(y_1|x),P(y_2|x),...,P(y_n|x)\}\),则\(x\in y_k\)

计算\(P(y_i|x)\)的方式如下:统计得到在各类别下各个特征属性的条件概率估计。即\(P(a_1|y_1),P(a_2|y_1),...,P(a_m|y_1);P(a_1|y_2),P(a_2|y_2),...,P(a_m|y_2);...;P(a_1|y_n),P(a_2|y_n),...,P(a_m|y_n)\),如果各个特征属性是条件独立的,则根据贝叶斯定理有如下推导:
\(P(y_i|x)=\frac{P(x|y_i)P(y_i)}{P(x)}\),因为分母对于所有类别为常数,因为我们只要将分子最大化皆可。又因为各特征属性是条件独立的,所以有:

\[P(x|y_i)P(y_i)=P(a_1|y_i)P(a_2|y_i)...P(a_m|y_i)P(y_i)=P(y_i)\prod_{j=1}^{m}P(a_j|y_i) \]

估计类别下特征属性划分的条件概率及Laplace校准

由上文看出,计算各个划分的条件概率\(P(a|y)\)是朴素贝叶斯分类的关键性步骤,当特征属性为离散值时,只要很方便的统计训练样本中各个划分在每个类别中出现的频率即可用来估计\(P(a|y)\),下面重点讨论特征属性是连续值的情况。当特征属性为连续值时,通常假定其值服从高斯分布(也称正态分布)。即:
\(g(x,\eta ,\sigma)=\frac{1}{\sqrt{2\pi}\sigma}e^{\frac{-(x-\eta)^2}{2\sigma^2}}\),而\(P(a_k|y_i)=g(a_k,\eta_{y_i} ,\sigma_{y_i})\),因此只要计算出训练样本中各个类别中此特征项划分的各均值和标准差,代入上述公式即可得到需要的估计值。均值与标准差的计算在此不再赘述。另一个需要讨论的问题就是当\(P(a|y)=0\)怎么办,当某个类别下某个特征项划分没有出现时,就是产生这种现象,这会令分类器质量大大降低。为了解决这个问题,我们引入Laplace校准,它的思想非常简单,就是对没类别下所有划分的计数加1,这样如果训练样本集数量充分大时,并不会对结果产生影响,并且解决了上述频率为0的尴尬局面。

朴素贝叶斯算法的优缺点

优点:

  1. 数学基础坚实,分类效率稳定,容易解释;
  2. 所需估计的参数很少,对缺失数据不太敏感;
  3. 无需复杂的迭代求解框架,适用于规模巨大的数据集。

缺点:

  1. 属性之间的独立性假设往往不成立(可考虑用聚类算法先将相关性较大的属性进行聚类);
  2. 需要知道先验概率,分类决策存在错误率。

朴素贝叶斯分类器是个非常简单的分类器,原理完全基于概率论中的贝叶斯定理,但是它的假设条件对于现实应用有些严苛,不过,这并不妨碍朴素贝叶斯分类器在垃圾邮件识别,不真实账号检测等领域发挥重大作用。用已故的统计学家George E. P. Box的话来说,就是:All models are wrong, but some are useful.

posted @ 2017-11-22 13:29  bubingy  阅读(762)  评论(0编辑  收藏  举报