Lasso、Ridge Regression(岭回归)与线性回归模型(含Matlab代码)

引言

LASSO是由1996年Robert Tibshirani首次提出,全称Least absolute shrinkage and selection operator。该方法是一种压缩估计。它通过构造一个惩罚函数得到一个较为精炼的模型,使得它压缩一些回归系数,即强制系数绝对值之和小于某个固定值;同时设定一些回归系数为零。因此保留了子集收缩的优点,是一种处理具有复共线性数据的有偏估计。1
本文立足于普通线性回归模型,首先提及普通最小二乘法(OLS),并说明Lasso与Ridge Regression(岭回归)为OLS的一个延申方法,用于处理OLS无法解决的问题。
本文假设读者已有概率论与数理统计、线性代数以及运筹学的先验知识,并对线性回归模型有着一定的了解。

一、从线性回归说起

线性回归模型是统计学中最基础也是最实用的模型,他旨在给出一个形如
y = β 0 + β T x y=\beta _0+\boldsymbol{\beta }^{T}\boldsymbol{x} y=β0+βTx
的线性表达式,以表示出自变量 y y y与因变量 x \boldsymbol{x} x之间的线性关系
(其中 β \boldsymbol{\beta } β x \boldsymbol{x} x都是一个 d d d维的列向量)

1.1 模型假设

本文始终按照如下假设,后文不再进行叙述:
现 有 n 组 数 据 样 本 点 { ( x 1 , y 1 ) , ( x 2 , y 2 ) , . . . , ( x n , y n ) } 现有n组数据样本点\{(\boldsymbol{x}_1,y_1),(\boldsymbol{x}_2,y_2),...,(\boldsymbol{x}_n,y_n)\} n{(x1,y1),(x2,y2),...,(xn,yn)}
其 中 x i ∈ R d 是 一 个 d 维 的 列 向 量 , y i ∈ R 是 一 个 实 数 也 就 是 说 现 在 有 d 个 自 变 量 与 1 个 因 变 量 , 这 种 情 况 被 称 为 M u t i p l e   L i n e a r   R e g r e s s i o n ( 多 元 线 性 回 归 ) 需 要 警 惕 不 能 与 M u l t i v a r i a t e   L i n e a r   R e g r e s s i o n ( 因 变 量 y 亦 为 向 量 ) 混 淆 其中\boldsymbol{x}_i \in R^d是一个d维的列向量,y_i \in R是一个实数 \\也就是说现在有d个自变量与1个因变量,这种情况被称为Mutiple~Linear~Regression(多元线性回归)\\需要警惕不能与Multivariate~ Linear~ Regression(因变量y亦为向量)混淆 xiRddyiRd1Mutiple Linear Regression(线)Multivariate Linear Regression(y)

1.2 普通最小二乘法

1.2.1 历史由来

1801年,意大利天文学家朱赛普·皮亚齐发现了第一颗小行星谷神星。经过40天的跟踪观测后,由于谷神星运行至太阳背后,使得皮亚齐失去了谷神星的位置。随后全世界的科学家利用皮亚齐的观测数据开始寻找谷神星,但是根据大多数人计算的结果来寻找谷神星都没有结果。时年24岁的高斯也计算了谷神星的轨道。奥地利天文学家海因里希·奥尔伯斯根据高斯计算出来的轨道重新发现了谷神星。
高斯使用的最小二乘法的方法发表于1809年他的著作《天体运动论》中。
法国科学家勒让德于1806年独立发明“最小二乘法”,但因不为世人所知而默默无闻。勒让德也曾与高斯为谁最早创立最小二乘法原理发生争执。
1829年,高斯提供了最小二乘法的优化效果强于其他方法的证明,因此被称为高斯-马尔可夫定理(OLS估计必定为BLUE)。2

1.2.2 最小二乘法的理论依据

相信大家对最小二乘法已经是非常熟悉了,其本质是一个优化模型,找到最优的回归系数 β 0 \beta_0 β0 β \boldsymbol{\beta } β使得以下这个式子取到最小值
S S E = ∑ i = 1 n ( y i − β 0 − β T x i ) 2 SSE=\sum_{i=1}^n{\left( y_i-\beta _0-\boldsymbol{\beta }^{T}\boldsymbol{x}_i \right) ^2} SSE=i=1n(yiβ0βTxi)2
上面这个式子称为残差平方和,它在标准误差的估计以及线性回归的检验中还有妙用,不过本文仅仅考虑最小二乘法本身而不深究后续的统计推断,故仅需要知道最小二乘法的本质是找到使残差平方和最小的回归系数。
由于样本量 n n n也会对残差平方和的大小产生影响,我们不妨以平均残差平方和为探究目标,即以
Q ( β 0 , β ) = 1 n ∑ i = 1 n ( y i − β 0 − β T x i ) 2 Q(\beta_0,\boldsymbol{\beta })=\dfrac{1}{n}\sum_{i=1}^n{\left( y_i-\beta _0-\boldsymbol{\beta }^{T}\boldsymbol{x}_i \right) ^2} Q(β0,β)=n1i=1n(yiβ0βTxi)2
为目标函数,故最小二乘法的理论模型可以写为:
( β 0 ∗ , β ∗ ) = a r g m i n ( β 0 , β ) Q ( β 0 , β ) (\beta_0^{*},\boldsymbol{\beta }^*)=argmin_{(\beta_0,\boldsymbol{\beta })}Q(\beta_0,\boldsymbol{\beta }) (β0,β)=argmin(β0,β)Q(β0,β)

1.2.3 模型的化简

实际上,我们可以假设 x i \boldsymbol{x}_i xi y i y_i yi的均值皆为0,即
∑ i = 1 n x i = 0 , ∑ i = 1 n y i = 0 \sum_{i=1}^n \boldsymbol{x}_i=\boldsymbol0,\sum_{i=1}^n {y_i}=0 i=1nxi=0,i=1nyi=0
以便化简模型,下面我们来证明这个假设是可行的
证 明 证明
由 于 原 模 型 是 一 个 无 约 束 优 化 问 题 , 且 其 目 标 函 数 是 个 处 处 可 导 函 数 , 取 到 极 小 值 必 定 有 各 偏 导 为 0 , 那 我 们 不 妨 尝 试 对 常 数 项 系 数 β 0 进 行 求 导 并 令 其 为 0 由于原模型是一个无约束优化问题,且其目标函数是个处处可导函数,取到极小值必定有各偏导为0,那我们不妨尝\\试对常数项系数\beta_0进行求导并令其为0 0β00
令 ∂ Q ( β 0 , β ) ∂ β ) = − 2 n ∑ i = 1 n ( y i − β 0 − β T x i ) = 0 令\frac{\partial Q(\beta_0,\boldsymbol{\beta })}{\partial \beta_)}=-\frac{2}{n}\sum_{i=1}^n{\left( y_i-\beta _0-\boldsymbol{\beta }^{T}\boldsymbol{x}_i \right)}=0 β)Q(β0,β)=n2i=1n(yiβ0βTxi)=0
解 得 β 0 = y ˉ − β T x ˉ 将 其 代 回 Q ( β 0 , β ) , 可 得 Q ( β ) = 1 n ∑ i = 1 n ( ( y i − y ˉ ) − β T ( x i − x ˉ ) ) 2 故 不 妨 假 设 ∑ i = 1 n x i = 0 , ∑ i = 1 n y i = 0 , 否 则 取 x i ∗ = x i − x ˉ , y i ∗ = y i − y ˉ 此 时 仅 需 研 究 一 个 不 含 常 数 项 的 函 数 Q ( β ) 在 何 时 取 到 最 小 值 , 再 由 回 代 法 求 出 β 0 ∗ 解得\beta_0=\bar y-\boldsymbol{\beta }^T \bar{\boldsymbol{x}} \\将其代回Q(\beta_0,\boldsymbol{\beta }),可得 \\Q(\boldsymbol{\beta })=\dfrac{1}{n}\sum_{i=1}^n{\left( (y_i-\bar y)-\boldsymbol{\beta }^{T}(\boldsymbol{x}_i - \bar{\boldsymbol{x}})\right)^2} \\故不妨假设\sum_{i=1}^n \boldsymbol{x}_i=\boldsymbol0,\sum_{i=1}^n {y_i}=0,否则取\boldsymbol{x}_i^* = \boldsymbol{x}_i - \bar{\boldsymbol{x}},y_i^*=y_i-\bar y \\此时仅需研究一个不含常数项的函数Q(\boldsymbol{\beta })在何时取到最小值,再由回代法求出\beta_0^* β0=yˉβTxˉQ(β0,β)Q(β)=n1i=1n((yiyˉ)βT(xixˉ))2i=1nxi=0,i=1nyi=0xi=xixˉ,yi=yiyˉQ(β)β0
由上述证明,下文仅仅讨论不含常数项 β 0 \beta_0 β0的模型,即:
β ∗ = a r g m i n β   1 n ∑ i = 1 n ( y i − β T x i ) 2 \boldsymbol{\beta }^*=argmin_{\boldsymbol{\beta }}~ \dfrac{1}{n}\sum_{i=1}^n{\left( y_i-\boldsymbol{\beta }^{T}\boldsymbol{x}_i \right)^2} β=argminβ n1i=1n(yiβTxi)2
如果记 y = [ y 1 , y 2 , . . . , y n ] T ∈ R n , X = [ x 1 , x 2 , . . . , x n ] T ∈ R n × d \boldsymbol y =[y_1,y_2,...,y_n]^T\in R^n,\boldsymbol{X}=[\boldsymbol{x}_1,\boldsymbol{x}_2,...,\boldsymbol{x}_n]^T \in R^{n\times d} y=[y1,y2,...,yn]TRn,X=[x1,x2,...,xn]TRn×d,由矩阵知识可知
∑ i = 1 n ( y i − β T x i ) 2 = ∥ y − X β ∥ 2 2 \sum_{i=1}^n{\left( y_i-\boldsymbol{\beta }^T\boldsymbol{x}_i \right) ^2}=\lVert \boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta } \rVert _{2}^{2} i=1n(yiβTxi)2=yXβ22
其中 ∥ α ∥ 2 \lVert \boldsymbol{\alpha} \rVert _2 α2被称作向量的L2-范数,不明其意的读者可在下一章节看见其具体含义。
故线性规划模型可简化为:
β ∗ = a r g m i n β   1 n ∥ y − X β ∥ 2 2 \boldsymbol{\beta }^*=argmin_{\boldsymbol{\beta }}~ \dfrac{1}{n}\lVert \boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta } \rVert _{2}^{2} β=argminβ n1yXβ22

二、Ridge Regression(岭回归)与Lasso

一般来说,回归问题是一个函数拟合的过程,那么我们希望模型不要太复杂,否则很容易发生过拟合现象,所以我们要加入正则化项,而不同的正则化项就产生了不同的回归方法,其中以Ridge Regression (岭回归)和Lasso最为经典,前者是加入了L2正则化项,后者加入的是L1正则化项。

2.1 向量的范数

本文先对向量的L1范数和L2范数进行介绍,以便后面的介绍。
∥ α ∥ 1 \lVert \boldsymbol{\alpha} \rVert _1 α1被称为向量的L1范数, ∥ α ∥ 2 \lVert \boldsymbol{\alpha} \rVert _2 α2被称为向量的L2范数
∥ α ∥ 1 = ∑ i = 1 d ∣ a i ∣ ∥ α ∥ 2 = ∑ i = 1 d a i 2 \lVert \boldsymbol{\alpha } \rVert _1=\sum_{i=1}^d{\left| a_i \right|} \\ \lVert \boldsymbol{\alpha } \rVert _2= \sqrt{ \sum_{i=1}^d{a_i^2}} α1=i=1daiα2=i=1dai2

2.2 Ridge Regression与Lasso的模型

Ridge Regression与Lasso都是普通线性回归本质上也是优化模型,而前文提到过,相比于普通线性回归,Ridge Regression加入了L2正则化项,Lasso加入了L1正则化项,故它们的目标函数如下:
L a s s o : β ∗ = a r g m i n β   1 n ∥ y − X β ∥ 2 2 + λ ∥ β ∥ 1 R i d g e   R e g r e s s i o n : β ∗ = a r g m i n β   1 n ∥ y − X β ∥ 2 2 + λ ∥ β ∥ 2 2 Lasso: \boldsymbol{\beta }^*=argmin_{\boldsymbol{\beta }}\ \dfrac{1}{n}\lVert \boldsymbol{y}-\boldsymbol{X\beta } \rVert _{2}^{2}+\lambda \lVert \boldsymbol{\beta } \rVert _1 \\Ridge~Regression: \boldsymbol{\beta }^*=argmin_{\boldsymbol{\beta }}\ \dfrac{1}{n}\lVert \boldsymbol{y}-\boldsymbol{X\beta } \rVert _{2}^{2}+\lambda \lVert \boldsymbol{\beta } \rVert _{2}^{2} Lasso:β=argminβ n1yXβ22+λβ1Ridge Regression:β=argminβ n1yXβ22+λβ22

2.3 Ridge Regression与Lasso的差异

Ridge Regression与Lasso作为普通线性回归的改进方法,二者的差异仅仅在于加入的正则化项不同,那么二者的差异在何处呢?它们分别能起到什么样的作用?

2.3.1 模型转化

岭回归模型有一个等价的优化问题,即考虑一个带有约束的线性回归问题,其中约束条件是将系数向量 β \boldsymbol{\beta } β限制在一个半径为 t t t的超球内部,即下面这个模型是与原问题等价的:
β ∗ = a r g m i n β    1 n ∥ y − X β ∥ 2 2   s . t .   ∥ β ∥ 2 2 ≤ t \boldsymbol{\beta }^*=argmin_{\boldsymbol{\beta }}\,\,\dfrac{1}{n}\lVert \boldsymbol{y}-\boldsymbol{X\beta } \rVert _{2}^{2} \\~ \\ s.t.\ \lVert \boldsymbol{\beta } \rVert _{2}^{2}\le t β=argminβn1yXβ22 s.t. β22t
证 明 证明
对 上 面 带 约 束 的 优 化 模 型 使 用 广 义 的 拉 格 朗 日 乘 数 法 , 将 其 转 化 为 无 约 束 优 化 问 题 , 便 有 L ( β , λ ) = 1 n ∥ y − X β ∥ 2 2 + λ ∥ β ∥ 2 2 − λ t 当 λ 与 t 给 定 时 , 可 以 看 出 L ( β , λ ) 是 R i d g e   R e g r e s s i o n 的 目 标 函 数 ( λ t 是 一 个 常 数 ) 故 我 们 证 明 了 上 面 的 优 化 模 型 可 推 得 原 问 题 , 又 由 于 所 求 优 化 问 题 是 一 个 凸 优 化 ( 线 性 回 归 是 一 个 典 型 的 凸 优 化 问 题 ) , 具 有 强 对 偶 性 , 故 两 个 模 型 等 价 对上面带约束的优化模型使用广义的拉格朗日乘数法,将其转化为无约束优化问题,便有 \\L(\boldsymbol{\beta },\lambda)=\dfrac{1}{n}\lVert \boldsymbol{y}-\boldsymbol{X\beta } \rVert _{2}^{2}+\lambda \lVert \boldsymbol{\beta } \rVert _{2}^{2}-\lambda t \\当\lambda与t给定时,可以看出L(\boldsymbol{\beta },\lambda)是Ridge~Regression的目标函数(\lambda t是一个常数) \\ 故我们证明了上面的优化模型可推得原问题,又由于所求优化问题是一个凸优化(线\\性回归是一个典型的凸优化问题),具有强对偶性,故两个模型等价 使广便L(β,λ)=n1yXβ22+λβ22λtλtL(β,λ)Ridge Regression(λt)(线)
同理地,Lasso也有一个带约束形式的等价优化模型:
β ∗ = a r g m i n β    1 n ∥ y − X β ∥ 2 2   s . t .   ∥ β ∥ 1 ≤ t \boldsymbol{\beta }^*=argmin_{\boldsymbol{\beta }}\,\,\dfrac{1}{n}\lVert \boldsymbol{y}-\boldsymbol{X\beta } \rVert _{2}^{2} \\~ \\ s.t.\ \lVert \boldsymbol{\beta } \rVert _1\le t β=argminβn1yXβ22 s.t. β1t

2.3.2 二者差异比较

考虑 d = 2 d=2 d=2的情况,记 β = [ β 1 , β 2 ] T \boldsymbol{\beta }=[\beta_1,\beta_2]^T β=[β1,β2]T,给出一组样本数据:
差异比较数据集
容易验证这组数据是满足均值为0条件的,即
∑ i = 1 n x i = 0 , ∑ i = 1 n y i = 0 \sum_{i=1}^n \boldsymbol{x}_i=\boldsymbol0,\sum_{i=1}^n {y_i}=0 i=1nxi=0,i=1nyi=0
故我们研究不含常数项的回归模型
β ∗ = a r g m i n β   Q ( β ) = 1 n ∥ y − X β ∥ 2 2 \boldsymbol{\beta }^*=argmin_{\boldsymbol{\beta }}~Q(\boldsymbol{\beta })= \dfrac{1}{n}\lVert \boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta } \rVert _{2}^{2} β=argminβ Q(β)=n1yXβ22
由于此时 β = [ β 1 , β 2 ] T \boldsymbol{\beta }=[\beta_1,\beta_2]^T β=[β1,β2]T,则 Q Q Q β 1 , β 2 \beta_1,\beta_2 β1,β2的函数,不妨作出其函数图像
目标函数的图像
可以看出该函数有且仅有一个极小值,为更加直观的观察,我们绘制出其等值线图
等值线图
等值线中,红色点是 Q Q Q的极小值点,同一颜色的圈代表着 Q Q Q在该圈上函数值相同,越靠近红色点则 Q Q Q的值越小,很显然对于这个问题而已普通线性回归的解就是红色点。
下面我们来看看Ridge Regression与Lasso的解,从它们的带约束条件的优化模型可以看出,在 d = 2 d=2 d=2场合下,Ridge Regression将可行解约束在一个圆内,而Lasso将可行解约束在一个菱形内,具体情况可见下图:
差异比较
从上图可以看见,Ridge Regression的最优解在某条等值线与约束圆的切点上取到,而Lasso的最优解通常在约束菱形的端点处取到(即坐标轴上),也就是说Lasso可能会使某个或某些回归系数为0,也就是说达到了“属性约简”或是“特征提取”的效果。而Ridge Regression会导致“权值衰减”。

三、求解方法

从目标函数的表达式就可以看出,普通线性回归与Ridge Regression的目标函数是处处可导的,而Lasso目标函数就没有那么好的性质了。实际上,我们可以给出前两个模型的解析解,而Lasso仅能给出迭代解法。

3.1 矩阵解法

3.1.1 矩阵的迹及其导数

矩阵的迹大家应该非常了解,即对角线元素相加(要求是方阵):
t r ( A ) = ∑ i = 1 n a i i tr(A) = \sum_{i=1}^n{a_{ii}} tr(A)=i=1naii
下面介绍矩阵迹的一些性质,仅仅叙述,不加以证明
性质1 t r ( A B ) = t r ( B A ) tr(AB)=tr(BA) tr(AB)=tr(BA)
性质2 ∂ t r ( A B ) ∂ ( A ) = ∂ t r ( B A ) ∂ ( A ) = B T \dfrac{\partial tr(AB)}{\partial(A)}=\dfrac{\partial tr(BA)}{\partial(A)}=B^T (A)tr(AB)=(A)tr(BA)=BT
性质3 ∂ t r ( A T B ) ∂ ( A ) = ∂ t r ( B A T ) ∂ ( A ) = B \dfrac{\partial tr(A^TB)}{\partial(A)}=\dfrac{\partial tr(BA^T)}{\partial(A)}=B (A)tr(ATB)=(A)tr(BAT)=B
性质4 ∂ t r ( A T B ) ∂ ( A ) = ∂ t r ( B A T ) ∂ ( A ) = B \dfrac{\partial tr(A^TB)}{\partial(A)}=\dfrac{\partial tr(BA^T)}{\partial(A)}=B (A)tr(ATB)=(A)tr(BAT)=B
性质5 ∂ t r ( A T A ) ∂ ( A ) = ∂ t r ( A A T ) ∂ ( A ) = 2 A \dfrac{\partial tr(A^TA)}{\partial(A)}=\dfrac{\partial tr(AA^T)}{\partial(A)}=2A (A)tr(ATA)=(A)tr(AAT)=2A
性质6 ∂ t r ( A T B A ) ∂ ( A ) = ( B + B T ) A \dfrac{\partial tr(A^TBA)}{\partial(A)}=(B+B^T)A (A)tr(ATBA)=(B+BT)A
性质7 ∂ t r ( A B A T ) ∂ ( A ) = A ( B + B T ) \dfrac{\partial tr(ABA^T)}{\partial(A)}=A(B+B^T) (A)tr(ABAT)=A(B+BT)
性质8 ∂ t r ( B A A T B T ) ∂ ( A ) = ( A T B T B ) T + B T B A = 2 B T B A \dfrac{\partial tr(BAA^TB^T)}{\partial(A)}=(A^TB^TB)^T+B^TBA=2B^TBA (A)tr(BAATBT)=(ATBTB)T+BTBA=2BTBA
向量的L2-范数与矩阵的迹有着密不可分的关系,容易证明下式:
若 α 是 d 维 列 向 量 , 则 有 ∥ α ∥ 2 2 = α T α = t r ( α α T ) 若\boldsymbol{\alpha}是d维列向量,则有 \\ \lVert \boldsymbol{\alpha} \rVert_{2}^2=\boldsymbol{\alpha}^T \boldsymbol{\alpha} =tr(\boldsymbol{\alpha}\boldsymbol{\alpha}^T) αdα22=αTα=tr(ααT)

3.1.2 最小二乘法的矩阵解

由向量L2-范数与矩阵迹的关系,可以将最小二乘法的目标函数改写为:
Q ( β ) = 1 n ∥ y − X β ∥ 2 2 = 1 n t r [ ( y − X β ) ( y − X β ) T ] = 1 n t r [ ( y − X β ) ( y T − β T X T ) ] = 1 n t r [ y y T − y β T X T − X β y T + X β β T X T ] Q(\boldsymbol{\beta })= \dfrac{1}{n}\lVert \boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta } \rVert _{2}^{2}=\dfrac{1}{n}tr[(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta })(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta })^T] \\ =\dfrac{1}{n}tr[(\boldsymbol{y}-\boldsymbol{X}\boldsymbol{\beta })(\boldsymbol{y}^T-\boldsymbol{\beta}^T\boldsymbol{X}^T)] \\ = \dfrac{1}{n} tr[\boldsymbol{y}\boldsymbol{y}^T-\boldsymbol{y}\boldsymbol{\beta}^T\boldsymbol{X}^T-\boldsymbol{X}\boldsymbol{\beta }\boldsymbol{y}^T+\boldsymbol{X}\boldsymbol{\beta }\boldsymbol{\beta}^T\boldsymbol{X}^T] Q(β)=n1yXβ22=n1tr[(yXβ)(yXβ)T]=n1tr[(yXβ)(yTβTXT)]=n1tr[yyTyβTXTXβyT+XββTXT]
再 令 ∂ Q ( β ) ∂ β = 1 n ∂ t r [ y y T − y β T X T − X β y T + X β β T X T ] ∂ β = 1 n [ 0 − X T y − X T y + 2 X T X β ] = 2 n ( X T X β − X T y ) = 0 再令\dfrac{\partial Q(\boldsymbol{\beta })}{\partial\boldsymbol{\beta }}=\dfrac{1}{n} \dfrac{\partial{tr[\boldsymbol{y}\boldsymbol{y}^T-\boldsymbol{y}\boldsymbol{\beta}^T\boldsymbol{X}^T-\boldsymbol{X}\boldsymbol{\beta }\boldsymbol{y}^T+\boldsymbol{X}\boldsymbol{\beta }\boldsymbol{\beta}^T\boldsymbol{X}^T]}}{\partial\boldsymbol{\beta }} \\ = \dfrac{1}{n} [0-\boldsymbol X^T\boldsymbol y-\boldsymbol X^T\boldsymbol y+2\boldsymbol X^T\boldsymbol X\boldsymbol \beta] \\ = \dfrac{2}{n} (\boldsymbol X^T\boldsymbol X\boldsymbol \beta-\boldsymbol X^T\boldsymbol y)=0 βQ(β)=n1βtr[yyTyβTXTXβyT+XββTXT]=n1[0XTyXTy+2XTXβ]=n2(XTXβXTy)=0
得 β O L S = ( X T X ) − 1 X T y 得\boldsymbol \beta^{OLS}=(\boldsymbol X^T\boldsymbol X)^{-1}\boldsymbol X^T\boldsymbol y βOLS=(XTX)1XTy

3.1.3 Ridge Regression的矩阵解

从最小二乘法解的形式可以看出,要求 X T X \boldsymbol X^T\boldsymbol X XTX是一个非奇异阵,即要求影响变量之间不存在共线性,一旦变量之间出现了共线性,最小二乘法就难以实施,Ridge Regression就此而生。
同样地,将Ridge Regression的目标函数写为
R ( β ) =   1 n ∥ y − X β ∥ 2 2 + λ ∥ β ∥ 2 2 = Q ( β ) + λ t r ( β β T ) R({\boldsymbol{\beta }}) =\ \dfrac{1}{n}\lVert \boldsymbol{y}-\boldsymbol{X\beta } \rVert _{2}^{2}+\lambda \lVert \boldsymbol{\beta } \rVert _{2}^{2} \\ = Q(\boldsymbol{\beta })+\lambda tr(\boldsymbol{\beta } \boldsymbol{\beta } ^T) R(β)= n1yXβ22+λβ22=Q(β)+λtr(ββT)
令 ∂ R ( β ) ∂ β = ∂ Q ( β ) ∂ β + λ ∂ t r ( β β T ) ∂ β = 2 n ( X T X β − X T y ) + 2 λ β = 0 令\dfrac{\partial R(\boldsymbol{\beta })}{\partial\boldsymbol{\beta }}=\dfrac{\partial Q(\boldsymbol{\beta })}{\partial\boldsymbol{\beta }}+\lambda\dfrac{\partial{tr(\boldsymbol{\beta}\boldsymbol{\beta}^T)}}{\partial{\boldsymbol{\beta}}} \\ = \dfrac{2}{n} (\boldsymbol X^T\boldsymbol X\boldsymbol \beta-\boldsymbol X^T\boldsymbol y)+2\lambda\boldsymbol \beta=0 βR(β)=βQ(β)+λβtr(ββT)=n2(XTXβXTy)+2λβ=0
得 β R i d g e = ( X T X + λ n I ) − 1 X T y 得\boldsymbol{\beta}^{Ridge}=(\boldsymbol X^T\boldsymbol X+\lambda n \boldsymbol I)^{-1}\boldsymbol X^T\boldsymbol y βRidge=(XTX+λnI)1XTy
可以看见,通过适当的选择 λ \lambda λ的值,可以使得原本是奇异阵的 X T X \boldsymbol X^T\boldsymbol X XTX变为一个可逆矩阵 X T X + λ n I \boldsymbol X^T\boldsymbol X+\lambda n \boldsymbol I XTX+λnI,而 λ \lambda λ的值可以人为设定,称为岭回归的参数(也有时称 α = λ n \alpha=\lambda n α=λn为岭回归参数),从模型中可以看出, λ \lambda λ越大则对正则化约束越为看重,当 λ \lambda λ较小时,可以得到一个与线性回归几乎一样的解。

3.2 Lasso的求解方法

3.2.1 解析解法

Lasso的目标函数不是一个处处可导的函数,且对向量的L1-范数求导需要引入次梯度的概念,且还需要假设 X T X = I \boldsymbol X^T\boldsymbol X=\boldsymbol I XTX=I,也就是任意两个特征向量相互正交,才能导出Lasso的解析解,由于条件过于苛刻,在实际运用中几乎不可能用到解析解,在此仅仅给出结论,省去推导过程。
β i L a s s o = s i g n ( β i O L S ) ( ∣ β i O L S ∣ − λ n 2 ) + \beta_{i}^{Lasso}=sign(\beta_i^{OLS})(|\beta_i^{OLS}|-\dfrac{\lambda n}{2})_+ βiLasso=sign(βiOLS)(βiOLS2λn)+
注:其中 s i g n sign sign表示符号函数, ( x ) + (x)_+ (x)+表示 x x x的正部

3.2.2 数值解法

坐标下降法是用来求解Lasso的一个经典方法,它适用于在1维场合容易解决但高维场合难以解决的问题,下面对算法进行叙述
S t e p 1 : 随 机 化 确 定 β ( 0 ) = ( β 1 ( 0 ) , β 2 ( 0 ) , . . . , β d ( 0 ) ) Step1:随机化确定\boldsymbol \beta ^{(0)} = (\beta_1^{(0)},\beta_2^{(0)},...,\beta_d^{(0)}) Step1:β(0)=(β1(0),β2(0),...,βd(0))
S t e p 2 : 假 设 现 在 有 β ( k ) = ( β 1 ( k ) , β 2 ( k ) , . . . , β d ( k ) ) , 则 根 据 如 下 公 式 进 行 迭 代 : β i ( k + 1 ) = a r g m i n β i   L ( β 1 ( k ) , β 2 ( k ) , . . . , β i − 1 ( k ) , β i , β i + 1 ( k ) , . . . , β d ( k ) ) , 这 里 L 是 L a s s o 的 目 标 函 数 ( 也 就 是 说 此 时 只 有 β i 是 变 量 , 其 他 都 为 常 量 , 是 一 个 一 维 搜 索 问 题 , 可 采 用 一 维 搜 索 方 法 求 解 或 直 接 使 用 3.2.1 中 提 到 的 解 析 解 ) Step2:假设现在有\boldsymbol \beta ^{(k)} = (\beta_1^{(k)},\beta_2^{(k)},...,\beta_d^{(k)}),则根据如下公式进行迭代: \\ \beta_i^{(k+1)}=argmin_{\beta_i}~L(\beta_1^{(k)},\beta_2^{(k)},...,\beta_{i-1}^{(k)},\beta_i,\beta_{i+1}^{(k)},...,\beta_d^{(k)}),这里L是Lasso的目标函数\\(也就是说此时只有\beta_i是变量,其他都为常量,是一个一维搜索问题,可采用一维搜索方法求解或直接使用3.2.1中\\提到的解析解) Step2:β(k)=(β1(k),β2(k),...,βd(k))βi(k+1)=argminβi L(β1(k),β2(k),...,βi1(k),βi,βi+1(k),...,βd(k)),LLasso(βi使3.2.1)
S t e p 3 : 对 ∀ i , 若 ∣ β i ( k + 1 ) − β i ( k ) ∣ < ϵ , 则 跳 出 循 环 , 否 则 回 到 S t e p 2 Step3:对\forall i,若|\beta_i^{(k+1)}-\beta_i^{(k)}|<\epsilon,则跳出循环,否则回到Step2 Step3:i,βi(k+1)βi(k)<ϵStep2

四、程序实现

下面介绍一下如何用Matlab软件实现上述模型。先给出一个背景,我们来研究这样一个问题:

例1 :财政收入与国民收入、工业总产值、农业总产值、总人口、就业人口、固定资产投资等因素有关。下表列出了1952-1981年的原始数据,试构造预测模型。
财政收入

4.1 线性回归

只要你的Matlab版本不低于2012,那么它就帮你集成了lasso这个函数(线性回归与Ridge Regression更是在更老的版本就有了),先从最简单的线性回归说起。
线性回归在Matlab中的命令为regress,其基本用法为:
b = regress(y,X)
其中y为因变量组成的列向量,X为自变量组成的矩阵(还有更多用法,读者请自行探索)

%% 读取数据
data = [1952	598	349	461	57482	20729	44	184
    1953	586	455	475	58796	21364	89	216
    1954	707	520	491	60266	21832	97	248
    1955	737	558	529	61465	22328	98	254
    1956	825	715	556	62828	23018	150	268
    1957	837	798	575	64653	23711	139	286
    1958	1028	1235	598	65994	26600	256	357
    1959	1114	1681	509	67207	26173	338	444
    1960	1079	1870	444	66207	25880	380	506
    1961	757	1156	434	65859	25590	138	271
    1962	677	964	461	67295	25110	66	230
    1963	779	1046	514	69172	26640	85	266
    1964	943	1250	584	70499	27736	129	323
    1965	1152	1581	632	72538	28670	175	393
    1966	1322	1911	687	74542	29805	212	466
    1967	1249	1647	697	76368	30814	156	352
    1968	1187	1565	680	78534	31915	127	303
    1969	1372	2101	688	80671	33225	207	447
    1970	1638	2747	767	82992	34432	312	564
    1971	1780	3156	790	85229	35620	355	638
    1972	1833	3365	789	87177	35854	354	658
    1973	1978	3684	855	89211	36652	374	691
    1974	1993	3696	891	90859	37369	393	655
    1975	2121	4254	932	92421	38168	462	692
    1976	2052	4309	955	93717	38834	443	657
    1977	2189	4925	971	94974	39377	454	723
    1978	2475	5590	1058	96259	39856	550	922
    1979	2702	6065	1150	97542	40581	564	890
    1980	2791	6592	1194	98705	41896	568	826
    1981	2927	6862	1273	100072	73280	496	810];
%% 数据处理
x = data(1:end-5,2:end-1);     %5个用于预测
y = data(1:end-5,end);  %5个用于预测
X = [ones(size(y)) x];  % 加上常数项
b_OLS = regress(y,X) %  线性回归

运行结果为:

【output】
b_OLS =

  365.5804
    0.5610
    0.0137
   -0.5819
   -0.0021
   -0.0050
    0.0713

β 0 = 365.5804 , β 1 = ( 0.5610 , 0.0137 , − 0.5819 , − 0.0021 , − 0.0050 , 0.0713 ) T \beta_0=365.5804,\boldsymbol{\beta_1}=(0.5610,0.0137,-0.5819,-0.0021,-0.0050,0.0713)^T β0=365.5804,β1=(0.5610,0.0137,0.5819,0.0021,0.0050,0.0713)T

4.2 Ridge Regression

b = ridge(y,X,k,scaled)
这是岭回归的命令,其中y表示因变量组成的向量,X表示自变量组成的向量(无需带有常数项),k为岭回归参数,scaled表示是否输出标准化系数(0为否,1为是)

b_Ridge = ridge(y,x,1,0) % Ridge

首先选用岭回归参数=1进行岭回归,可以发现结果与线性回归相去甚远

【output】
b_Ridge =

   47.0837
    0.1266
    0.0305
   -0.0705
    0.0006
    0.0017
    0.5002

若选用岭回归参数=0.001,输出结果为:

b_Ridge =

  363.9392
    0.5577
    0.0140
   -0.5781
   -0.0021
   -0.0049
    0.0744

这个结果与线性回归的结果非常接近了!

最近时间比较忙, 待续…


  1. 引用自“LASSO——百度百科” ↩︎

  2. 引用自“wikipedia” ↩︎

  • 22
    点赞
  • 148
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值