【机器学习】Linear least squares, Lasso,ridge regression有何本质区别?
还有ridge regression uses
L2 regularization; and Lasso uses
L1 regularization.
L1和L2一般如何选取?
首先,普通的线性回归的公式是这样的
y是被解释变量,X是p个解释变量,我们手里有n组(y,X)的样本,然后想要通过这些样本找到一个向量beta使得
被最小化,满足这个最小化条件的beta就是线性回归要寻找的beta,数学上可以证明这个问题是有通解的:
也就是说,只有我们手里有X和Y这两个矩阵(向量),把它们带入上面的公式就能得到我们想要的beta,然后就能用beta和新的Xi来对未知的Yi进行预测了。然而,上面这个公式有一个问题,
这两个矩阵相乘的结果,一个p*p的矩阵(p是解释变量的个数),一定是可逆的吗?不可逆的话刚才算beta的公式不就没有意义了吗?幸运的是,在实际生活中,只要我们的数据真的是随机抽取的,这个矩阵一般都是可逆的。
不幸的是,有一种存在叫做almost singular。
一个方阵(行数=列数, 比如上面那个p*p矩阵)一定可以被归类到以下两种情况:
singular: 行列式|X|=0,特征根中至少有一个是0,不满秩,不可以求逆。
nonsingular: 行列式|X|不等于0,特征根都不等于0,满秩,可以求逆。
这个矩阵
肯定是nonsingular的可以求逆,但是在一些情况下(比如multicollinearity),这个矩阵的行列式的值可能非常非常非常小(比如0.000000001),于是X只要有一个微小的变化,它的逆矩阵就会有一个很大很大的变化,导致你用不同的样本估计出来的beta的差别非常非常大,这样的矩阵就叫almostsingular。
almost singular: 行列式|X|几乎等于0,特征根有一个或多个接近于0,满秩,可以求逆,但是对X进行微小的改变会导致逆矩阵发生巨大的改变。
大家想一想,如果你用1点钟收集到的数据估出来的参数等于100,3点钟收集到的数据估出来的参数等于100000,那你到底要用哪一个?到底哪一个是对的?你并不知道。
这个问题就是楼上有人提出的“estimator 的数值解可能不存在/极不稳定”的情况。
那么如何解决呢?当然要对症下药啦。既然这个矩阵的行列式近似等于0,那我在它的对角线上全部加上一个常数不就行了嘛?
于是ridge regression就被发明出来了:
其实就是在刚刚Beta的解的公式的基础上进行了微小的调整,I是单位矩阵,lamda是通过crossvalidation来确定的,并不是需要估计的参数。这个调整就是楼上有人说的regularization。
你可能会很疑惑,如果说线性回归是在最小化下面这个方程:
那ridgeregression是在最小化什么东西呢?数学上也可以证明,上面新的beta的解,其实就是在最小化下面这个式子:
其实就是在上面的式子后面多加了一项而已。你可能又要问了,多加的那一项凭什么是模长呢?不能把2-norm改成1-norm吗?
答案是可以的,这种情况就是lasso了:

遗憾的是,lasso是不能像ridge regression和linear regression一样写出“显式解”的,必须用数值方法去近似上面的优化问题的解。
幸运的是,统计学家发现用lasso算出来的beta的很多项是0,也就是说你在估计参数的时候顺带着把model selection也一起做了,买一送一哦亲!
为什么会这样呢?上面有答主传了一副图:
因为lasso选了1-norm,导致theta-lasso的范围“有棱有角”,在和normalequation“相互妥协”的过程中万一碰到了“楞”或者“角”的话,就会有一个解释变量的参数变成0。比如右图中的theta1就变成了0。而左图是无论如何不可能让某个参数变成0的。
简而言之,
不想做数值优化,想要一个确定的解,选ridge regression吧!
不想做完参数估计还要做model selection挑选变量,选lasso吧!
可是新的问题又出现了,ridge regression选了2-norm,lasso选了1-norm,那我能不能把这个问题拓展到p-norm的情形呢?(这个p和刚才的解释变量的个数p是两个概念)
答案是可以的,只要p大于等于1就行了。
p为什么不能小于1?因为p小于1时刚才那幅图里的圆形和正方形会继续“往里陷”,变成下面的样子:
这样这个集合就不是convexset了,没有办法做最优化了,which is another long story。
最后回到一开始“空间”的问题,为什么我说理解这个问题“空间”的概念非常重要呢?
其实线性回归的本质,是把一个n维空间的向量Y投射到p+1维空间,这个p+1维空间就是p个X解释变量和一个常数向量,这p+1个向量span出来的一个“亚空间”。因为Y本身在n维空间太复杂了,而我们生活在p+1维空间(一般情况下p+1远小于n),我们能做的就是把Y投射到我们所在的p+1维空间,尽可能的去获得更多的Y的信息。然而,有些时候因为X数据本身出现了一些问题,p+1维空间发生了“退化”或者“坍塌”,为了“支撑”起这个空间,我们在对角线上都加了一个常数,撑起了一个新的空间,这就是regularization的基本思路。
你可能又要问了,有没有可能不用投射到p+1维空间,我们直接在n维空间找到Y的全部信息呢?
答案是可以的,但是这就不叫线性回归了,这叫解线性方程组(p+1=n)。
所以说,线性代数真的很重要啊。
【机器学习】Linear least squares, Lasso,ridge regression有何本质区别?的更多相关文章
- L1,L2范数和正则化 到lasso ridge regression
一.范数 L1.L2这种在机器学习方面叫做正则化,统计学领域的人喊她惩罚项,数学界会喊她范数. L0范数 表示向量xx中非零元素的个数. L1范数 表示向量中非零元素的绝对值之和. L2范数 表 ...
- 再谈Lasso回归 | elastic net | Ridge Regression
前文:Lasso linear model实例 | Proliferation index | 评估单细胞的增殖指数 参考:LASSO回歸在生物醫學資料中的簡單實例 - 生信技能树 Linear le ...
- 线性回归——lasso回归和岭回归(ridge regression)
目录 线性回归--最小二乘 Lasso回归和岭回归 为什么 lasso 更容易使部分权重变为 0 而 ridge 不行? References 线性回归很简单,用线性函数拟合数据,用 mean squ ...
- ISLR系列:(4.2)模型选择 Ridge Regression & the Lasso
Linear Model Selection and Regularization 此博文是 An Introduction to Statistical Learning with Applicat ...
- 机器学习方法:回归(二):稀疏与正则约束ridge regression,Lasso
欢迎转载,转载请注明:本文出自Bin的专栏blog.csdn.net/xbinworld. "机器学习方法"系列,我本着开放与共享(open and share)的精神撰写,目的是 ...
- Jordan Lecture Note-4: Linear & Ridge Regression
Linear & Ridge Regression 对于$n$个数据$\{(x_1,y_1),(x_2,y_2),\cdots,(x_n,y_n)\},x_i\in\mathbb{R}^d,y ...
- [Scikit-learn] 1.1 Generalized Linear Models - Bayesian Ridge Regression
1.1.10. Bayesian Ridge Regression 首先了解一些背景知识:from: https://www.r-bloggers.com/the-bayesian-approach- ...
- 机器学习:模型泛化(岭回归:Ridge Regression)
一.基础理解 模型正则化(Regularization) # 有多种操作方差,岭回归只是其中一种方式: 功能:通过限制超参数大小,解决过拟合或者模型含有的巨大的方差误差的问题: 影响拟合曲线的两个因子 ...
- 机器学习技法笔记:Homework #6 AdaBoost&Kernel Ridge Regression相关习题
原文地址:http://www.jianshu.com/p/9bf9e2add795 AdaBoost 问题描述 程序实现 # coding:utf-8 import math import nump ...
随机推荐
- 在vscode 中使用Git -- 已有项目添加到git
本文使用与在已经存在本地项目的情况下将本地项目添加到git中管理,本地不存在项目则可以直接从Git上克隆下来后再创建项目目录更方便. 创建远程Git 仓库 如果Git 仓库已存在,可直接参考下一部,不 ...
- JAVA》eclipse——(二)Tomcat
一.进入www.apache.org网页(注:图中所有箭头都依据从左到右,从上到下的规则) 二.向下拉网页,然后如下图操作 三.进入之后,在网页的左边选择想要的Tomcat版本 四.选择与本机相同系统 ...
- php的$_get,$_post用法
$_GET 可以被收藏, 可以被缓存, 可以保存在历史记录中, 可以提交请求但是很不安全, 长度有限制在2000个字符,其实get请求就是一个url;$_GET['user_name'] $_POST ...
- 解决c#distinct不好用的问题
当一个结合中想根据某一个字段做去重方法时使用以下代码 IQueryable 继承自IEnumerable 先举例: #region linq to object List<People> ...
- JDK、JRE和JVM的区别与相互之间的联系
工作这么久,好多时间都在研究一些并发.多线程.分布式.框架等这些东西,但是前几天突然被人问到jdk.jre.jvm的区别与联系,瞬间觉得一脸懵逼,感觉还是有必要重新整理一下一些比较基本的java知识了 ...
- Socket 对象(内建)方法
函数 描述 服务器端套接字 s.bind() 绑定地址(host,port)到套接字, 在AF_INET下,以元组(host,port)的形式表示地址. s.listen() 开始TCP监听.back ...
- maven项目创建3 (依赖版本冲突)
调节原则 1 路径近者优先原则 自己添加一个想要依赖的版本 2第一声明者优先原则 谁排在前面就用谁的 以上两种统称为 调节原则 排除原则 排除自己的不想要的版本 版本锁定 谁能够提供锁定的版本,就用谁 ...
- 手动升级 Confluence 6 - 升级问题解决
升级失败了? 如果你需要对你的升级进行回退,你必须首先恢复你老的 Confluence 备份.不要尝试再次进行升级,也不要尝试再次对升级失败的 Confluence 进行再次启动. 在升级过程中遇到 ...
- 51 Nod N^N的末位数字
1004 n^n的末位数字 题目来源: Author Ignatius.L (Hdu 1061) 基准时间限制:1 秒 空间限制:131072 KB 分值: 5 难度:1级算法题 收藏 关注 给 ...
- 论文阅读:FlowBlaze: Stateful Packet Processing in Hardware
摘要: 尽管可编程NIC可以提供更好的可扩展性以处理不断增长的网络工作量,但为硬件中的有状态网络功能编程提供表达能力却又简单的抽象仍然是一项研究挑战. 我们使用FlowBlaze解决了这个问题,Flo ...