周志华《机器学习》笔记:第3章 线性模型
2016-07-10 12:11
375 查看
本章概括
从最简单但也是最基础的线性模型开始研究。线性模型虽然简单,但却是基础。先研究线性、单属性的线性回归问题,在此基础上研究非线性、多属性的回归和分类问题。
第3章 线性模型
单属性线性回归
多属性线性回归
广义线性模型
从回归到二分类
多分类学习
一对一OvO
一对其余OvR
多对多MvM
线性判别分析LDA
类别不平衡问题
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=g−1(wTx+b)
比如从y=wTx+b映射到对数lny=wTx+b
对于最简单的二分类任务,最理想的自然是阶跃函数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
具体选择哪一种,要看具体情况下的存储和时间开销,以及性能高低。
实例如下图:(二元)
C3与新样本的海明距离最小,所以最终结果是C_3$
这里常用的MvM编码技术是:纠错输出码ECOC Error Correcting Output Codes,其关键在于:
1. 如何划分类别形成二分类训练集,也就是编码
2. 解码,选择如海明距离、欧式距离作为衡量,同时纠错能力强,能容错
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也常被视为一种经典的监督降维技术。
一个基本策略是再缩放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) ↩
从最简单但也是最基础的线性模型开始研究。线性模型虽然简单,但却是基础。先研究线性、单属性的线性回归问题,在此基础上研究非线性、多属性的回归和分类问题。
第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的特殊情况。基本思路是训练集每一类通过多个分类器训练会产生一组编码结果,新样本通过分类器产生的编码结果与每个分类器的结果求距离,距离最短者即为最终结果。实例如下图:(二元)
类\分类器 | f1 | f2 | f3 | f4 | f5 | 与新样本海明距离 |
---|---|---|---|---|---|---|
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 |
这里常用的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) ↩
相关文章推荐
- 用Python从零实现贝叶斯分类器的机器学习的教程
- My Machine Learning
- 机器学习---学习首页 3ff0
- Spark机器学习(一) -- Machine Learning Library (MLlib)
- 反向传播(Backpropagation)算法的数学原理
- 关于SVM的那点破事
- 也谈 机器学习到底有没有用 ?
- TensorFlow人工智能引擎入门教程之九 RNN/LSTM循环神经网络长短期记忆网络使用
- TensorFlow人工智能引擎入门教程之十 最强网络 RSNN深度残差网络 平均准确率96-99%
- TensorFlow人工智能引擎入门教程所有目录
- 如何用70行代码实现深度神经网络算法
- 量子计算机编程原理简介 和 机器学习
- 近200篇机器学习&深度学习资料分享(含各种文档,视频,源码等)
- 已经证实提高机器学习模型准确率的八大方法
- 初识机器学习算法有哪些?
- 机器学习相关的库和工具
- 10个关于人工智能和机器学习的有趣开源项目
- 机器学习实践中应避免的7种常见错误
- 机器学习常见的算法面试题总结
- 不平衡数据处理技术——RUSBoost