今天介绍的朴素贝叶斯算法是基于贝叶斯定理和条件独立性假设的分类算法。它是一种典型的生成式算法,首先基于条件独立性假设用训练数据学习联合概率分布P(X, Y),然后根据此模型通过最大化后验概率对新来的数据x进行预测。
联合概率分布
根据贝叶斯算法思想,第一步是要学习P(X, Y),根据条件概率公式,我们可以通过求出条件概率p(x|y)和先验概率p(y)来得到联合概率分布,那么条件概率和先验概率我们怎么计算呢?用极大似然估计或者贝叶斯估计的方法!先验概率计算公式比较简单,用训练集中标签为的样本数比上样本总量即可:
(1)
但是条件概率的计算就比较麻烦了,我们先看一下计算公式:
(2)
m代表特征的维度,计算条件概率时,我们需要考虑每维特征的取值,假设标签有K个取值,每维特征有个取值,我们排列组合一下,相当于一共有。为了简化计算,朴素贝叶斯算法做出了条件独立性假设。条件独立性假设是指用于分类的特征在类别确定的情况是条件独立的。如果还是不明白,我们来看一下公式吧:
(3)
这样我们就可以单独学习每一维特征对应的条件概率再将它们作为当前特征对应标签下的条件概率。现在问题转为学习每一维特征对应的条件概率。设第j维特征可能取值的集合为,条件概率的极大似然估计是:
(4)
这是一个非常强的假设,在我们现实情况下,很少会出现特征之前完全不想关的情况,不过不可否认,在很多情况下,朴素贝叶斯的效果还是很好的,比如垃圾邮件过滤。
所以根据先验概率和条件概率,我们可以得到联合概率分布的公式:
(5)
接下来我们看一下如何最大化后验概率对新数据进行预测。
最大化后验概率
后验概率的计算公式是,我们把先验概率和条件概率带入
最大化后验概率得预测结果:
(6)
对任意分母都是一样的,所以我们的目标等价于:
(7)
现在模型的学习和预测流程我们已经清晰了,在讲解联合概率分布这一部分的时候,我们提到了可以用极大似然估计和贝叶斯估计进行参数估计,不过只用到了极大似然估计,参照前面的公式(1)(4)。
我们以垃圾邮件过滤为例来说明一下极大似然估计的局限性。假设现在我们已经有一个用极大似然估计来进行参数估计的朴素贝叶斯模型,当我们第一次收到来自诈骗公司Fraud company的垃圾邮件,我们从邮件中提取到了公司名称Fraud company作为一维特征加入到模型训练中。因为这各特征之前没有出现过,所以对。这导致在后面最大化后验概率时,那我们的模型就无法正确预测出这是一封垃圾邮件了。
为了解决这一问题,引入了贝叶斯估计。不同于最大似然估计,贝叶斯估计会在分子和分母上各加一个常数项来保障即使是新加入的特征参数估计值也不会为0:
(8)
(9)
同时保证了,
后验概率最大化含义
在《统计学习方法》中,作者证明了后验概率最大化等价于0-1损失函数下的期望风险最小化,我们先看一下0-1损失函数:
(10)
式中的f(x)是分类决策函数,可以认为就是模型的预测结果。这时,期望风险函数:
(11)
为了最小化期望风险,只需要对每一个X=x逐个最小化:
对于特定的x,模型预测结果只能有一个,所以在这种情况下,即选择X=x条件下,标签最多的类,这和我们前面定义的最大化后验概率是一样的。至此,我们得以证明后验概率最大化等价于0-1损失函数下的期望风险最小化。