码迷,mamicode.com
首页 > 其他好文 > 详细

岭回归和lasso回归(转)

时间:2017-07-28 23:47:47      阅读:311      评论:0      收藏:0      [点我收藏+]

标签:多变量   str   strong   兴趣   log   style   融合   san   推导   

回归和分类是机器学习算法所要解决的两个主要问题。分类大家都知道,模型的输出值是离散值,对应着相应的类别,通常的简单分类问题模型输出值是二值的,也就是二分类问题。但是回归就稍微复杂一些,回归模型的输出值是连续的,也就是说,回归模型更像是一个函数,该函数通过不同的输入,得到不同的输出。

       那么,什么是线性回归,什么是非线性回归呢?

线性回归与非线性回归

       前面说了,我们的回归模型是一个函数是吧,那么线性回归就是模型函数是由若干个基本函数线性加权得到的函数。也就是每一个基本函数前面都有一个权值来调和自己对于整个模型函数的重要性。然后,非线性函数就是各个基本函数并不是以线性加权形式结合。在线性回归模型里面有一大类,叫广义线性模型GLM,这里先不讲。

       线性回归模型中的各个基函数如何选择,模型的函数就会有不同的结果。而且基函数的选择有时可以将线性模型扩展到一般的非线性形式,只要你将基函数定义为一个非线性函数就好啦。虽然通常我们都是将每个基函数定义为输入向量数据每一维特征的一次方函数,也就是输入数据的每一维特征取值,但是我们仍然有必要聊聊其他的情况,这样才能感觉到线性回归的强大。

  •        首先,假设模型由N个基函数线性加权构成,我们可以在第一个取输入x的一次方,第二个取x的二次方,。。。第N个取N次方,这样模型就成为了x的多项式形式。这样会导致一个问题,每一个基函数的输入特征值会影响到其他基函数的值,因为它们共享变量x嘛。有一种函数可以解决这个问题,样条函数,有兴趣的同学可以查查。
  •        其次,如果每一个基函数是均值和方差确定的高斯函数,那么整个模型想不想高斯混合模型?哈哈,是挺像,但不是。因为高斯混合模型的每一个高斯分量的均值和协方差是未知的,也就是隐变量,而这里的基函数的均值和方差是确定的。
  •        然后,如果每一个基函数是三角函数,那么整个模型就是傅里叶变换的形式。怎么样,哈哈,牛逼吧。这个在信号处理方面非常有用,比如小波分析。

       好了,下面谈论的线性回归的模型的基函数都是最简单的输入数据某一位特征的一次方形式。

典型线性回归

       在最普遍的线性回归的应用场景中,我们的输入数据是一些具有M维特征的向量。然后回归模型的函数就是M维特征取值的线性加权。我们要求取的模型参数就是这些权值。现在我们有这样一批数据和这些数据的标注,怎么得到权值呢?方法就是,我们定义一个损失函数,这个损失函数是将训练数据代入我们模型的预测值和真实标注值的差的平方,然后再将这些平方求和,即普通最小二乘法。有了损失函数,参数求解的问题就成了损失函数求和之最小化的最优化问题。

       为什么要这么定义损失函数呢?其实这个损失函数不是随便定义滴。假设真实观测值=模型的预测值+残差,并且不妨假设残差服从均值为零的的高斯分布,那么真实观测值也服从高斯分布。通过对所有训练样本进行最大似然估计,然后经过一系列推导,会发现最大似然估计等价于普通最小二乘法。

       这里需要注意,使用最小二乘法有一个缺陷,就是如果残差不服从高斯分布而服从一个其他差距很大的分布,那么求取出来的模型就会不正确。概率分布是一个让人又爱又恨的东西,如果我们已知某一个数据集服从什么样的概率分布,我们就可以依据这个构建一个非常好的模型。但是,通常情况下我们不知道数据服从什么样的分布,(或者就算我们知道但是受限于数据量的限制,比如我们经常把异常值错当做作为错误值,其实只是数据量够大情况的正常值而已),我们也很难去用一个分布、甚至多个分布的混合去表示数据的真实分布。如果一个算法,是对里面的分布进行了某些假设,那么可能这个算法在真实的应用中就会表现欠佳。

       回到求取模型参数的问题上。通常求取模型参数有两种途径。一种是求出模型的解析解,一种是求出近似解。解析解的好处就是精确,但是求取过程计算量大,比较复杂,而且很多模型的解析解是无法求取的。近似解虽然不是特别精确,而且有时候可能会收敛到局部最优,但是计算方便,已经够用。

       最小二乘法的解析解可以这样求出:将损失函数关于参数求导并且令导数为零,然后通过变换可以直接得到解析解。

       最小二乘法的近似解可以这样求出:随机梯度下降法。即LMS也叫最小均方根法?具体做法是:每次随机选取一个训练样本,对这个训练样本的观测值和模型预测值的差的平方关于参数求导,也就是梯度。然后将梯度乘上一个alpha步长,将这个整体最为每一次迭代的变化部分。

 

结构风险最小化与参数缩减

 

       结构风险最小化是一种模型选择策略。其实在上面我们求解模型参数的时候,就已经涉及到模型选择的问题。模型选择的策略一般有两种,除了结构风险最小化,还有经验风险最小化。而我们之前用的就属于经验风险最小化。经验风险最小化有一个缺点就是,它求取的参数是对于训练数据的无偏估计,结果就是容易产生过拟合现象。而结构风险最小化就是为了克服过拟合而提出的。它是在经验风险最小化的基础上增加了一个正则化因子。通常正则化因子是模型规模的函数。模型越复杂,这个函数取值越大。

 

       正则化因子的加入其实可以解释为对模型参数进行了某种条件约束,然后参数的求解过程就相当于应用拉格拉日乘子法。通过对参数进行约束,保证了参数的取值不会太极端,也就进行了“参数缩减”。

 

岭回归

 

       有些情况下无法按照上面的典型回归的方法去训练模型。比如,训练样本数量少,甚至少于样本维数,这样将导致数据矩阵无法求逆;又比如样本特征中存在大量相似的特征,导致很多参数所代表的意义重复。总得来说,就是光靠训练样本进行无偏估计是不好用了。这个时候,我们就应用结构风险最小化的模型选择策略,在经验风险最小化的基础上加入正则化因子。当正则化因子选择为模型参数的二范数的时候,整个回归的方法就叫做岭回归。为什么叫“岭”回归呢?这是因为按照这种方法求取参数的解析解的时候,最后的表达式是在原来的基础上在求逆矩阵内部加上一个对角矩阵,就好像一条“岭”一样。加上这条岭以后,原来不可求逆的数据矩阵就可以求逆了。不仅仅如此,对角矩阵其实是由一个参数lamda和单位对角矩阵相乘组成。lamda越大,说明偏差就越大,原始数据对回归求取参数的作用就越小,当lamda取到一个合适的值,就能在一定意义上解决过拟合的问题:原先过拟合的特别大或者特别小的参数会被约束到正常甚至很小的值,但不会为零。

 

lasso回归

 

       上面说到,岭回归是在结构风险最小化的正则化因子上使用模型参数向量的二范数形式。那么,如果使用一范数形式,那就是lasso回归了。lasso回归相比于岭回归,会比较极端。它不仅可以解决过拟合问题,而且可以在参数缩减过程中,将一些重复的没必要的参数直接缩减为零,也就是完全减掉了。这可以达到提取有用特征的作用。但是lasso回归的计算过程复杂,毕竟一范数不是连续可导的。关于lasso回归相关的研究是目前比较热门的领域。

 

       以上就是线性回归相关的一些知识的白话叙述。关于回归问题还有一些相关话题比如逻辑斯蒂回归和树回归,限于篇幅,以后再总结。

转自:http://blog.csdn.net/xmu_jupiter/article/details/46594273

 

 

1.变量选择问题:从普通线性回归到lasso

使用最小二乘法拟合的普通线性回归是数据建模的基本方法。其建模要点在于误差项一般要求独立同分布(常假定为正态)零均值。t检验用来检验拟合的模型系数的显著性,F检验用来检验模型的显著性(方差分析)。如果正态性不成立,t检验和F检验就没有意义。

对较复杂的数据建模(比如文本分类,图像去噪或者基因组研究)的时候,普通线性回归会有一些问题:

(1)预测精度的问题 如果响应变量和预测变量之间有比较明显的线性关系,最小二乘回归会有很小的偏倚,特别是如果观测数量n远大于预测变量p时,最小二乘回归也会有较小的方差。但是如果n和p比较接近,则容易产生过拟合;如果n<p,最小二乘回归得不到有意义的结果。

(2)模型解释能力的问题 包括在一个多元线性回归模型里的很多变量可能是和响应变量无关的;也有可能产生多重共线性的现象:即多个预测变量之间明显相关。这些情况都会增加模型的复杂程度,削弱模型的解释能力。这时候需要进行变量选择(特征选择)。

针对OLS的问题,在变量选择方面有三种扩展的方法: (1)子集选择 这是传统的方法,包括逐步回归和最优子集法等,对可能的部分子集拟合线性模型,利用判别准则 (如AIC,BIC,Cp,调整R2 等)决定最优的模型。 (2)收缩方法(shrinkage method) 收缩方法又称为正则化(regularization)。主要是岭回归(ridge regression)和lasso回归。通过对最小二乘估计加入罚约束,使某些系数的估计为0。 (3)维数缩减 主成分回归(PCR)和偏最小二乘回归(PLS)的方法。把p个预测变量投影到m维空间(m<p),利用投影得到的不相关的组合建立线性模型。

2.正则化:岭回归、lasso回归和elastic net

(1)岭回归

最小二乘估计是最小化残差平方和(RSS):

技术分享
 



岭回归在最小化RSS的计算里加入了一个收缩惩罚项(正则化的l2范数)

技术分享
 



这个惩罚项中lambda大于等于0,是个调整参数。各个待估系数越小则惩罚项越小,因此惩罚项的加入有利于缩减待估参数接近于0。重点在于lambda的确定,可以使用交叉验证或者Cp准则。

岭回归优于最小二乘回归的原因在于方差-偏倚选择。随着lambda的增大,模型方差减小而偏倚(轻微的)增加。

岭回归的一个缺点:在建模时,同时引入p个预测变量,罚约束项可以收缩这些预测变量的待估系数接近0,但并非恰好是0(除非lambda为无穷大)。这个缺点对于模型精度影响不大,但给模型的解释造成了困难。这个缺点可以由lasso来克服。(所以岭回归虽然减少了模型的复杂度,并没有真正解决变量选择的问题)

(2)lasso

lasso是一种相对较新的方法,参考[1],[2]。关于lasso的发展和一些思想介绍可以参考网上很有名气的一篇文章《统计学习那些事》http://cos.name/2011/12/stories-about-statistical-learning/

lasso是在RSS最小化的计算中加入一个l1范数作为罚约束:

技术分享
 



l1范数的好处是当lambda充分大时可以把某些待估系数精确地收缩到0。

关于岭回归和lasso,在[3]里有一张图可以直观的比较([3]的第三章是个关于本文主题特别好的参考):

技术分享
 



关于岭回归和lasso当然也可以把它们看做一个以RSS为目标函数,以惩罚项为约束的优化问题。

(3)调整参数lambda的确定

交叉验证法。对lambda的格点值,进行交叉验证,选取交叉验证误差最小的lambda值。最后,按照得到的lambda值,用全部数据重新拟合模型即可。

(4)elastic net

elastic net融合了l1范数和l2范数两种正则化的方法,上面的岭回归和lasso回归都可以看做它的特例:

技术分享
 



elastic net对于p远大于n,或者严重的多重共线性情况有明显的效果。 对于elastic net,当alpha接近1时,elastic net表现很接近lasso,但去掉了由极端相关引起的退化化或者奇怪的表现。一般来说,elastic net是岭回归和lasso的很好的折中,当alpha从0变化到1,目标函数的稀疏解(系数为0的情况)也从0单调增加到lasso的稀疏解。

转自:https://site.douban.com/182577/widget/notes/10567212/note/288551448/

 

 

 

通过对损失函数(即优化目标)加入惩罚项,使得训练求解参数过程中会考虑到系数的大小,通过设置缩减系数(惩罚系数),会使得影响较小的特征的系数衰减到0,只保留重要的特征。常用的缩减系数方法有lasso(L1正则化),岭回归(L2正则化)。

 

缩减系数的目的

1.1 消除噪声特征:

如果模型考虑了一些不必要的特征,那么这些特征就算是噪声。噪声是没必要的,使得模型复杂,降低模型准确性,需要剔除。

1.2 消除关联的特征:

如果模型的特征空间中存在关联的特征,这会使得模型不适定,即模型参数会有多解。训练得到的只是其中一个解,这个解往

往不能反映模型的真实情况,会误导模型的分析与理解。训练求解的模型参数受样本影响特别大,样本变化一点点,参数解就跳

 

 

到另一组解去了。总之,模型是不稳定的。

正则化:

什么是正则化:
对损失函数(目标函数)加入一个惩罚项,使得模型由多解变为更倾向其中一个解。

在最小二乘法中,可以这样理解。XTX可能是不可逆的,通过加上正则项,迫使弱的特征的系数缩减为0.

转自:http://blog.csdn.net/autoliuweijie/article/details/50285881

 

岭回归和lasso回归(转)

标签:多变量   str   strong   兴趣   log   style   融合   san   推导   

原文地址:http://www.cnblogs.com/shixisheng/p/7252816.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!