零、写在前面
参考资料:
一、贝叶斯决策论
贝叶斯分类器显然是用于分类问题的,是一种监督学习的模型。最核心的过程是这样的:
在训练过程中,分类器要根据训练集中的好多好多组x(各个特征)和y(类别)学会做这样一件事:对于没见过的样本,能根据它的各个特征计算出他属于各个类别的概率。
继而在应用时,选择概率最高的那个样本作为输出结果。
其中 “根据它的各个特征(x)计算出他属于各个类别(c)的概率” 理解为条件概率:在具有特征x的条件下,属于类别c的概率。这概率我们记为P(c|x)P(c|x)。有时他也被称为似然(likelihood)。
只要得到了这个概率,剩下的事情就只有比较大小了,所以我们要关注怎样能比较准确地得到这个概率。大体来说有两种策略:
- 直接建模P(c|x)P(c|x),即这个模型要学会,输入给他一组特征x,能够输出它属于各个类别c的概率,即模型学到了特征x到类别c的映射。
- 另一种方法是反过来,要对P(x|c)P(x|c)建模,即对于每个类别,模型要试着了解,这个类别的样本的各个特征大概是什么样的。即对于联合概率P(x,c)P(x,c)建模,并以此来获得需要的P(c|x)P(c|x)。
第一种策略我们称之为判别式(discriminative)模型,像决策树,支持向量机,以及近几年大红大紫的神经网络都属于这样的类型。第二种曲线救国的策略我们称为生成式(generative)模型,本文要讨论的贝叶斯分类器就属于这一类型。
先说上面 “并以此来获得需要的P(c|x)P(c|x)”的方法——贝叶斯定理:
P(c|x)=P(c)P(x|c)/P(x)P(c|x)=P(c)P(x|c)/P(x)
只要得到了等号右侧的每一项,我们就能顺利获得
P(c|x)P(c|x)了。当然,其中
P(c)P(c)和
P(x)P(x)并不费力,重点是在
P(x|c)P(x|c)上。
二、极大似然估计
极大似然估计就是获得P(x|c)P(x|c)的一种方法,它的主要思想是:先假设它服从某种概率分布形式,这形式可以用一组参数表示出来,然后,由训练样本计算出这组参数。
举个例子,一个人要通过描述让你把他脑子里想的东西画出来,考虑这两种方法:
- 在纸上随便找一个点开始,接着往随便一个方向画,然后逆时针旋转,旋转,旋转,旋转。。。直到回到原来的那个开始的点,注意画出的轨迹一定要平滑而优美。
- 画一个圆,半径为θθ。
极大似然估计就相当于第二种方法,即先假设要你画的东西是一个圆,这个圆能通过参数θθ表示出来。
回到我们的极大似然估计,我们假设P(x|c)P(x|c)服从高斯(正态)分布,即
P(x|c)∼N(μ,σ)P(x|c)∼N(μ,σ)
但如果高斯分布中的参数
μ,σμ,σ都只是实数,那这个概率分布就不能表示
多个特征到类别的映射。因此我们使用
多元正态分布,两个参数分别调整为——
μμ为n维的
平均向量,
σσ为n * n维的
方差矩阵。与普通高斯分布相似,平均向量控制概率取最大值的位置,方差矩阵控制图像“扁”的程度。我们把这两组参数一起记为
θθ
P(x;μ,σ)=exp(−(x−μ)Tσ−1(x−μ))/(2π)2/n|sigma|2/nP(x;μ,σ)=exp(−(x−μ)Tσ−1(x−μ))/(2π)2/n|sigma|2/n
另,如果假设
P(x|c)P(x|c)服从高斯(正态)分布,这算法也可以被称为
高斯判别分析(Gaussian Discriminant Analysis model )
令Dc表示训练集D中属于类别c的样本们,假设独立同分布,则参数
θθ对数据集的条件概率(似然)为
P(Dc|θ)=∏P(x|θ)P(Dc|θ)=∏P(x|θ)
在计算机上,连乘很多小于1的数很可能造成数值下溢,所以我们取对数,改为累加:
LL(θ)=logP(Dc|θ)=∑logP(x|θ)LL(θ)=logP(Dc|θ)=∑logP(x|θ)
我们自然是希望这对数似然越大越好。所以我们要求:
θ=argmaxθLL(θ)θ=argmaxθLL(θ)
在正态分布中,我们对公式求导,将对于各个参数的偏导数置为零,就可以得到各个参数的极大似然估计:
μ=1/|Dc|∑x (x∈Dc)σ2=1/|Dc|∑(x−μ)(x−μ)T (x∈Dc)μ=1/|Dc|∑x (x∈Dc)σ2=1/|Dc|∑(x−μ)(x−μ)T (x∈Dc)
这样,我们获得了一组参数,用这组参数确定的模型可以计算P(x|c)P(x|c),代入贝叶斯公式(其他所需的两项很容易获得),我们就能得到给定属性时属于各个类别的概率,比较这些概率,选出最大的那一个,就得到了预测结果。
此外,不难看出,因为一直在使用概率,这一算法有很好的可解释性。
贝叶斯决策论,除了极大似然估计之外,还有很多其他的应用,比如大名鼎鼎的朴素贝叶斯等等。我们将在下篇文章里介绍这些算法。