在继续机器学习的学习之前,先介绍几个前面没有涉及到的概念:
-
生成模型与判别模型
生成方法与判别方法是监督学习的两大方法,二者的主要区别在于:
- 生成方法由数据学习联合概率分布P(x,y),然后求出条件概率分布P(y∣x)作为预测的模型;【通过对联合分布采样可得到新样本】
- 判别方法则由数据直接学习函数f(x)或者条件概率分布P(y∣x)作为预测的模型。
生成模型的优势在于当训练数据较少时能具备更好的泛化能力,而判别模型通常在预测任务上表现更好,且适用于拟合大规模数据。
-
概率图模型
概率图模型是可以由有向图(称为贝叶斯网络)或者无向图(称为马尔可夫随机场)表示的概率模型,其一定满足条件独立假设(即多元变量的联合概率可表示为条件概率的乘积)
在Introduction中,我们提到理论最优的机器学习分类模型是贝叶斯分类器,然而这一模型难以直接实现。而朴素贝叶斯法就是在贝叶斯分类器的基础上对样本进行条件限制,从而使其容易实现。
朴素贝叶斯模型
- 朴素贝叶斯模型的本质是贝叶斯定理:
P(y∣x)=P(x)P(x,y)=P(x)P(y)P(x∣y)
其中P(y∣x)为后验概率分布,P(y)为先验概率分布,P(x∣y)为似然函数,P(x)为证据。【可参考贝叶斯估计理解】
- 这里只考虑离散输入的情形:记输入特征数为M(输入x=(x1,x2,⋯,xM)⊤),每个特征有L个可能特征值,输出空间共K个类别,那么模型可以表示为
P(y∣x1,⋯,xM)=P(x1,⋯,xM)P(y)P(x1,⋯,xM∣y)
其中xj∈Aj={aj1,aj2,⋯,ajL},j=1,2,⋯,M,y∈{c1,⋯,cK}。
- 朴素贝叶斯的另一核心在于条件独立假设:分类的特征在类别确定的条件下都是相互独立的,其可表示为
P(x1,⋯,xM∣y)=i=1∏MP(xi∣y)
于是模型表达式就变为
P(y∣x)=P(x)P(y)i=1∏MP(xi∣y)∝P(y)i=1∏MP(xi∣y).
因为分母在分类中保持不变,所以朴素贝叶斯模型的目标就是求输入x与输出y的联合分布。
- 朴素贝叶斯模型属于生成模型,也是最简单的概率图模型(贝叶斯网络)。其图示如下:

- 相比贝叶斯分类器,朴素贝叶斯模型牺牲了一定的分类正确率,但能够将参数量从O(K⋅LM)降到O(K⋅L⋅M),从而大大降低模型复杂度。
- 在训练后进行分类任务时,对于给定输入x,模型会输出后验概率最大的类别,即
y^=yargmaxP(y)i=1∏MP(xi∣y).
- 当输出为二分类,输入特征空间也为{0,1}时,朴素贝叶斯模型条件概率的对数形式恰为一个线性判别函数。这说明生成模型与判别模型之间存在一定的联系。
模型学习算法
- 朴素贝叶斯模型的训练目标可以分解为估计先验分布P(y=ck)和条件概率分布P(x∣y=ck)=j=1∑MP(xj∣y=ck)(k=1,2,⋯,K):
- 对数似然函数为
ℓ=−i=1∑NlogP(xi,yi)=−i=1∑NlogP(yi)−i=1∑Nj=1∑MlogP(xij∣yi)
得到极大似然估计(本质是用频率估计概率)
P(y=ck)P(xj=ajl∣y=ck)=Ni=1∑NI(yi=ck),k=1,2,⋯,K=i=1∑NI(yi=ck)i=1∑NI(xij=ajl,yi=ck),j=1,2,⋯,M,l=1,2,⋯,L,k=1,2,⋯,K
- 通过学习得到这些概率估计后,对于待预测输入x=(x1,⋯,xM)⊤,计算后验概率,并返回概率最大的类别
y^=ckargmaxP(y=ck)i=1∏MP(xi∣y=ck).
贝叶斯估计与拉普拉斯平滑
- 有时因为样本量较少,可能出现某个似然概率为0,导致分类结果出现较大偏差。为避免这一情形,我们会考虑引入超参数α,将条件概率和先验概率估计修改如下:
Pα(xj=ajl∣y=ck)Pα(y=ck)=i=1∑NI(yi=ck)+αLi=1∑NI(xij=ajl,yi=ck)+α,=N+αKi=1∑NI(yi=ck)+α.
其中α≥0(特别地,当α=1时称为拉普拉斯平滑)。可以验证这就是类别先验分布为狄利克雷分布时的贝叶斯估计。