第3章 线性模型
所谓线性模型,也即是:
1. 假定示例有dd个属性,x=(x1,x2,...,xd)x=(x1,x2,...,xd)
2. 试图通过属性的线性组合进行预测
f(x)=∑i=1dwixi+b
f(x)=∑i=1dwixi+b
用向量形式表示就是:
f(x)=wTx+b
f(x)=wTx+b
线性模型虽然简单,但却是基础。先研究线性、单属性的线性回归问题,便可以进一步研究非线性、多属性的回归和分类问题。
单属性线性回归
先研究单属性线性回归问题,也即:
1. 训练集只有一个属性
2. 给定数据集D={(xi,yi)}mi=1D={(xi,yi)}i=1m
3. 线性预测表示为:f(xi)=wxi+bf(xi)=wxi+b,通过训练集得到w和b的值,使得f(xi)≈yif(xi)≈yi
第2章提到过均方误差是性能度量常用的指标。在此可以使用该指标,也即:
(w∗,b∗)=argminw,b∑i=1m[f(xi)−yi]2=argminw,b∑i=1m[wxi+b−yi]2
(w∗,b∗)=argminw,b∑i=1m[f(xi)−yi]2=argminw,b∑i=1m[wxi+b−yi]2
只需针对ww和bb分别求偏导即可得到最优解(闭式close-form解)。
基于均方误差最小化来进行模型求解的方法也称为最小二乘法。在线性回归中,最小二乘法可以找到一条这样的直线,使得所有样本到直线上的欧氏距离之和最小。
多属性线性回归
多属性问题也即:
1. 训练样本有dd个属性
2. 对于m个样本和d个属性的数据集D,可以表示为:
X=⎡⎣⎢⎢⎢⎢⎢x11x21⋮xm1x12x22⋮xm2⋯⋯⋱⋯x1dx2d⋮xmd11⋮1⎤⎦⎥⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢⎢xT1xT2⋮xTm11⋮1⎤⎦⎥⎥⎥⎥⎥
X=[x11x12⋯x1d1x21x22⋯x2d1⋮⋮⋱⋮⋮xm1xm2⋯xmd1]=[x1T1x2T1⋮⋮xmT1]
属性表示为:x⃗ i=(xi1,...,xid)Tx→i=(xi1,...,xid)T
权重表示为:w⃗ =(w1,...,wd,b)Tw→=(w1,...,wd,b)T
3. 类似使用最小二乘法,线性预测使得如下指标最小
w*=argminw(y-Xw)T(y-Xw)
w*=argminw(y-Xw)T(y-Xw)
这里涉及到对矩阵求导1. 对w求导可以得到2XT(Xw-y)2XT(Xw-y),因而有:
XTXw=XTy
XTXw=XTy
两边求逆,即得到w=(XTX)−1XTyw=(XTX)−1XTy
但是这个前提必须是XTXXTX为满秩矩阵或者正定矩阵。
然后在实际情况中这个条件不一定能够满足,比如属性数目比较多,甚至超过样例数,导致XX的列数多于行数,这就相当于多元方程组变量数目>方程数,就会有多组解。选择哪个解便由学习算法的归纳偏好决定,常见的做法是引入正则化。(见6.4和11.4)
广义线性模型
现实情况不可能每次都能用线性模型进行拟合,如果对输出y做空间的非线性映射,便可得到广义的线性模型,从线性到非线性。
y=g−1(wTx+b)
y=g−1(wTx+b)
比如从y=wTx+by=wTx+b映射到对数lny=wTx+blny=wTx+b
从回归到二分类
之前讨论的是使用线性模型进行回归学习,如果要应用到分类中,思路就是利用广义线性模型,找一单调可微函数将分类任务的真实标记y与线性回归模型的预测值对应起来即可。
对于最简单的二分类任务,最理想的自然是阶跃函数unit-step function。
y=⎧⎩⎨00.51z<0z=0z>0
y={0z<00.5z=01z>0
若预测值z为正,则判断为正例,为负则判断为反例,为0则任意判别。
但阶跃函数并不是可微的,因此必须寻找替代函数surrogate function。目前使用比较广泛的是对数几率函数logistic function,它是Sigmoid函数的一种。它的好处在于:
1. 单调可微
2. 在0处变化陡峭,最接近阶跃函数,适合二分类
对数几率函数表示为:y=11+e−zy=11+e−z,应用于广义线性模型即为:y=11+e−(wTx+b)y=11+e−(wTx+b)
做一下变换可得:lny1−y=wTx+blny1−y=wTx+b。y1−yy1−y含义就是比率,为正例的可能性与为反例的可能性比值。
从本质上讲,对数几率回归模型logistic regression就是在用线性回归模型的预测结果去逼近真实标记的对数几率。
虽然还是回归模型,但却是一种分类学习方法。之前普遍翻译为逻辑回归,意义相去甚远,还是用对数几率回归比较符合一些。它的好处在于:
1. 将分类进行建模,无需事先假设数据分布,避免假设分布不准确所带来的问题
2. 不仅分类,还可得到近似概率预测,可利用概率辅助决策
3. 对率函数是任意阶可导的凸函数,可方便求取最优解
确定模型之后,接下来自然要做的就是确定w和b。这里要使用到的方法是极大似然法maximum likelihood method。
给定数据集{(xi,yi)}mi=1{(xi,yi)}i=1m,对率回归模型最大化就是要把所有样本概率预测之和最大化,也就是
max l(w,b)=∑i=1mln p(yi|xi;w,b)
max l(w,b)=∑i=1mln p(yi|xi;w,b)
式lny1−y=wTx+blny1−y=wTx+b改为类后验概率估计的形式:
lnp(y=1|x)p(y=0|x)=wTx+b
lnp(y=1|x)p(y=0|x)=wTx+b
再加上p(y=1|x)+p(y=0|x)=1p(y=1|x)+p(y=0|x)=1可以得到:
p(y=1|x)=ewTx+b1+ewTx+b
p(y=1|x)=ewTx+b1+ewTx+b
p(y=0|x)=11+ewTx+b
p(y=0|x)=11+ewTx+b
又因为是二分类,要么为0要么为1,可以将p(yi|xi;w,b)p(yi|xi;w,b)重写为两种情况:
p(yi|xi;w,b)=yip1(x^i;β)+(1−yi)p0(x^i;β)
p(yi|xi;w,b)=yip1(x^i;β)+(1−yi)p0(x^i;β)
这里为方便讨论,令β=(w;b),x^=(x;1),wT+x=βTx^β=(w;b),x^=(x;1),wT+x=βTx^,再令p1(x^;β)=p(y=1|x^;β),p0(x^;β)=p(y=0|x^;β)p1(x^;β)=p(y=1|x^;β),p0(x^;β)=p(y=0|x^;β)。
这样,最大化原概率和公式等价于最小化:
min l(β)=∑i=1m(−yiβTx^i+ln (1+eβTx^i))
min l(β)=∑i=1m(−yiβTx^i+ln (1+eβTx^i))
上式为关于ββ的高阶可导连续凸函数,根据凸优化理论,利用经典的数值优化算法如梯度下降法、牛顿法都可求得最优解,也即
β∗=argminβl(β)
β∗=argminβl(β)
多分类学习
多分类学习可在二分类基础上进行。将原问题拆分为多个二分类任务,然后每个二分类训练一个分类器,然后再进行集成获得最终的多分类结果。核心就是拆分+集成。
最典型的拆分策略有三种:
1. OvO One vs. One
2. OvR One vs. Rest
3. MvM Many vs. Many
具体选择哪一种,要看具体情况下的存储和时间开销,以及性能高低。
一对一OvO
假设训练集有四类样本,C1,C2,C3,C4C1,C2,C3,C4,训练时两两组合为二分类进行训练,新样本通过这C2NCN2个分类器后会得到N(N−1)2N(N−1)2个分类结果,最终结果可根据这些分类结果投票产生。
一对其余OvR
训练时一个类作为正例,其余所有类作为反例。这样共有N个二分类器进行训练,新样本通过分类器时预测结果为正例的即为最终结果。
多对多MvM
本质上讲前两种情况都是MvM的特殊情况。基本思路是训练集每一类通过多个分类器训练会产生一组编码结果,新样本通过分类器产生的编码结果与每个分类器的结果求距离,距离最短者即为最终结果。
实例如下图:(二元)
类\分类器 f1f1 f2f2 f3f3 f4f4 f5f5 与新样本海明距离
C1C1 -1 +1 -1 +1 +1 →→ 3
C2C2 +1 -1 -1 +1 -1 →→ 4
C3C3 -1 +1 +1 -1 +1 →→ 1
C4C4 -1 -1 +1 +1 -1 →→ 2
新样本 -1 -1 +1 -1 +1
C3C3与新样本的海明距离最小,所以最终结果是C_3$
这里常用的MvM编码技术是:纠错输出码ECOC Error Correcting Output Codes,其关键在于:
1. 如何划分类别形成二分类训练集,也就是编码
2. 解码,选择如海明距离、欧式距离作为衡量,同时纠错能力强,能容错
线性判别分析LDA
线性判别分析Linear Discriminant Analysis是一种经典的线性学习方法,应用于分类任务中。
LDA的思想非常简单,将训练集的样本投影到一条直线上,同一类的尽量互相靠近,而不同类之间尽可能相隔的远。使用数学语言,投影即是向量乘积, 同一类尽量靠近,就是协方差要小,不同类相隔远,就是类中心距离远,也就是均值投影的差要大。
给定数据集D={(xi,yi)}mi=1D={(xi,yi)}i=1m,设定:
1. XiXi:第ii类示例的集合
2. μiμi:第ii类示例均值向量
3. ΣiΣi:第ii类示例的协方差矩阵
由此可以得到第ii类样本中心在直线上的投影为wTμiwTμi,协方差为wTΣiwwTΣiw。
以二分类为例,要保证同一类尽量靠近,那么wTΣ0w+wTΣ1wwTΣ0w+wTΣ1w要尽可能小,要保证不同类相隔远,那么||wTμ0−wTμ1||22||wTμ0−wTμ1||22要尽可能大。因而LDA最终需要做到的就是:
max J=||wTμ0−wTμ1||22wTΣ0w+wTΣ1w=wT(μ0−μ1)(μ0−μ1)TwwT(Σ0+Σ1)w
max J=||wTμ0−wTμ1||22wTΣ0w+wTΣ1w=wT(μ0−μ1)(μ0−μ1)TwwT(Σ0+Σ1)w
首先该式子分子和分母都是关于ww的二次项,因此解与ww的长度无关,只和方向有关。(如果ww是一个解,那么对于任意常数αα,αwαw也是一个解。)
不失一般性,可令分母wT(Σ0+Σ1)w=1wT(Σ0+Σ1)w=1,那么原式等价于:
min −wT(μ0−μ1)(μ0−μ1)Tw
min −wT(μ0−μ1)(μ0−μ1)Tw
s.t.wT(Σ0+Σ1)w=1
s.t.wT(Σ0+Σ1)w=1
这种情况确定ww,一般都用拉格朗日乘子法解决。具体求解可见原书P61-62。
LDA同样可应用于多分类任务中,方法类似于二分类,具体可见原书P62-63。
最后补充两点:
1. 从贝叶斯决策理论的角度可以证明LDA在两类数据同先验、满足高斯分布且协方差相等时,LDA可达到最优分类。
2. LDA核心是投影,这样往往实现了降维,因而LDA也常被视为一种经典的监督降维技术。
类别不平衡问题
类别不平衡class-imbalance即是不同类样本数相差很大,导致学习效果不佳。举个很简单的例子,1000个样本,有998个是反例,2个是正例,那么一个对样本永远只预测为反例的学习器也能实现99.8%的正确率,但这种学习器显然是没有用的。
一个基本策略是再缩放rescaling。
在之前的比率回归问题上,y1−yy1−y代表正例可能性与反例可能性的比值,那么如果y1−y>1y1−y>1就可预测为正例。
而在类别不平衡的样本中,假设正例数目为m+m+,反例数目为m−m−(一般正例数目小于反例数目)。我们可设定学习器的决策条件为:当y1−y>m+m−y1−y>m+m−即可预测为正例。那么比率即可重改为y′1−y′=y1−ym−m+y′1−y′=y1−ym−m+。
在实际操作中,再缩放却没那么容易,主要原因是不一定能有效的基于训练集观测几率去推断真实几率。因而往往有三类做法:
1. 欠采样undersampling:去除一些反例数目,使得正例数目接近于反例数目,再进行学习。需要注意,若直接丢弃反例,可能会造成重要信息丢失,一种方法是利用集成学习机制,将反例划分为若干个集合供不同学习器使用,这样每个学习器就相当于欠采样,而全局看则没有丢失重要信息
2. 过采样oversampling:增加正例数目,为防止过拟合,可对训练集正例进行插值产生额外正例,而不是直接重复采样初始正例样本
3. 阈值移动threshold-moving:直接基于原训练集进行学习,但用训练好的分类器进行预测时,将y′1−y′=y1−ym−m+y′1−y′=y1−ym−m+嵌入决策中
矩阵求导基本规则
Y=AX→DYDX=AT
Y=AX→DYDX=AT
Y=XA→DYDX=A
Y=XA→DYDX=A
Y=ATXB→DYDX=ABT
Y=ATXB→DYDX=ABT
Y=ATXTB→DYDX=BAT
Y=ATXTB→DYDX=BAT
基于链式法则,可推导出:
Y=XTX→DYDX=2X
Y=XTX→DYDX=2X
原方程求导便可以得到2(y−Xw)(−XT)2(y−Xw)(−XT) ↩
1.试分析在什么情况下,在以下式子中不比考虑偏置项b。
线性模型y=wtx+by=wtx+b,两个实例相减得到yi−y0=wt(xi−x0)yi−y0=wt(xi−x0),以此消除了bb。所以可以对训练集每个样本都减去第一个样本,然后对新的样本做线性回归,只需要用模型y=wtxy=wtx。
2.试证明,对于参数w,对率回归(logistics回归)的目标函数(式1)是非凸的,但其对数似然函数(式2)是凸的。
如果一个多元函数是凸的,那么它的Hessian矩阵是半正定的。
y=11+e−(wTx+b)y=11+e−(wTx+b)
dydw=xe−(wTx+b)(1+e−(wTx+b))2=x(y−y2)dydw=xe−(wTx+b)(1+e−(wTx+b))2=x(y−y2)
ddwT(dydw)=x(1−2y)(dydw)T=xxTy(y−1)(1−2y)ddwT(dydw)=x(1−2y)(dydw)T=xxTy(y−1)(1−2y)
xxTxxT合同于单位矩阵,所以xxTxxT是半正定矩阵
yy的值域为(0,1)(0,1),当y∈(0.5,1)y∈(0.5,1)时,y(y−1)(1−2y)<0y(y−1)(1−2y)<0,导致ddwT(dydw)ddwT(dydw)半负定,所以y=11+e−(wTx+b)y=11+e−(wTx+b)是非凸的。
l(β)=∑mi=1(−yiβTxi+ln(1+eβTx))l(β)=∑i=1m(−yiβTxi+ln(1+eβTx))
ddβT(dldβ)=xxTp1(x;β)(1−p1(x;β))ddβT(dldβ)=xxTp1(x;β)(1−p1(x;β))
显然概率p1∈(0,1),则p1(x;β)(1−p1(x;β))≥0,所以l(β)=∑mi=1(−yiβTxi+ln(1+eβTx))是凸函数。
3.编程实现对率回归,并给出西瓜数据集3.0α上的结果
4.选择两个UCI数据集,比较10折交叉验证法和留一法所估计出的对率回归的错误率。
5.编程实现线性判别分析,并给出西瓜数据集3.0α上的结果。
6. LDA仅在线性可分数据上能获得理想结果,试设计一个改进方法,使其能较好地用于非线性可分数据。
在当前维度线性不可分,可以使用适当的映射方法,使其在更高一维上可分,典型的方法有KLDA,可以很好的划分数据。
7.令码长为9,类别数为4,试给出海明距离意义下理论最优的EOOC二元码并证明之。
对于ECOC二元码,当码长为2n时,至少可以使2n个类别达到最优间隔,他们的海明距离为2(n−1)。比如长度为8时,可以的序列为
1 1 1 1 -1 -1 -1 -1
1 1 -1 -1 1 1 -1 -1
1 -1 1 -1 1 -1 1 -1
-1 -1 -1 -1 1 1 1 1
-1 -1 1 1 -1 -1 1 1
-1 1 -1 1 -1 1 -1 1
其中4,5,6行是对1,2,3行的取反。若分类数为4,一共可能的分类器共有24−2种(排除了全1和全0),在码长为88的最优分类器后添加一列没有出现过的分类器,就是码长为99的最优分类器。
8.EOOC编码能起到理想纠错作用的重要条件是:在每一位编码上出错的概率相当且独立。试析多分类任务经ECOC编码后产生的二类分类器满足该条件的可能性及由此产生的影响。
理论上的ECOCECOC码能理想纠错的重要条件是每个码位出错的概率相当,因为如果某个码位的错误率很高,会导致这位始终保持相同的结果,不再有分类作用,这就相当于全00或者全 11的分类器,这点和NFL的前提很像。但由于事实的样本并不一定满足这些条件,所以书中提到了有多种问题依赖的ECOCECOC被提出。
9.使用OvR和MvM将多分类任务分解为二分类任务求解时,试述为何无需专门针对类别不平衡性进行处理。
书中提到,对于OvROvR,MvMMvM来说,由于对每个类进行了相同的处理,其拆解出的二分类任务中类别不平衡的影响会相互抵消,因此通常不需要专门处理。以ECOCECOC编码为例,每个生成的二分类器会将所有样本分成较为均衡的二类,使类别不平衡的影响减小。当然拆解后仍然可能出现明显的类别不平衡现象,比如一个超级大类和一群小类。
10.试推出多分类代价敏感学习(仅考虑基于类别的错误分类代价)使用“再缩放”能获得理论最优解的条件。
题目提到仅考虑类别分类的误分类代价,那么就默认正确分类的代价为0。
于是得到分类表,(假设为3类)
0 c12c12 c13c13
c21c21 0 c23c23
c31c31 c32c32 0
对于二分类而言,将样本为正例的后验概率设为是p,那么预测为正的代价是(1−p)∗c12(1−p)∗c12,
预测为负的代价是p∗c21p∗c21。当(1−p)∗c12≤p∗c21(1−p)∗c12≤p∗c21样本会被预测成正例,因为他的代价更小。当不等式取等号时,得到了最优划分,这个阀值pr=c12c12+c21pr=c12c12+c21,这表示正例与反例的划分比例应该是初始的c12c21c12c21倍。假设分类器预设的阀值是popo,不考虑代价敏感时,当y1−y>po1−poy1−y>po1−po时取正例。当考虑代价敏感,则应该是y1−y>1−prpr∗po1−po=c21c12∗po1−poy1−y>1−prpr∗po1−po=c21c12∗po1−po。
推广到对于多分类,任意两类的最优再缩放系数tij=cij/cjitij=cij/cji ,然而所有类别的最优缩放系数并不一定能同时满足。当代价表满足下面条件时,能通过再缩放得到最优解。
设tij=wi/wjtij=wi/wj,则wi/wj=cij/cjiwi/wj=cij/cji对所有i,ji,j成立,假设有kk类,共C2kCk2个等式,此时代价表中k∗(k−1)k∗(k−1)个数,最少只要知道2∗(k−1)2∗(k−1)就能推出整张表。