分类:从生成模型到判别模型

在解决分类问题时,生成模型(generative model)和判别模型(discriminative model)是常用的两类模型。生成模型从数据中学习特征和标签的联合概率分布p(x,y),而判别模型则学习条件概率分布p(y|x)。本文主要介绍两类模型中常见的几种算法以及它们的内在联系。

生成模型

1.高斯生成模型

假设一个二分类任务中含有类别 Ck,k=1,2 ,样本特征向量为x。概率生成模型的主要思想是先从样本中学习联合概率分布 p(x,Ck) ,然后通过边缘化(marginalization) 得到 p(x) ,最后由贝叶斯公式得到 p(Ck|x) ,从而可以根据 p(Ck|x) 将样本划入概率最大的类。

举例来说,假设样本特征向量的类条件概率(class-conditional probability)服从高斯分布,即 p(x|Ck)=N(μk,Σ) 。设 t 为样本标签,若样本属于C1 t=1 ;若样本属于 C2 t=0 。设 p(t=1)=π ,则 p(t=0)=1π
所以联合概率:

p(x,t=1)=p(t=1)p(x|t=1)=πN(x|μ1,Σ)

p(x,t=0)=p(t=0)p(x|t=0)=(1π)N(x|μ2,Σ)

整个样本集的联合概率:
p(x,t)=n=1N[πN(xn|μ1,Σ)]tn[(1π)N(xn|μ2,Σ)]1tn

通过极大似然估计法我们可以得到各分布参数的估计值:
π=N1N1+N2

其中 N1 C1 中包含的样本个数, N2 C2 中包含的样本个数。
μ1=1N1n=1Ntnxn

μ2=1N2n=1N(1tn)xn

Σ=N1NS1+N2NS2

Sk=1NknCk(xnμk)(xnμk)T

有了所有的分布参数,我们就可以通过边缘化和贝叶斯公式求解 p(t|x) ,从而对样本进行分类。

2.朴素贝叶斯

在面对离散特征时,我们可以将高斯分布改为其他多元离散分布。但是这么做仍然存在一个问题。假设样本有M个二元离散特征,那么M维的特征向量就会有 2M 种取值。为了拟合分布函数 p(x|t) ,我们就需要 2M1 个参数。当M很大时,参数的数量就会变得超级庞大,这不但意味着问题的求解变得很耗时,而且需要的训练样本数量也会变大非常巨大。朴素贝叶斯很好地解决了这个问题。
朴素贝叶斯做了一个很naive的假设,它假设所有的特征都是条件独立的,即 p(x1,x2,...,xM|Ck)=p(x1|Ck)p(x2|Ck)p(xM|Ck)k=1,2 。这样一来,由于所有特征都是二元变量,所以我们只需要一个参数来拟合每个条件概率分布,总共2M个参数,大大减少了任务复杂度,尤其是在M很大的时候。

朴素贝叶斯的求解步骤:
1. 拟合 p(xi|t),i=1,...,M,t=0,1 p(t),t=0,1 ,拟合的方法就是直接从样本计算对应频率;
2. 由 p(x,t)=p(x1|t)p(x2|t)p(xM|t)p(t) 得出联合概率分布。
3. 由 p(t|x)=p(t,x)p(t=0,x)+p(t=1,x) 得出后验概率,通过后验概率进行分类。

进一步地思考,当特征空间既包含离散变量又包含连续变量的时候该怎么办呢?

一种做法是把连续变量离散化,从而回到只包含离散特征的分类问题。但是这么做有的时候会把有用信息抹掉。举个例子,一个二分类任务含有一个连续特征 x x|C1 服从一个间断的均匀分布,取值范围 [0,1][3,4] x|C2 服从均匀分布 U(1,3) 。如果把 x 按中点离散成一个二元变量,即若x<2 x=0 ,若 x2 则令 x=1 ,那么 p(x=0|C1)=p(x=0|C2)=12 。我们知道 p(Ck|x)p(x|Ck)p(Ck) ,所以在这种离散化方法之后,x无法提供给我们任何有用的信息。

一种更好的做法是拟合连续分布 p(xi|Ck) ,然后将连续分布概率密度代入上述步骤2中。从而求解后验概率。

判别模型

3.逻辑回归

我们将二分类中的后验概率变换一下形式:
p(C1|x)=p(x|C1)p(C1)p(x|C1)p(C1)+p(x|C2)p(C2)
=11+p(x|C2)p(C2)p(x|C1)p(C1)
=11+ea(x)=σ(a(x))

其中:

a(x)=lnp(x|C1)p(C1)p(x|C2)p(C2)

σ(a)=11+ea

σ() 就是大名鼎鼎的逻辑函数。

按照之前高斯生成模型中的假设,样本特征向量的类条件概率(class-conditional probability)服从高斯分布,即 p(x|Ck)=N(μk,Σ) ,有:

p(x|Ck)=1(2π)D/21|Σ|1/2e12(xμk)TΣ1(xμk)=1(2π)D/21|Σ|1/2e12xTΣ1x×eμkTΣ1x12μkTΣ1μk

代入上述 a(x) 中,我们得到:

a(x)=lnp(x|C1)p(C1)p(x|C2)p(C2)=lneμ1TΣ1x12μ1TΣ1μ1eμ2TΣ1x12μ2TΣ1μ2+lnp(C1)p(C2)=wTx+w0

其中:
w=Σ1(μ1μ2)

w0=12μ1TΣ1μ1+12μkTΣ1μ2+lnp(C1)p(C2)

从这里,一方面我们可以发现,由生成模型可以推导出判别模型。另一方面,当假设所有的类条件概率是协方差矩阵相同的高斯分布时, a(x) x 的线性函数。既然如此,当我们的目的只是分类而不需要知道样本的联合分布时,我们就可以直接学习参数 w w0 ,而不用再去学习之前那些复杂的分布参数了。假设一共M个特征,在之前的概率生成模型中,我们需要学习两个 μ 和一个 Σ ,每个 μ 中包含M个参数, Σ 中包含 M(M+1)/2 个参数,一共 2M+M(M+1)/2=M(M+5)/2 个参数,而在逻辑回归模型中我们只需要学习 M+1 个参数,即逻辑回归系数,大大简化了计算。当类条件概率的协方差矩阵不同时,分界面变为非线性,我们可以通过核函数将非线性分类转化为线性分类问题。

为了求解模型中的未知参数,首先想到的是用极大似然估计法。

yn=p(C1|xn)=11+ewTxn

p(tn|xn)=yntn(1yn)1tn,tn{0,1}

p(t|x)=n=1Nyntn(1yn)1tn

如果采用常规做法,对 p(t|x) 取对数然后求导试图找到极值点的话,是无法得到解析解的。所以我们采用一种数值解法:Newton-Raphson迭代法。
首先我们定义损失函数
E(w)=lnp(t|x)=n=1N{tnlnyn+(1tn)ln(1yn)}

E(w) 被称为交叉熵(cross-entropy),是二分类任务中常用的损失函数之一。利用关系式 σa=σ(1σ) 和链式法则,对 E(w) 求梯度可得:
E(w)=n=1N(yntn)xn=XT(yt)


H=E(w)=n=1Nyn(1yn)xnxnT=XTRX

其中R为 N×N 对角矩阵,
Rnn=yn(1yn)

0<yn<1 ,故 Rnn>0 ,对于任意M维向量u,M为特征个数, uTHu=uTXTRXu=uTXTRRXu=vTv ,其中 v=RXu 为一个N维向量,故 uTHu>0 ,H为正定矩阵。故 E(w) 为凹函数,有唯一最小值。且H可逆。
Newton-Raphson的迭代式为:
w(new)=w(old)H1E(w)=(XTRX)1XTRz

其中z是一个N维向量:
z=Xw(old)R1(yt)

参考资料:Pattern Recognition And Machine Learning, Bishop, 2006

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值