朴素贝叶斯

朴素贝叶斯(Naive Beyes)是基于贝叶斯定理与特征条件独立假设的分类方法。对于给定的训练数据集,首先基于特征条件独立假设学习输入/输出的联合概率分布;然后基于此模型,对给定的输入x,利用贝叶斯定理求出后验概率最大的输出y。朴素贝叶斯法实现简单,学习与预测的效率都很高,是一种常用的方法。

原理

假设有一些数据D,其类别取值为0和1:

对于一个新样本x,我们希望模型能够预测出其对应的类别。其形式化表达为:

逻辑斯蒂回归等判别式模型直接对条件概率$p(y|x)$进行建模,找到一条决策边界将数据集中不同类别的数据点区分开。而朴素贝叶斯等产生式模型则是对联合概率$p(x, y)$进行建模,通过数据学习到类别$y=0$下的数据分布$p(x|y=0)$和类别$y=1$下的数据分布$p(x|y=1)$。对于新样本x,朴素贝叶斯计算出x在每个类别y下条件概率$p(x|y)$,并取概率值最大的类别作为最终的预测输出。

根据贝叶斯公式:

其中$p(y)$为类先验概率,$p(x|y)$为类条件概率。

假设

朴素贝叶斯需要求解的参数为:

假设x有d维,每个维度有$m_i$种取值可能。那么在K分类问题下,所需的参数个数为:

当维数d非常大时,显然所需求解的参数个数会呈指数爆炸,使得模型的求解变得异常困难。因此,为了解决参数个数指数爆炸的问题,朴素贝叶斯对条件概率分布作了条件独立性的假设,即当给定类别y时数据x中的各个维度之间是相互独立的。

这是一个很强的假设,与实际情况不太符合,因为现实中各个维度之间往往存在关联,这也是朴素贝叶斯的命名由来。但是通过这个朴素假设,朴素贝叶斯将参数个数减少到一个非常小的量级,有效提高了计算效率,并在实际应用中也取得了非常好的表现。

基于这个假设,朴素贝叶斯的模型可以表达为:

对于朴素贝叶斯的参数求解,在第六讲 Logistic回归+产生式模型中作了非常全面的讲解,这里就不再展开,想要深入了解的读者可以自行移步。

例一

《统计学习方法》page50,例4.1

试由下表的训练数据学习一个朴素贝叶斯分类器,并确定$x=(2,S)^T$的类标记y。表中$X^{(1)},X^{(2)}$为特征,取值的集合分别为$A_1={1,2,3}$,$A_2={S,M,L}$,y为类标记,$Y\in C={1,-1}$。

image

解:

通过表中数据计算类先验概率和类条件概率:

对于$x=(2,S)^T$,通过朴素贝叶斯公式,有:

因为$\frac{1}{45}<\frac{1}{15} \Rightarrow y=-1$,所以$x=(2,S)^T$的类标记为-1。

例二

试用下表的训练数据学习一个垃圾邮件分类器,并对新邮件“review us now”进行分类。

image

解:

左边的表格给出了所有样本的类别标签,可以看到垃圾邮件的概率$P(spam)=4/6$,正常邮件的概率为$P(ham=2/6)$。

右边的表格则分别给出了在垃圾邮件和正常邮件下各个单词出现的概率。

通过上述信息,我们可以利用朴素贝叶斯对新邮件“review us now”进行判定。其中单词“now”在词典里并没有出现,在这里我们简单得忽略掉这个单词。

在垃圾邮件下,新邮件“review us”出现的概率为:

在正常邮件下,新邮件“review us”出现的概率为:

通过贝叶斯定义,可以得到新邮件”review us“属于正常邮件的概率为:

从计算结果可以看到,”review us now“属于正常邮件的概率更高点,但是从表格中显然可以看出邮件D4:”review us“是属于垃圾邮件。这个不一致的问题在于单词”now“在词典中的缺失以及样本数量过少的原因。比如样本中正常邮件中并没有出现单词”account“,这使得任何包含”account“的新邮件都会被分类为垃圾邮件。

上述情况便涉及到一个零概率问题(Zero-Frequency Problem),即在计算新实例的概率时,如果某个分量在训练集中没有出现过,会导致整个示例的概率为0,这显然是合理的。为了解决这个问题,引入了拉普拉斯平滑(Laplace Smoothing)

朴素贝叶斯针对属性缺失问题,即测试样本中某些属性的值丢失,可以直接忽略这些属性,对计算结果并没有影响。

策略

朴素贝叶斯将示例分到后验概率最大的类中,这等价于期望风险最小化

假设选择0-1损失函数

式中$f(X)$是分类决策函数。这时,期望风险函数为:

期望是对联合分布$P(X,Y)$取的。由此取条件期望:

为了使期望风险最小化,只需对$X=x$逐个极小化:

这样一来,根据期望风险最小化准则就得到了后验概率最大化准则:

即朴素贝叶斯法所采用的原理。

高斯判别模型

在朴素贝叶斯中,特征向量$x$是离散的,服从多项分布。而在高斯判别分析(Gaussian Discriminant Analysis,GDA)中,我们假设$x$是连续的,服从高斯分布。高斯判别模型基于两点假设:y服从伯努利分布;x服从多元高斯分布。其分布概率密度为:

我们通过比值关系比较$p(x|y=1)$和$p(x|y=0)$的大小,并对其取对数:

其中$w=\mu{1} \Sigma-\mu{0} \Sigma$,$b=\frac{1}{2} \mu{0}^{T} \Sigma \mu{0}-\frac{1}{2} \mu{1}^{T} \Sigma \mu{1}+\ln \frac{\phi}{1-\phi}$。

从结果可以看到,高斯判别分析是一个线性模型,属于判别式模型。

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×