查看原文
其他

正规化线形回归

Mean Machine 王的机器 2022-05-16

1. 引言


在次贷危机爆发之前的很长一段时间,房贷条件都是比较宽松的。银行可拿自己发行房贷一条龙打包成房贷抵押证券 (mortgage backedsecurity, MBS) 卖给投资者,再拿卖 MBS 的收益来继续放贷,继续打包 MBS。后来觉得还不过瘾,又创造出担保债务凭证 (collateralized debt obligation, CDO) 甚至CDO平方。说白了就是把劣质资产整合在一起,用风险分散做幌子,提出一些精华获得AAA评级继续卖给投资者。所有这些还是在高杠杆的情况下操作的。那个时候 20 倍杠杆不算什么,假设你有 5 元本钱,你玩 20 倍杠杆就是借 95 元来操控 100 元资产。100 元一旦亏 5% 你就亏完所有本钱;100 元一旦赚 5% 你还完 95元还有 10 元,回报率 100%。


银行在金融危机之前的镀金时代,为了赚钱拼命加杠杆 (leveraging) 增大风险,而造成“过风险” (overrisk) 现象,一定要监管 (regulation) 不然会引发系统性风险。银行在金融危机之后的监管时代,为了满足监管要求拼命去杠杆 (deleveraging) 减小风险,而造成“欠风险” (underrisk) 现象,可能要去监管 (deregulation) 不然金融市场会萎靡。


同理,当模型太复杂时通常会造成“过拟合” (overfit) 现象,一定要正规化 (regularization) 降低模型的复杂度 (model complexity) 不然无法使用在新数据上。当模型太简单时通常会造成“欠拟合” (underfit) 现象,需要去正规化 (deregularization) 提高模型的复杂度不然连训练数据都拟合不好。


上贴讲的单变量线性模型几乎是最简单的模型 (常数模型除外,正常人也不会用常数模型做做任何拟合),就是只选一个特征变量,通常会欠拟合数据。为了避免“欠拟合”现象,我们通常两种办法增加变量个数来提高模型复杂度:


  1. 当你找不到其它好的特征变量是,可以已有的特征单变量求平方,立方一直到 p 次方得到所谓的 p 个“特征变量”,此模型称为“单变量多项式模型”。


  2. 当你找得到其它好的特征变量并将它们纳入,此模型称为“多变量一般线性模型”。


方法 1 适用于一些纯数学问题,比如用多项式拟合一个带噪音的正弦函数 y = sin(x) + ε。方法 2 适用于一些实际问题,比如用房屋面积,卧室个数和楼层来拟合房屋价格。方法 1 不适用于上述的实际问题,用房屋面积和它的平方,立方甚至高次方来拟合房屋价格明显没有什么实际含义。方法 2 也可能适用于上述的纯数学问题,因为一维变量就是多维变量的特例。机器学习一般都是处理实际问题,因此都是用方法 2 来增加模型复杂度,能用方法 1 的地方都是把它当个玩具 (toy-like) 玩玩来解释一些基本概念比如过拟合。


切记:增加模型复杂度但是一定要控制火候,千万不要把模型弄得太复杂而过拟合数据。而这个火候就是正规化。火太小模型还是太简单而欠拟合数据,火太大模型又太复杂而过拟合数据,怎么办?


本贴的结构如下,在第二章“前戏王”里,我会介绍单变量多项式模型,多变量一般线性模型,等值图和坐标下降法等基本概念;在第三章“理论皇”里,我会给出两种解决模型过拟合问题,岭回归 (ridge regression) 和套索回归 (LASSO regression),并推导其解析解或数值解;在第四章“实践狼”里,我会讨论两种回归的优劣和选择最佳模型复杂度;第五章是总结和下期预告。


温馨小贴士:本贴数学密度比较大,想泛泛了解的同学直接可跳到总结。



2. 前戏王


了解本贴内容需要掌握的基本知识有:


  • 单变量多项式模型

  • 多变量一般线性模型

  • 等值图

  • 坐标下降法



2.1 单变量多项式模型 (polynomial model)


模型如下


其中

    y 是变量 (纯量)

    h(x) 是单变量多项式函数

    p 是多项式的阶

    x 是自变量 (纯量)

    x, x2 xp 都可看成是一系列特征

    ε 是噪音(纯量)


假如我们用面积面积平方来拟合房子价格,这就是个两次多项式模型。



2.2 多变量一般线性模型 (generic linear model)


模型如下



其中

    y 是变量 (纯量)

    h(x) 是多变量线性函数

    x 是自变量 (向量)

    fj(xj 是特征 j 的函数,f0(x0= 1

    ε 是噪音(纯量)


假如我们用面积卧室个数的平方楼层的对数来拟合房子价格,这就是个三变量一般模型。



2.3 等值线图 (contour plot)


等值线图就是以一组相等数值的图。其主要作用是沿着某一特定的等值线,可以识别具有相同值的所有位置。




上图立体部分是一个二维函数图。你可以想象自己拿一把刀水平的切这个图,刀和函数接触的线投影到底面就是等值线。


下图是椭圆形的立体和平面等值线图,椭圆的方程长得很像单变量线性模型的均值误差函数 (为 4.1 小节做铺垫)



下图是圆形的立体和平面等值线图,圆的方程长得很像岭回归里的惩罚函数 (为 4.1 小节做铺垫)



下图是菱形的立体和平面等值线图,菱形的方程长得很像套索回归里的惩罚函数 (为 4.1 小节做铺垫)




2.4 坐标下降法 (coordinate descent)


坐标下降方法是一种下降方法,但是和梯度下降 (gradient descent) 不同,坐标下降法采用一维搜索,也就是说在每次迭代过程中,下降方向都是平行与坐标轴的。下图展示用梯度下降和坐标下降的找到最小值的路径。




梯度下降法是利用目标函数的梯度来确定搜索方向的,该梯度方向可能不与任何坐标轴平行。而坐标下降法方法是利用当前坐标方向进行搜索,不需要求目标函数的导数,只按照某一坐标方向进行搜索最小值。


通常来说坐标下降法会比梯度下降法慢一些,但是对于一些在某些点没有导数的函数,梯度下降法就用不了了,而坐标下降法还适用。



3. 理论皇


3.1 数学符号


下个给出本章用到的所有符号





3.2 问题类比


上贴已经列出多变量朴素 (naïve) 线性模型的表达式,代价函数,解析解和数值解。朴素指的是模型标记是由所有特征的线性组成,例如


    价格 = 2 × 面积 + 10 × 卧室数 + 5 × 楼层

 

本贴要讨论的式多变量一般 (generic) 线性模型,一般指的是模型标记是由所有转化特征的线性组成,例如

 

    价格 = 3×面积 + 5×sin(卧室数) + 8×ln(楼层)

             = 3×f1(面积) + 5×f2(卧室数) + 8×f3(楼层)

 

其中正弦函数 f(x) = sin(x) 是特征 2 卧室数的转化函数,而对数函数 f(x) = ln(x) 是特征 3 楼层的转化函数,特征 1 面积的转化函数就是 f(x) = x。

 

和上贴朴素模型的类比,我们很快得到一般线性模型的表达式,代价函数,解析解和数值解。类比结果见下表 (就是把 X 换成 F):




一般线性模型的分解部分如下图:




类比上贴有关朴素模型梯度下降的算法 (将所有出现 X 地方换成 F),我们有一般线性模型梯度下降的算法 (在本文也称基本回归,和后文的岭回归和套索回归区分开来) ,如下表所示:


 


3.3 问题描述


下图来自“模型选择和评估”帖子第一章,用六次多项式来拟合房子价格和面积的关系。这个疯狂的模型可以完美拟合训练数据 (蓝点),但是给定测试数据(紫点)预测的价格太过疯狂。此模型是典型的过拟合。

 



从上图看到其多项式模型某些项得绝对值太过于大,而这也是过拟合模型共同特征。为了避免让模型过拟合,最直观的解决方法就是让模型参数绝对值变小,具体来说,就是在原来代价函数 (均值误差函数) 基础上加一个惩罚函数,如下:




均方误差函数的代数形式和矩阵形式:




惩罚函数最常见用到的就是 L1 和 L2 范数函数,其代数形式和矩阵形式为:




均方误差函数惩罚函数相加得到代价函数,其矩阵形式为:




代价函数是想平衡模型拟合训练数据的质量和参数绝对值的大小,调和参数 λ 就是起到这个作用。假如我们叫上贴的回归叫基本回归,那么


  • 当 λ = 0 时,L1 和 L2 正规化回归变成了基本回归,它们的参数就是基本回归的参数。(没有惩罚函数)


  • 当 λ = +∞ 时,L1 和 L2 正规化回归的参数都变成零。(如果不是零那么惩罚函数值无穷大)


  • 当 λ 0 和 +∞ 之间,L1 和 L2 正规化回归的参数在零和基本回归的参数之间。


当 λ 很大时 (极端情况是 λ = +∞),模型过于简单因为很多参数都为零,这时候模型的偏差 (bias) 很大方差 (variance) 很小;当 λ 很大时 (极端情况是 λ = 0),模型过于复杂因为很多参数都不为零,这时候模型的偏差很小方差很大。因此,调和参数可以控制模型复杂度。


当惩罚函数为 L2 范数函数时,L2 正规化回归又叫做岭回归 (ridge regression);当惩罚函数为 L1 范数函数时,L1 正规化回归又叫做最小绝对收缩选择算子回归 (least absolute shrinkage and selection operator regression),中英文名字都太绕口,因此就简称套索回归 (LASSO regression)。



3.4 岭回归 (ridge regression)

 

岭回归的代价函数为




利用矩阵微积分 (xTAx 的偏导数是 (AT+A)x) 可推出梯度为



解析解


为了最小化代价函数,我们只有将梯度设定为 0,因此可解的




其中 I 是单位矩阵,下图更清晰的显示了此解析解的分解部分。




矩阵 FTF + λI 是一个 n+1 乘 n+1 的矩阵 (n 是特征的个数) ,该矩阵不像基本回归用到的矩阵 FTF,它永远可逆 (证明需要用到一些条件数专业术语,超过本帖范围)。此外计算其逆矩阵的复杂度也是 O(n3)。



数值解

 

有了梯度表达式,我们很快可以写出梯度下降法的矩阵形式以及它的算法





将岭回归解析解,数值解和上贴基本回归解析解,数值解相比,我们发现它们之间唯一不同的地方就是下表红色注明的地方。




  • 当 λ = 0 时

    • λI = 0,岭回归的解析解和基本回归的解析解相同。

    • λw = 0,岭回归的数值解和基本回归的数值解相同。


  • 当 λ = +∞ 时

    • FTF + λI 的逆矩阵趋近于零矩阵,因此解析解 w = 0。



3.5 套索回归 (LASSO regression)


套索回归的代价函数为

 



从一维开始分析,其惩罚函数 |w| 在 0 点没有导数,类比到 n 维,其惩罚函数 ||w||1 0 点没有偏导数,因此也没有梯度 (梯度是个 n 维向量,第 j 个元素是函数对第 j 个变量的偏导数)。从而导致套索回归没有解析解,而且也不能够用梯度下降法。我们会选择坐标下降法来求得套索回归的最优解。在此之前让我们从更为简单的基本回归开始,来看看用坐标下降法推导出来的数值解算法长得什么样,然后在类比到套索回归。因为坐标下降法方法只按照某一坐标方向进行搜索最小值,因此我们要把所有写成矩阵形式的表达式回到代数形式。套索回归的代价函数的代数形式为:



基本回归的代价函数是上面公式中红色部分,它的第 j 个偏导数为 (见上贴)



其中




在坐标下降法中设定第 j 个偏导数为 0,只更新 wj = rj / zj 而保持其他 wk≠j 不变。下表总结出基本回归的坐标下降算法:




弄清楚基本回归的坐标下降法后,现在将其推导类比到套索回归,它的第 j 个偏导数为



在坐标下降法中设定j 个偏导数为 0

           



 因此解得模型参数

 



在坐标下降法中设定第 j 个偏导数为 0,只更新 wj 而保持其他 wk≠j 不变。下表总结出套索回归的坐标下降算法 (和基本回归几乎一样,除了 wj 的表达式):




3.6 模型类比 (model analogy)


在学习陌生的东西时,我最喜欢干的事情就是类比。通过自己熟悉的东西,找到它和陌生东西的同异,再类比到陌生的东西上去。通过类比,你最终可以在一个高层次的位置看问题,并发现一些平时难以发现的规律。以本帖为例,基本回归是我们熟悉的东西 (上贴已讲),而岭回归和套索回归是陌生的东西。现在我们来类比它们在坐标下降法下的最优解:




岭回归的坐标下降法下最优解我没有推导 (在看懂基本回归的情况下非常简单),根据上表公式可以一下看出


  • 因为 λ 大于等于 0,因此岭回归的解的绝对值永远小于等于基本回归的解的绝对值。


  • 当 λ 等于 0 时,三种回归的解是一样的,这很合理因为这是没有惩罚函数。


  • 当 λ 比较大时,岭回归的解很小但没有到 0,因为分母很大。但是套索回归的解有很可能为真正的 0,因为范围 [-λ, λ] 太广,而 r 落到里面太容易。


我另外喜欢干的事情就是画图,图永远比公式文字更直观。




上图是在 λ 等于100 时画的,很明显看出


  • 岭回归的解永远小于等于基本回归的解(蓝线比绿线平)。


  • 套索回归的解在 [-100, 100] 都是0 (红线水平部分)。



4. 实践狼


现在我们已经讲完理论部分,本节主要对一些实际的细节问题给出解决方案。


4.1 L1 和 L2


问:为什么套索回归 (L1正规化) 容易使一些参数为零,而岭回归 (L2正规化) 却不容易使一些参数为零?此外哪中回归更好一些?


首先明确一点,就是套索回归和岭回归都可以处理过拟合问题,因为它们都加了一个惩罚函数用来控制模型参数的绝对值大小。


为了用平面图直观解答此问题,我们用单变量线性模型来举例。回顾代价函数是由均方误差函数和惩罚函数加总而得。



椭圆和均方误差函数,圆形和 L2 惩罚函数,以及菱形和 L1 惩罚函数它们的方程表达式类比如下表:




值得注意的是,代价函数等值线方程的确是个椭圆方程 (不是双曲线当 Δ > 0,不是抛物线当 Δ = 0),简单证明如下 (假设只有两个训练数据因此 m = 2):




下面两个动态图 (此处应有掌声) 展示了,当 λ 从零变到正无穷时,岭回归 (第一

张) 和套索回归 (第二张) 的最优参数 w0 和 w1 的变化,仔细看下到底两者有什么相同和不同。



两张动态图的相同点:


  • 开始状态的等值线和那个代表最小值的叉叉相同,这是因为开始状态是 λ = 0 的情况,代价函数里面没有惩罚函数只有均值误差函数。岭回归和套索回归变成了基本回归,它们的最优解就是基本回归的最优解。


  • 结束状态只有那个代表最小值的叉叉相同,都是原点,这是因为结束状态是当 λ 很大的情况,代价函数里面的惩罚函数占绝对统治地位,岭回归和套索回归的最优解都是零。


两张动态图的不同点:


  • 结束状态的等值线不同,这是因为结束状态是当 λ 很大的情况,虽然代价函数里面的惩罚函数占统治地位,但是岭回归和套索回归的惩罚函数不同,岭回归对应的惩罚函数等值线是圆形方程,而套索回归对应的惩罚函数等值线是菱形方程。(注:从图上看,岭回归和套索回归结束状态的等值线不是严格的圆形和菱形,其原因是实际操作中 λ 不可能为正无穷)。


  • 最优解(w0, w1)从起点到终点的路径不同 (非常非常非常重要!)。岭回归的最优解是到达终点前没有碰到任何横轴和纵轴,但是套索回归的最优解在中途碰到纵轴就一直沿着纵轴到达终点。这个发现有两大重要的应用意义:


    • 最优解碰到纵轴 w0 为 0 模型参数为 0 对应的特征被舍弃。


    • 最优解碰到纵轴就一直沿着纵轴到达终点 在很多 λ 值情况 w0 一直为 0 在很多 λ 值情况对应的特征一直被舍弃 套索回归真的在大多情况下可以舍弃特征 (也就是选择没被舍弃的特征)


实际应用说得这么美,好像开头的问题还是没有解决呢?为什么套索回归会这样呢?


当 λ 在零和很大值之间某点中的,岭回归和套索回归的最优解 (下图均值误差函数等线图和惩罚函数等线图的红色交点) 都应该在零和基本回归最优解之间。




直观来讲,菱形 (套索回归) 和每个轴相交的地方都有“角”出现,这些“角“比”非角“更容易和均值函数等线图相碰,因此套索回归的最优解很容易为零;圆形 (岭回归) 无角,它很难和均值函数等线图相碰在轴上,因此岭回归的最优解很不容易为零。


如果所有特征都和标记相关,那么岭回归优于套索回归,因为岭回归永远不会算出值为 0 的参数。如果只有部分特征和标记相关,那么套索回归优于岭回归,因为套索回归会算出值为 0 的参数,这些零参数对应的特征就被舍弃了,而非零参数对应的特征就被选择了。因此套索回归可以用来特征选择。



4.2 截距项


问:正规化也会截距项参数 w0 变得很小,而一般情况下即使 w0 绝对值很大也不能说明模型过拟合了,那还需要正规化 w0 吗?


在实践中,正规化或不正规化截距项参数 w0 的做法都很常见,两种处理方法得到的结果也差不多。通常我看到比较多的做法是:


  • 如果特征有规范化 (normalization),就是上贴提到的对特征变量 j 减去均值除以方差得到一个单位特征变量 j,正规化 w0

  • 如果特征没有规范化,不要正规化 w0


下表给出正规化或不正规化截距项参数 w0 的代价函数和解析解




其中 I0 是对角线第一个值为 0 的一个单位矩阵,下图更清晰的显示了在不正规化 w0 时的解析解的分解部分。




不正规化 w0 时的梯度下降法也有一点不一样,具体算法如下:





4.3 最佳模型复杂度


问:模型不能太简单也不能太复杂,给定一个 λ 可以解出最优参数,但是什么样的 λ 是最佳的?


在“模型选择和评估”帖子第四章中,已经给出了答案。


如果数据量够大的话,选择 λ 流程和图解如下:

 

  1. 按 50%, 25% 和 25% 划分训练集,验证集和测试集。

  2. 事先定好需要的 λ 集 {0, 1, 1e2, 1e3, 1e4, 1e5} 等等。

  3. 对于每一个 λ ,用训练集的数据拟合出模型参数。

  4. 用此参数和验证集算出验证误差。选一个最小验证误差对应的 λ。




 如果数据量不大的话,选择 λ 流程和图解如下:

 

  1. 将整个数据集大概平均分成 5 份。

  2. 事先定好需要的 λ 集 {0, 1, 1e2, 1e3, 1e4, 1e5} 等等。

  3. 对于每一个 λ,从第一份到最后一份,将选中那份数据集当作验证集,剩余的四份一起当作训练集。

    1. 用训练集的数据拟合出模型参数。

    2. 用此参数和验证集算出验证误差。

  4. 求出 5 个验证误差的均值作为交叉验证误差。

  5. 选一个最小交叉验证误差对应的 λ。





5. 总结和下帖预告

 

监督学习问题无非就是在正规化参数的同时最小化误差 (minimize error while regularizing parameters),最小化误差是为了让模型拟合好训练数据,而正规化参数是防止模型过拟合训练数据。言简意赅!

 

因为参数太多,会导致模型复杂度上升,容易过拟合,也就是训练误差会很小。但训练误差小并不是最终目标,目标是希望模型的测试误差小,也就是能准确的预测新的样本。因此我们需要保证模型“简单”的基础上最小化训练误差,这样得到的参数才具有好的泛化 (generalization) 性能,而模型“简单”就是通过正规化代价函数来实现的。

 

岭回归和套索回归都可以破“过拟合”问题。套索回归会趋向于产生少量的特征,而其他特征对应的参数都是 0,而岭回归会选择更多的特征,这些特征对应的参数都会接近于 0。套索回归在特征选择时候非常有用,而岭回归就只是一种正规化而已。怎么选合适的模型的复杂度?用交叉验证法!

 

我知道本贴数学公式太多,不感兴趣的可以不看,看懂本节前 3 段就可以了。下一贴充满着真实数据,实际问题和编程代码的一贴。学而不编则罔,编而不学则殆,希望下一贴用代码来复习前两帖的内容,包括,单变量线性回归,多变量线性回归,单变量多项式回归,岭回归和套索回归 (特征选择的应用)。我也是作死,又给自己这么tough的一周。。。Stay Tuned!



您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存