第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) ↩

原文链接: https://blog.csdn.net/yzqzoom/article/details/51870899

习题答案参考:https://blog.csdn.net/icefire_tyh/article/details/52069025

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α上的结果
http://blog.csdn.net/icefire_tyh/article/details/52068844
4.选择两个UCI数据集,比较10折交叉验证法和留一法所估计出的对率回归的错误率。
http://blog.csdn.net/icefire_tyh/article/details/52068900
5.编程实现线性判别分析,并给出西瓜数据集3.0α上的结果。
http://blog.csdn.net/icefire_tyh/article/details/52069003
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)就能推出整张表。

周志华《机器学习》第三章线性模型笔记+习题相关推荐

  1. 【周志华机器学习】三、线性模型

    文章目录 参考资料 1. 线性回归 1.1 概述 应用举例 1.2 分析 1.3 对数线性回归 1.4 过拟合.欠拟合如何解决 L2正则化(岭回归) L1正则化(Lasso回归) ElasticNet ...

  2. 周志华机器学习(三)线性模型

    文章目录 前言 3.1 基本形式 3.2 线性回归 2.读入数据 3.3 对数几率回归 1.引入库 3.4 线性判别回归 3.5 多分类学习 3.6 类别不平衡问题 前言 提示:这里可以添加本文要记录 ...

  3. 周志华机器学习--绪论

    周志华机器学习–绪论 第一章 绪论 第二章 模型评估与选择 第三章 线性模型 第四章 决策树 第五章 支持向量机 第六章 神经网络 第七章 贝叶斯分类器 第八章 集成学习和聚类 文章目录 周志华机器学 ...

  4. 周志华机器学习-决策树

    周志华机器学习-决策树 第一章 绪论 第二章 模型评估与选择 第三章 线性模型 第四章 决策树 第五章 支持向量机 第六章 神经网络 第七章 贝叶斯分类器 第八章 集成学习和聚类 文章目录 周志华机器 ...

  5. 周志华机器学习-支持向量机

    周志华机器学习-支持向量机 第一章 绪论 第二章 模型评估与选择 第三章 线性模型 第四章 决策树 第五章 支持向量机 第六章 神经网络 第七章 贝叶斯分类器 第八章 集成学习和聚类 – 文章目录 周 ...

  6. 周志华-机器学习西瓜书-第三章习题3.3 编程实现对率回归

    本文为周志华机器学习西瓜书第三章课后习题3.3答案,编程实现对率回归,数据集为书本第89页的数据 使用tensorflow实现过程 # coding=utf-8 import tensorflow a ...

  7. 机器学习 --《机器学习》(周志华)第一、二章

    吃瓜笔记(第一.二章) <机器学习>(周志华) 文章目录 吃瓜笔记(第一.二章) 笔记 章节习题 延伸思考 笔记 通过对大量的对象属性进行分析后得到模型的过程称之为训练 进行科学推理常用方 ...

  8. 【读书笔记】周志华 机器学习 第二章 模型评估和选择

    第二章 模型评估和选择 1 欠拟合和过拟合 偏差和方差 1.1 欠拟合和过拟合 1.2 偏差和方差 2 评估方法 性能度量 2.1 评估方法 2.1.1 留出法 2.2.2 交叉验证法 2.2.3 自 ...

  9. 周志华机器学习(西瓜书)学习笔记(持续更新)

    <周志华机器学习>笔记 第1章 绪论 1.1 引言 1.2 基本术语 1.3 假设空间 1.4 归纳偏好 1.5 发展历程 1.6 应用现状 第2章 模型评估与选择 2.1 经验误差与过拟 ...

最新文章

  1. Ubuntu .deb包安装方法
  2. html弹出保存文件对话框_这样操作,3分钟不要就可以在GIS office中轻松导入坐标点文件!...
  3. 常用电脑密码破解技巧
  4. wxWidgets:wxStaticLine类用法
  5. Spring JdbcTemplate配置
  6. 全国计算机等级考试题库二级C操作题100套(第90套)
  7. 临时禁用自增列插入数据
  8. Server Host Cannot be null解决方法
  9. 取出字符串strName前4个汉字
  10. 阿里云CDN+OSS完成图片加速
  11. android自定义组件(手机加速球+水面波动效果)
  12. php换脸,PS换脸术 蒙娜丽莎图片换脸教程
  13. Python修改图片分辨率
  14. detach()函数理解
  15. Navicat Premium 导入SQL文件
  16. Python语言快速入门(上)
  17. 测试apk-异常管控Gps攻击者开发
  18. HCIP-loT——简述
  19. ADS设计日志(一):阻抗变换器详讲
  20. JLink、JTAG接口详细图解

热门文章

  1. 软件测试中的黑盒测试和白盒测试和灰盒测试
  2. C# 获取汉字的对应的全拼音和拼音首字母(含源码)
  3. 职业化形象与商务礼仪
  4. 六种礼仪帮助你赢得面试
  5. 电商订单批量导入API接口功能
  6. 餐厅自助点餐系统测试
  7. 2023年五面蚂蚁、三面拼多多、字节跳动最终拿offer入职拼多多
  8. 五子棋 day5-2
  9. centos7常用命令与环境安装
  10. 十个值得珍藏的正则表达式