您的位置:首页 > 其它

周志华《机器学习》笔记:第3章 线性模型

2016-07-10 12:11 375 查看
本章概括

从最简单但也是最基础的线性模型开始研究。线性模型虽然简单,但却是基础。先研究线性、单属性的线性回归问题,在此基础上研究非线性、多属性的回归和分类问题。

第3章 线性模型
单属性线性回归

多属性线性回归

广义线性模型

从回归到二分类

多分类学习
一对一OvO

一对其余OvR

多对多MvM

线性判别分析LDA

类别不平衡问题

第3章 线性模型

所谓线性模型,也即是:

1. 假定示例有d个属性,x=(x1,x2,...,xd)

2. 试图通过属性的线性组合进行预测f(x)=∑i=1dwixi+b

用向量形式表示就是:

f(x)=wTx+b

线性模型虽然简单,但却是基础。先研究线性、单属性的线性回归问题,便可以进一步研究非线性、多属性的回归和分类问题。

单属性线性回归

先研究单属性线性回归问题,也即:

1. 训练集只有一个属性

2. 给定数据集D={(xi,yi)}mi=1

3. 线性预测表示为:f(xi)=wxi+b,通过训练集得到w和b的值,使得f(xi)≈yi

第2章提到过均方误差是性能度量常用的指标。在此可以使用该指标,也即:

(w∗,b∗)=argminw,b∑i=1m[f(xi)−yi]2=argminw,b∑i=1m[wxi+b−yi]2

只需针对w和b分别求偏导即可得到最优解(闭式close-form解)。

基于均方误差最小化来进行模型求解的方法也称为最小二乘法。在线性回归中,最小二乘法可以找到一条这样的直线,使得所有样本到直线上的欧氏距离之和最小。

多属性线性回归

多属性问题也即:

1. 训练样本有d个属性

2. 对于m个样本和d个属性的数据集D,可以表示为:

X=⎡⎣⎢⎢⎢⎢x11x21⋮xm1x12x22⋮xm2⋯⋯⋱⋯x1dx2d⋮xmd11⋮1⎤⎦⎥⎥⎥⎥=⎡⎣⎢⎢⎢⎢xT1xT2⋮xTm11⋮1⎤⎦⎥⎥⎥⎥

属性表示为:x⃗ i=(xi1,...,xid)T

权重表示为:w⃗ =(w1,...,wd,b)T

3. 类似使用最小二乘法,线性预测使得如下指标最小

w*=argminw(y-Xw)T(y-Xw)

这里涉及到对矩阵求导1. 对w求导可以得到2XT(Xw-y),因而有:

XTXw=XTy

两边求逆,即得到w=(XTX)−1XTy

但是这个前提必须是XTX为满秩矩阵或者正定矩阵。

然后在实际情况中这个条件不一定能够满足,比如属性数目比较多,甚至超过样例数,导致X的列数多于行数,这就相当于多元方程组变量数目>方程数,就会有多组解。选择哪个解便由学习算法的归纳偏好决定,常见的做法是引入正则化。(见6.4和11.4)

广义线性模型

现实情况不可能每次都能用线性模型进行拟合,如果对输出y做空间的非线性映射,便可得到广义的线性模型,从线性到非线性。

y=g−1(wTx+b)

比如从y=wTx+b映射到对数lny=wTx+b

从回归到二分类

之前讨论的是使用线性模型进行回归学习,如果要应用到分类中,思路就是利用广义线性模型,找一单调可微函数将分类任务的真实标记y与线性回归模型的预测值对应起来即可。

对于最简单的二分类任务,最理想的自然是阶跃函数unit-step function。

y=⎧⎩⎨⎪⎪00.51z<0z=0z>0

若预测值z为正,则判断为正例,为负则判断为反例,为0则任意判别。

但阶跃函数并不是可微的,因此必须寻找替代函数surrogate function。目前使用比较广泛的是对数几率函数logistic function,它是Sigmoid函数的一种。它的好处在于:

1. 单调可微

2. 在0处变化陡峭,最接近阶跃函数,适合二分类

对数几率函数表示为:y=11+e−z,应用于广义线性模型即为:y=11+e−(wTx+b)

做一下变换可得:lny1−y=wTx+b。y1−y含义就是比率,为正例的可能性与为反例的可能性比值。

从本质上讲,对数几率回归模型logistic regression就是在用线性回归模型的预测结果去逼近真实标记的对数几率。

虽然还是回归模型,但却是一种分类学习方法。之前普遍翻译为逻辑回归,意义相去甚远,还是用对数几率回归比较符合一些。它的好处在于:

1. 将分类进行建模,无需事先假设数据分布,避免假设分布不准确所带来的问题

2. 不仅分类,还可得到近似概率预测,可利用概率辅助决策

3. 对率函数是任意阶可导的凸函数,可方便求取最优解

确定模型之后,接下来自然要做的就是确定w和b。这里要使用到的方法是极大似然法maximum likelihood method

给定数据集{(xi,yi)}mi=1,对率回归模型最大化就是要把所有样本概率预测之和最大化,也就是

max l(w,b)=∑i=1mln p(yi|xi;w,b)

式lny1−y=wTx+b改为类后验概率估计的形式:

lnp(y=1|x)p(y=0|x)=wTx+b

再加上p(y=1|x)+p(y=0|x)=1可以得到:

p(y=1|x)=ewTx+b1+ewTx+b

p(y=0|x)=11+ewTx+b

又因为是二分类,要么为0要么为1,可以将p(yi|xi;w,b)重写为两种情况:

p(yi|xi;w,b)=yip1(x̂ i;β)+(1−yi)p0(x̂ i;β)

这里为方便讨论,令β=(w;b),x̂ =(x;1),wT+x=βTx̂ ,再令p1(x̂ ;β)=p(y=1|x̂ ;β),p0(x̂ ;β)=p(y=0|x̂ ;β)。

这样,最大化原概率和公式等价于最小化:

min l(β)=∑i=1m(−yiβTx̂ i+ln (1+eβTx̂ i))

上式为关于β的高阶可导连续凸函数,根据凸优化理论,利用经典的数值优化算法如梯度下降法、牛顿法都可求得最优解,也即

β∗=argminβl(β)

多分类学习

多分类学习可在二分类基础上进行。将原问题拆分为多个二分类任务,然后每个二分类训练一个分类器,然后再进行集成获得最终的多分类结果。核心就是拆分+集成

最典型的拆分策略有三种:

1. OvO One vs. One

2. OvR One vs. Rest

3. MvM Many vs. Many

具体选择哪一种,要看具体情况下的存储和时间开销,以及性能高低。

一对一OvO

假设训练集有四类样本,C1,C2,C3,C4,训练时两两组合为二分类进行训练,新样本通过这C2N个分类器后会得到N(N−1)2个分类结果,最终结果可根据这些分类结果投票产生。

一对其余OvR

训练时一个类作为正例,其余所有类作为反例。这样共有N个二分类器进行训练,新样本通过分类器时预测结果为正例的即为最终结果。

多对多MvM

本质上讲前两种情况都是MvM的特殊情况。基本思路是训练集每一类通过多个分类器训练会产生一组编码结果,新样本通过分类器产生的编码结果与每个分类器的结果求距离,距离最短者即为最终结果。

实例如下图:(二元)

类\分类器f1f2f3f4f5与新样本海明距离
C1-1+1-1+1+1→ 3
C2+1-1-1+1-1→ 4
C3-1+1+1-1+1→ 1
C4-1-1+1+1-1→ 2
新样本-1-1+1-1+1
C3与新样本的海明距离最小,所以最终结果是C_3$

这里常用的MvM编码技术是:纠错输出码ECOC Error Correcting Output Codes,其关键在于:

1. 如何划分类别形成二分类训练集,也就是编码

2. 解码,选择如海明距离、欧式距离作为衡量,同时纠错能力强,能容错

线性判别分析LDA

线性判别分析Linear Discriminant Analysis是一种经典的线性学习方法,应用于分类任务中。

LDA的思想非常简单,将训练集的样本投影到一条直线上,同一类的尽量互相靠近,而不同类之间尽可能相隔的远。使用数学语言,投影即是向量乘积, 同一类尽量靠近,就是协方差要小,不同类相隔远,就是类中心距离远,也就是均值投影的差要大。

给定数据集D={(xi,yi)}mi=1,设定:

1. Xi:第i类示例的集合

2. μi:第i类示例均值向量

3. Σi:第i类示例的协方差矩阵

由此可以得到第i类样本中心在直线上的投影为wTμi,协方差为wTΣiw。

以二分类为例,要保证同一类尽量靠近,那么wTΣ0w+wTΣ1w要尽可能小,要保证不同类相隔远,那么||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

首先该式子分子和分母都是关于w的二次项,因此解与w的长度无关,只和方向有关。(如果w是一个解,那么对于任意常数α,αw也是一个解。)

不失一般性,可令分母wT(Σ0+Σ1)w=1,那么原式等价于:

min −wT(μ0−μ1)(μ0−μ1)Tw

s.t.wT(Σ0+Σ1)w=1

这种情况确定w,一般都用拉格朗日乘子法解决。具体求解可见原书P61-62。

LDA同样可应用于多分类任务中,方法类似于二分类,具体可见原书P62-63。

最后补充两点:

1. 从贝叶斯决策理论的角度可以证明LDA在两类数据同先验、满足高斯分布且协方差相等时,LDA可达到最优分类。

2. LDA核心是投影,这样往往实现了降维,因而LDA也常被视为一种经典的监督降维技术。

类别不平衡问题

类别不平衡class-imbalance即是不同类样本数相差很大,导致学习效果不佳。举个很简单的例子,1000个样本,有998个是反例,2个是正例,那么一个对样本永远只预测为反例的学习器也能实现99.8%的正确率,但这种学习器显然是没有用的。

一个基本策略是再缩放rescaling。

在之前的比率回归问题上,y1−y代表正例可能性与反例可能性的比值,那么如果y1−y>1就可预测为正例。

而在类别不平衡的样本中,假设正例数目为m+,反例数目为m−(一般正例数目小于反例数目)。我们可设定学习器的决策条件为:当y1−y>m+m−即可预测为正例。那么比率即可重改为y′1−y′=y1−ym−m+。

在实际操作中,再缩放却没那么容易,主要原因是不一定能有效的基于训练集观测几率去推断真实几率。因而往往有三类做法:

1. 欠采样undersampling:去除一些反例数目,使得正例数目接近于反例数目,再进行学习。需要注意,若直接丢弃反例,可能会造成重要信息丢失,一种方法是利用集成学习机制,将反例划分为若干个集合供不同学习器使用,这样每个学习器就相当于欠采样,而全局看则没有丢失重要信息

2. 过采样oversampling:增加正例数目,为防止过拟合,可对训练集正例进行插值产生额外正例,而不是直接重复采样初始正例样本

3. 阈值移动threshold-moving:直接基于原训练集进行学习,但用训练好的分类器进行预测时,将y′1−y′=y1−ym−m+嵌入决策中

矩阵求导基本规则

Y=AX→DYDX=AT

Y=XA→DYDX=A

Y=ATXB→DYDX=ABT

Y=ATXTB→DYDX=BAT

基于链式法则,可推导出:

Y=XTX→DYDX=2X

原方程求导便可以得到2(y−Xw)(−XT)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  机器学习