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

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

线性回归与非线性回归

前面说了,我们的回归模型是一个函数是吧,那么线性回归就是模型函数是由若干个基本函数线性加权得到的函数。也就是每一个基本函数前面都有一个权值来调和自己对于整个模型函数的重要性。然后,非线性函数就是各个基本函数并不是以线性加权形式结合。在线性回归模型里面有一大类,叫广义线性模型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回归(转)的更多相关文章

  1. 多元线性回归模型的特征压缩:岭回归和Lasso回归

    多元线性回归模型中,如果所有特征一起上,容易造成过拟合使测试数据误差方差过大:因此减少不必要的特征,简化模型是减小方差的一个重要步骤.除了直接对特征筛选,来也可以进行特征压缩,减少某些不重要的特征系数 ...

  2. 【机器学习】正则化的线性回归 —— 岭回归与Lasso回归

    注:正则化是用来防止过拟合的方法.在最开始学习机器学习的课程时,只是觉得这个方法就像某种魔法一样非常神奇的改变了模型的参数.但是一直也无法对其基本原理有一个透彻.直观的理解.直到最近再次接触到这个概念 ...

  3. 岭回归和Lasso回归以及norm1和norm2

    norm代表的是距离,两个向量的距离:下图代表的就是p-norm,其实是对向量里面元素的一种运算: 最简单的距离计算(规范)是欧式距离(Euclidean distance),两点间距离是如下来算的, ...

  4. 岭回归与Lasso回归

    线性回归的一般形式 过拟合问题及其解决方法 问题:以下面一张图片展示过拟合问题 解决方法:(1):丢弃一些对我们最终预测结果影响不大的特征,具体哪些特征需要丢弃可以通过PCA算法来实现:(2):使用正 ...

  5. 机器学习之五 正则化的线性回归-岭回归与Lasso回归

    机器学习之五 正则化的线性回归-岭回归与Lasso回归 注:正则化是用来防止过拟合的方法.在最开始学习机器学习的课程时,只是觉得这个方法就像某种魔法一样非常神奇的改变了模型的参数.但是一直也无法对其基 ...

  6. 线性回归大结局(岭(Ridge)、 Lasso回归原理、公式推导),你想要的这里都有

    本文已参与「新人创作礼」活动,一起开启掘金创作之路. 线性模型简介 所谓线性模型就是通过数据的线性组合来拟合一个数据,比如对于一个数据 \(X\) \[X = (x_1, x_2, x_3, ..., ...

  7. 吴裕雄 数据挖掘与分析案例实战(7)——岭回归与LASSO回归模型

    # 导入第三方模块import pandas as pdimport numpy as npimport matplotlib.pyplot as pltfrom sklearn import mod ...

  8. 机器学习入门线性回归 岭回归与Lasso回归(二)

    一 线性回归(Linear Regression ) 1. 线性回归概述 回归的目的是预测数值型数据的目标值,最直接的方法就是根据输入写出一个求出目标值的计算公式,也就是所谓的回归方程,例如y = a ...

  9. 回归算法比较(线性回归,Ridge回归,Lasso回归)

    代码: # -*- coding: utf-8 -*- """ Created on Mon Jul 16 09:08:09 2018 @author: zhen &qu ...

随机推荐

  1. elastic-job 分布式定时任务框架 在 SpringBoot 中如何使用(二)动态添加任务需求

    之前一篇用过了如何在使用创建最简单的任务:比如每天定时清空系统的缓存 这篇文章主要讲解:如何运用elastic-job-lite做灵活的细粒度任务,比如: 如何定时取消某个订单在下订单后30分钟未支付 ...

  2. 如何在UltraEdit中高亮显示PB代码

    打开UE,从菜单中选择高级->配置… 点击打开按钮,注意文件WordFile.txt最后一个高亮显示语言的编号,格式为“ /L(number) ”,假设最后一个高亮显示语言的编号是15,修改UE ...

  3. mysql 按照 where in 排序

    select * from user_extend where `unique` in('mark.liu@xxxx.com','jason.gan@xxxx.com','ssgao@xxxx.com ...

  4. winform 控件没有Cursor属性时的处理办法

    开发程序时,有时我们需要鼠标滑过空件时鼠标变成手型,这样触发动作更为贴近实际.但是有的控件不存在Cursor这个属性,就需要我们自己实现. 具体方法: /// <summary> /// ...

  5. 建造者模式及C++实现

    下面是我自己对建造者模式的理解.具体我还没在开发中应用过,这只是对于书本的理解. 建造者模式 建造者模式:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示.这是建造者模式的标准 ...

  6. 【转载】深入浅出REST

    英文原文:A Brief Introduction to REST 作者:Stefan Tilkov ,译者:苑永凯,发布于 2007-12-25 不知你是否意识到,围绕着什么才是实现异构的应用到应用 ...

  7. shell 2变量

    shell变量 定义变量 变量名命名规则: 1.命名只能使用英文字母.数字和下划线,首个字符不能以数字开头 2.中间不能有空格,可以使用下划线 3.不能使用标点符号 4.不能使用sh中的关键字,可用h ...

  8. 华为P10的内存门和闪存门的检测方法

    用android的终端模拟器,进入以后进入界面,输入命令ls /proc/fs/*,可以查看是否ufs还是emmc硬盘:用devcheck可以查看到手机的内存是否是DDR3还是DDR4:用androb ...

  9. Fragment之介绍(转)

    http://www.cnblogs.com/plokmju/p/3239265.html 前言 开门见山开篇名义,本篇博客将讲解一下Android中Fragment的内容,必要的地方会提供相应的演示 ...

  10. 推荐一个lamp的一键安装包

    本来我是一直用的nginx的,现在安全者的服务器是用的tengine,稳定性就不用多说了! 前段时间用thinkphp写了两个两个项目,刚开始放到了国外的服务器上,环境也是lnmp的,最后发现ngin ...