线性回归——lasso回归和岭回归(ridge regression)
目录
- 线性回归——最小二乘
- Lasso回归和岭回归
- 为什么 lasso 更容易使部分权重变为 0 而 ridge 不行?
- References
线性回归很简单,用线性函数拟合数据,用 mean square error (mse) 计算损失(cost),然后用梯度下降法找到一组使 mse 最小的权重。
lasso 回归和岭回归(ridge regression)其实就是在标准线性回归的基础上分别加入 L1 和 L2 正则化(regularization)。
本文的重点是解释为什么 L1 正则化会比 L2 正则化让线性回归的权重更加稀疏,即使得线性回归中很多权重为 0,而不是接近 0。或者说,为什么 L1 正则化(lasso)可以进行 feature selection,而 L2 正则化(ridge)不行。
线性回归——最小二乘
线性回归(linear regression),就是用线性函数 \(f(\bm x) = \bm w^{\top} \bm x + b\) 去拟合一组数据 \(D = \{(\bm x_1, y_1), (\bm x_2, y_2), ..., (\bm x_n, y_n)\}\) 并使得损失 \(J = \frac{1}{n}\sum_{i = 1}^n (f(\bm x_i) - y_i)^2\) 最小。线性回归的目标就是找到一组 \((\bm w^*, b^*)\),使得损失 \(J\) 最小。
线性回归的拟合函数(或 hypothesis)为:
\[ f(\bm x) = \bm w^{\top} \bm x + b \tag{1} \]
cost function (mse) 为:
\[ \begin{split} J &= \frac{1}{n}\sum_{i = 1}^n (f(\bm x_i) - y_i)^2 \\ & = \frac{1}{n}\sum_{i = 1}^n (\bm w^{\top} \bm x_i + b - y_i)^2 \end{split} \tag{2} \]
Lasso回归和岭回归
Lasso 回归和岭回归(ridge regression)都是在标准线性回归的基础上修改 cost function,即修改式(2),其它地方不变。
Lasso 的全称为 least absolute shrinkage and selection operator,又译最小绝对值收敛和选择算子、套索算法。
Lasso 回归对式(2)加入 L1 正则化,其 cost function 如下:
\[ J = \frac{1}{n}\sum_{i = 1}^n (f(\bm x_i) - y_i)^2 + \lambda \|w\|_1 \tag{3} \]
岭回归对式(2)加入 L2 正则化,其 cost function 如下:
\[ J = \frac{1}{n}\sum_{i = 1}^n (f(\bm x_i) - y_i)^2 + \lambda \|w\|_2^2 \tag{4} \]
Lasso回归和岭回归的同和异:
- 相同:
- 都可以用来解决标准线性回归的过拟合问题。
- 不同:
- lasso 可以用来做 feature selection,而 ridge 不行。或者说,lasso 更容易使得权重变为 0,而 ridge 更容易使得权重接近 0。
- 从贝叶斯角度看,lasso(L1 正则)等价于参数 \(\bm w\) 的先验概率分布满足拉普拉斯分布,而 ridge(L2 正则)等价于参数 \(\bm w\) 的先验概率分布满足高斯分布。具体参考博客 从贝叶斯角度深入理解正则化 -- Zxdon 。
也许会有个疑问,线性回归还会有过拟合问题?
加入 L1 或 L2 正则化,让权值尽可能小,最后构造一个所有参数都比较小的模型。因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。
可以设想一下对于一个线性回归方程,若参数很大,那么只要数据偏移一点点,就会对结果造成很大的影响;但如果参数足够小,数据偏移得多一点也不会对结果造成什幺影响,一种流行的说法是『抗扰动能力强』。具体参见博客 浅议过拟合现象(overfitting)以及正则化技术原理。
为什么 lasso 更容易使部分权重变为 0 而 ridge 不行?
lasso 和 ridge regression 的目标都是 \(\min_{\bm w, b} J\),式(3)和(4)都是拉格朗日形式(with KKT条件),其中 \(\lambda\) 为 KKT 乘子,我们也可以将 \(\min_{\bm w, b} J\) 写成如下形式:
lasso regression:
\[ \begin{array}{cl} {\min \limits_{w, b}} & {\dfrac{1}{n}\sum_{i = 1}^n (\bm w^{\top} \bm x_i + b - y_i)^2} \\ {\text{s.t.}} &{\|w\|_1 \le t} \end{array} \tag{5} \]ridge regression:
\[ \begin{array}{cl} {\min \limits_{w, b}} & {\dfrac{1}{n}\sum_{i = 1}^n (\bm w^{\top} \bm x_i + b - y_i)^2} \\ {\text{s.t.}} &{\|w\|_2^2 \le t} \end{array} \tag{6} \]
式(5)和(6)可以理解为,在 \(\bm w\) 限制的取值范围内,找一个点 \(\hat{\bm w}\) 使得 mean square error 最小,\(t\) 可以理解为正则化的力度,式(5)和(6)中的 \(t\) 越小,就意味着式(3)和(4)中 \(\lambda\) 越大,正则化的力度越大 。
以 \(\bm x \in R^2\) 为例,式(5)中对 \(\bm w\) 的限制空间是方形,而式(6)中对 \(\bm w\) 的限制空间是圆形。因为 lasso 对 \(\bm w\) 的限制空间是有棱角的,因此 \(\arg \min_{w, b} {\frac{1}{n}\sum_{i = 1}^n (\bm w^{\top} \bm x_i + b - y_i)^2}\) 的解更容易切在 \(\bm w\) 的某一个维为 0 的点。如下图所示:
Fig. 1 中的坐标系表示 \(\bm w\) 的两维,一圈又一圈的椭圆表示函数 \(J = {\frac{1}{n}\sum_{i = 1}^n (\bm w^{\top} \bm x_i + b - y_i)^2}\) 的等高线,椭圆越往外,\(J\) 的值越大,\(\bm w^*\) 表示使得损失 \(J\) 取得全局最优的值。使用 Gradient descent,也就是让 \(\bm w\) 向着 \(\bm w^*\) 的位置走。如果没有 L1 或者 L2 正则化约束,\(\bm w^*\) 是可以被取到的。但是,由于有了约束 \(\|w\|_1 \le t\) 或 \(\|w\|_2^2 \le t\),\(\bm w\) 的取值只能限制在 Fig. 1 所示的灰色方形和圆形区域。当然调整 \(t\) 的值,我么能够扩大这两个区域。
等高线从低到高第一次和 \(\bm w\) 的取值范围相切的点,即是 lasso 和 ridge 回归想要找的权重 \(\hat{\bm w}\)。
lasso 限制了 \(\bm w\) 的取值范围为有棱角的方形,而 ridge 限制了 \(\bm w\) 的取值范围为圆形,等高线和方形区域的切点更有可能在坐标轴上,而等高线和圆形区域的切点在坐标轴上的概率很小。这就是为什么 lasso(L1 正则化)更容易使得部分权重取 0,使权重变稀疏;而 ridge(L2 正则化)只能使权重接近 0,很少等于 0。
正是由于 lasso 容易使得部分权重取 0,所以可以用其做 feature selection,lasso 的名字就指出了它是一个 selection operator。权重为 0 的 feature 对回归问题没有贡献,直接去掉权重为 0 的 feature,模型的输出值不变。
对于 ridge regression 进行 feature selection,你说它完全不可以吧也不是,weight 趋近于 0 的 feature 不要了不也可以,但是对模型的效果还是有损伤的,这个前提还得是 feature 进行了归一化。
References
[1] Tibshirani, R. (1996). Regression Shrinkage and Selection Via the Lasso. Journal Of The Royal Statistical Society: Series B (Methodological), 58(1), 267-288. doi: 10.1111/j.2517-6161.1996.tb02080.x
[2] Lasso算法 -- 维基百科
[3] 机器学习总结(一):线性回归、岭回归、Lasso回归 -- 她说巷尾的樱花开了
[4] 从贝叶斯角度深入理解正则化 -- Zxdon
[5] 浅议过拟合现象(overfitting)以及正则化技术原理 -- 闪念基因
转载于:https://www.cnblogs.com/wuliytTaotao/p/10837533.html
线性回归——lasso回归和岭回归(ridge regression)相关推荐
- lasso回归_线性回归amp;lasso回归amp;岭回归介绍与对比
1. 回顾最小二乘法 详细的解释在以下这个链接 https://www.matongxue.com/madocs/818 简而言之,最小二乘法展现了平方误差值最小的时候,就是最好的拟合回归线. 2. ...
- 线性回归、lasso回归、岭回归以及弹性网络的系统解释
线性回归.lasso回归.岭回归以及弹性网络的系统解释 声明 背景介绍 概述 线性回归模型函数及损失函数 线性回归算法 多项式回归(线性回归的推广) 广义线性回归(线性回归的推广) 岭回归(Ridge ...
- 应用预测建模第六章-线性回归-预测化合物溶解度练习-R语言(多元线性回归,稳健回归,偏最小二乘回归,岭回归,lasso回归,弹性网)
模型:多元线性回归,稳健回归,偏最小二乘回归,岭回归,lasso回归,弹性网 语言:R语言 参考书:应用预测建模 Applied Predictive Modeling (2013) by Max K ...
- 【sklearn】线性回归、最小二乘法、岭回归、Lasso回归
文章目录 机器学习的sklearn库 一.回归分析 <1.1>线性回归 1.1.1.Python实现线性回归 <1.2>最小二乘法 1.2.1.MATLAB实现最小二乘法 1. ...
- 应用预测建模第六章线性回归习题6.1【主成分分析,模型的最优参数选择与模型对比 ,多元线性回归,稳健回归,偏最小二乘回归,岭回归,lasso回归,弹性网】
模型:多元线性回归,稳健回归,偏最小二乘回归,岭回归,lasso回归,弹性网 语言:R语言 参考书:应用预测建模 Applied Predictive Modeling (2013) by Max K ...
- 应用预测建模第六章线性回归习题6.3【缺失值插补,分层抽样,预测变量重要性,重要预测变量如何影响响应变量,多元线性回归,稳健回归,偏最小二乘回归,岭回归,lasso回归,弹性网】
模型:多元线性回归,稳健回归,偏最小二乘回归,岭回归,lasso回归,弹性网 语言:R语言 参考书:应用预测建模 Applied Predictive Modeling (2013) by Max K ...
- 机器学习概念总结笔记(一)——机器学习算法分类、最小二乘回归、岭回归、LASSO回归
原文:https://cloud.tencent.com/community/article/137341 机器学习概念总结 1,机器学习算法分类 1)监督学习: 有train set,train s ...
- lasso回归与岭回归
lasso回归与岭回归 简介 lasso回归(Least Absolute Shrinkage and Selection Operator Regression)与岭回归(Ridge Regress ...
- lasso回归和岭回归_如何计划新产品和服务机会的回归
lasso回归和岭回归 Marketers sometimes have to be creative to offer customers something new without the lux ...
最新文章
- 入职地府后我成了人生赢家_【200811推文】闪闪而恋作者:钦点废柴+入职地府后我成了人生赢家作者:有只胖头鱼...
- Linux程序包管理(yum)
- ad软件侵权律师函_Aspen Plus 9 软件安装教程
- php静态属性获取$_get,php - PHP的静态属性的Magic __get getter - SO中文参考 - www.soinside.com...
- HDU 4109 Instrction Arrangement
- LINQ系列:LINQ to XML操作
- java filterinputstream_java.io.FilterInputStream.close()
- 「解密」浪潮云海InCloud Sphere如何霸榜SPECvirt?
- net修复工具_Stimulsoft Ultimate v2020.3.2修复性更新升级!| 附下载
- lofter 爬虫_Lofter德赫标签日榜 | 200703
- 02函数极限存在条件
- jQuery动画二级下拉菜单
- 康托尔点集matlab实数,康托尔集是什么。详细解释
- java生成N位随机数字
- 使用Python将图片变成铅笔素描
- IDEA 不同系统中 新建 快捷键 Ctrl+Insert
- Kafka单机部署学习演示案例
- 用计算机写作 说课稿,高中英语说课稿:《Module 2 Unit 3 Computer》优秀说课稿范例...
- 一文读懂张量分解(展开)和Matlab实现
- LintCode Url Parser
热门文章
- Openstack虚机实例状态错误手工恢复vm_state:error
- Android推送进阶课程学习笔记
- 搭建自己的前端自动化测试脚手架(三)
- HTTP Continuation or non-HTTP traffic
- 烧流量还是打矩阵,短视频不疯魔不成活?
- 异构计算架构师眼中的AI算法(object detection)
- 投资互联网+企业级IT呈现三大新趋势
- Python基本类型-列表
- php中的__autoload()函数
- Computer Science Theory for the Information Age-3: 高维空间中的高斯分布和随机投影