今天要和大家谈的朴素贝叶斯也是一种机器学习分类算法,但它和其他机器学习分类算法不太一样。对于大多数的机器学习分类算法,诸如 逻辑回归 、决策树、SVM等,他们都是判别方法,也就是直接学习出特征X和类别Y之间的关系,但朴素贝叶斯是基于贝叶斯决策理论和特征属性独立假设的生成方法。
下面我们先来了解贝叶斯决策理论。
一、贝叶斯决策理论
贝叶斯决策论是概率框架下实施决策的基本方法。对分类任务来说,在所有相关概率都已知的理想情况下,贝叶斯决策论考虑如何基于这些概率和误判损失来选择最优的类别标记。下面我们举个多分类任务。
假设类别标记有N种可能,即,
是将一个真实标记为
的样本误分类为
所产生的代价。则将一个样本x分类为
所产生的期望代价如下:
这个式子的含义:在我们不知道样本x的真实标记的情况下,我们主观的判断这个样本属于,这个式子就为我们的主观判断施加一个代价。如果我们主观判断的标记和真实标记一样,则这个代价会很小,反之代价会很大。
我们希望我们主观判断的标记和样本的真实标记一致,也就是选择一个代价最小的主观判断,数学描述如下:
若 , 则
,于是最小化代价等价于
。于是对每一样本x,我们选择使后验概率
最大的类别标记。
所以,我们要最小化代价等价于求最大的后验概率,但这通常是很难直接获得的,我们可以考虑贝叶斯公式。
其中P(c)是类先验概率,表达了样本空间中各类样本所占的比例,根据大数定律,当训练集包含充足的独立同分布样本时,P(c)可通过各类样本出现的频率来进行估计。
P(x|c)是样本x相对于类标记c的类条件概率,由于它涉及关于x所有属性的联合概率,直接根据样本出现的频率来估计将会遇到严重的问题。例如,样本x有d个属性都是二值的,则样本空间将有中可能的取值,但如果d很大,则样本空间的可能取值数远大于训练样本数,这时候有许多可能的样本没有出现在训练集中,但它们的概率不一定为0。这就是“未被观察到”和"概率为0"的矛盾问题。
P(x)是归一化因子,对于比较和
的大小没有影响。
下面我们的一个难点是求P(x|c),一种可行的思路是假设P(x|c)具有确定形式并且被参数向量唯一确定,则我们可利用极大似然估计法求出
。
比如我们假设P(x|c)服从的高斯分布,则利用极大似然估计求出:
,
其中,为训练集中类别标记为c的样本集合。
很明显,这种方法有个致命的缺陷:如果假设的概率分布形式不符合潜在的真实数据分布,则估计结果很不好。
二、朴素贝叶斯
为什么我们求P(x|c)会很困难,原因在于它涉及关于x所有属性的联合概率,难以从有限的训练样本直接估计。为了避免这个障碍,朴素贝叶斯就假设所有属性相互独立,有了这个假设,求P(x|c)就有如下公式。
其中d为属性个数,为x在第i个属性上的取值。
下面我们的任务就是求出每个。对离散属性来说,它的值为在类别标记为c的训练样本中,第i个属性取值为
的样本所占的比例。即
。
虽然朴素贝叶斯所假设的属性独立在现实情况中很少满足,但这并不影响它的使用,特别是在文本分类中效果良好,一个具体的例子可以参照 留言检测。