线性回归——Lasso回归和岭回归
线性回归——最小二乘
线性回归(linear regression),就是用线性函数 f(x)=w⊤x+bf(x)=w⊤x+b 去拟合一组数据 D={(x1,y1),(x2,y2),...,(xn,yn)}D={(x1,y1),(x2,y2),...,(xn,yn)} 并使得损失 J=1n∑ni=1(f(xi)−yi)2J=1n∑i=1n(f(xi)−yi)2 最小。线性回归的目标就是找到一组 (w∗,b∗)(w∗,b∗),使得损失 JJ 最小。
线性回归的拟合函数(或 hypothesis)为:
cost function (mse) 为:
Lasso回归和岭回归
Lasso 回归和岭回归(ridge regression)都是在标准线性回归的基础上修改 cost function,即修改式(2),其它地方不变。
Lasso 的全称为 least absolute shrinkage and selection operator,又译最小绝对值收敛和选择算子、套索算法。
Lasso 回归对式(2)加入 L1 正则化,其 cost function 如下:
岭回归对式(2)加入 L2 正则化,其 cost function 如下:
Lasso回归和岭回归的同和异:
- 相同:
- 都可以用来解决标准线性回归的过拟合问题。
- 不同:
- lasso 可以用来做 feature selection,而 ridge 不行。或者说,lasso 更容易使得权重变为 0,而 ridge 更容易使得权重接近 0。
- 从贝叶斯角度看,lasso(L1 正则)等价于参数 ww 的先验概率分布满足拉普拉斯分布,而 ridge(L2 正则)等价于参数 ww 的先验概率分布满足高斯分布。具体参考博客 从贝叶斯角度深入理解正则化 -- Zxdon 。
也许会有个疑问,线性回归还会有过拟合问题?
加入 L1 或 L2 正则化,让权值尽可能小,最后构造一个所有参数都比较小的模型。因为一般认为参数值小的模型比较简单,能适应不同的数据集,也在一定程度上避免了过拟合现象。
可以设想一下对于一个线性回归方程,若参数很大,那么只要数据偏移一点点,就会对结果造成很大的影响;但如果参数足够小,数据偏移得多一点也不会对结果造成什幺影响,一种流行的说法是『抗扰动能力强』。具体参见博客 浅议过拟合现象(overfitting)以及正则化技术原理。
为什么 lasso 更容易使部分权重变为 0 而 ridge 不行?
lasso 和 ridge regression 的目标都是 minw,bJminw,bJ,式(3)和(4)都是拉格朗日形式(with KKT条件),其中 λλ 为 KKT 乘子,我们也可以将 minw,bJminw,bJ 写成如下形式:
- lasso regression:
- ridge regression:
式(5)和(6)可以理解为,在 w限制的取值范围内,找一个点 w^w^ 使得 mean square error 最小,tt 可以理解为正则化的力度,式(5)和(6)中的 tt 越小,就意味着式(3)和(4)中 λλ 越大,正则化的力度越大 。
以 x∈R2x∈R2 为例,式(5)中对 ww 的限制空间是方形,而式(6)中对 ww 的限制空间是圆形。因为 lasso 对 ww 的限制空间是有棱角的,因此
的解更容易切在 w的某一个维为 0 的点。如下图所示:
Fig. 1 中的坐标系表示 ww 的两维,一圈又一圈的椭圆表示函数
的等高线,椭圆越往外,JJ 的值越大,w∗w∗ 表示使得损失 JJ 取得全局最优的值。使用 Gradient descent,也就是让 ww 向着 w∗w∗ 的位置走。如果没有 L1 或者 L2 正则化约束,w∗w∗ 是可以被取到的。但是,由于有了约束
w 的取值只能限制在 Fig. 1 所示的灰色方形和圆形区域。当然调整 t 的值,我们能够扩大这两个区域。
等高线从低到高第一次和 w 的取值范围相切的点,即是 lasso 和 ridge 回归想要找的权重 w^。
lasso 限制了 w 的取值范围为有棱角的方形,而 ridge 限制了 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 进行了归一化。
如果你的模型中有很多变量对模型都有些许影响,那么用Ridge;当数据量特别大的时候更倾向于用Ridge,因为Ridge计算起来更快。
原文地址:https://www.cnblogs.com/celine227/p/15162914.html
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- RTSP拉流协议视频平台EasyNVR能够接入多少路视频直播流?
- 安装allure后执行命令后报错 INTERNALERROR> AttributeError: module 'pytest' has no attribute 'allure'
- 太好玩了,爬虫、部署API、加小程序,一条龙玩转知乎热榜
- SwiftUI:与 MapKit 协调器通信
- SwiftUI:集成 MapKit
- Seurat教程 || 分析Cell Hashing数据
- 图数据库之TinkerPop Provider
- SwiftUI:用枚举切换视图状
- 【POI】maven引用POI的依赖,XSSFWorkbook依旧无法使用的问题。
- SwiftUI: 将数据写入文档目录
- 如何从YouTube搬运视频?| Mixlab代码入门
- 「MoreThanJava」Day 7:接口详解
- Python 基础(十一):面向对象
- 使用tensorflow进行音乐类型的分类
- Mac安装brew 及安装报错的解决办法【已解决】