线性回归、岭回归、LASSO回归与弹性网络回归

还是那句话,只会调用函数是没有办法做统计的,研究理论才是最重要的。

Running regression in Python and R doesn’t take more than 3-4 lines of code. All you need to do is, pass the variables, run the script and get the predicted values. And congratulations! You’ve run your first machine learning algorithm.

在Analytics vidhya社区发现一篇关于线性回归模型很详细的介绍,我根据自己的理解来整理一下内容要点。

原文链接:A comprehensive beginners guide for Linear, Ridge and Lasso Regression in Python and R

1.先来说最简单的一般线性回归,它的数学模型如下:

其中Y表示因变量,Xn表示n个自变量,θn表示n个系数。

线性回归的最终目的,是将模型预测值和真实值之间的差距降到最低,也就是求差值平方和(MSE)的最小值:


在实际计算中一般用损失函数(cost function)代替MSE:

2.求解损失函数最小值的方法一般有两种:最小二乘法和梯度下降,这篇博文只简单提了一下梯度下降,这里我把最小二乘法也列举一下:

推导过程就不详细展开了,总之最小二乘法可以得到计算最佳系数矩阵的标准方程:

而梯度下降则是对每一个自变量逐个求偏导,寻找损失函数下降最快的方法,这种方法在自变量较多的时候比最小二乘法更有效率。

3.评价一个线性模型优劣的标准,总结下来主要有3个指标,第一是损失函数的值,也就是误差平方和MSE,MSE越小,模型的拟合度越好,但也不是绝对的,MSE过小可能是过拟合的结果。第二是方差解释率(R-square),这个指标和PCA、PLS中的累积贡献率很相似,都是代表模型对原有数据方差的解释程度,也就是看有多少原有的方差在模型中得以体现,R-square的计算方法如下:

R-square越接近1,表示模型的拟合度越好。第三是模型对于测试数据集的预测准确率,这个没什么好说的,任何统计模型都以这个标准来判断好坏。

值得一提的是,在线性回归中,一般来说,纳入模型的自变量越多,对于数据的拟合程度就会越好。但是自变量增多会造成模型的复杂度升高,过拟合的风险就会增加,因此R-square提供了针对自变量个数的校正值:


其中R2代表原始的R-square值,p代表自变量的个数,N代表样本数。

4.线性回归模型对于数据的其中一个要求是自变量的总体方差要一致,否则就是存在异方差性(heteroskedasticity),假设X和Y的图像是这样的:

散点图整体看起来想一个漏斗(funnel),就提示数据的方差不齐,这种数据呈现的就是非线性关系,一般线性回归是无法拟合的,此时就要用多项式回归,这篇就先略过了。异方差性可以用white test来检测。关于回归分析必须满足的假设前提,之后再单独总结。

5.有必要梳理一下偏向性(bias)和方差(variance)的区别

上图已经解释地非常清楚了,简单来说偏向性就是偏离实际目标的程度,方差是数据内部的离散程度。那么在实际应用中如何平衡bias和variance?,看下图:

从上图可以看出,随着模型复杂度的加深,偏向性是逐渐降低的,而方差是逐渐升高的,因此在某个复杂度之下,两者会同时到达最小值,此时模型的总体误差total error也是最小的。但是,这个时候也是过拟合风险最高的时候,理想情况是我们在保持偏向性很低的情况下,让数据的方差得到一定程度的保持。要达到这一目的,要么主动降低模型的复杂度,也就是根据经验舍弃一些自变量,要么就要考虑正则化(Regularization)

6.岭回归(Ridge regression)和LASSO回归就是正则化的产物。它们都是通过在损失函数中增加一个惩罚项来降低过拟合风险,并且降低自变量间的多重共线性带来的信息冗余。

岭回归的损失函数如下:

LASSO回归的损失函数如下:

可以看到岭回归的惩罚项是θ的平方和,LASSO的惩罚项是θ的绝对值和。进行岭回归和LASSO回归分析的关键是找出合适的λ超参数,主要方法就是设定一个范围然后穷举,根据损失函数的值判断最佳的λ值。

关于岭回归和LASSO的选择,首先考虑的是自变量的个数,假设我们有一个数据集有10000个自变量,如果使用岭回归,最后得到的模型会非常复杂(10000个X),且系数都很小(接近0)。如果使用LASSO回归,它会根据自变量之间的共线性,舍弃其中一些自变量(将其系数变成0),这样可以降低复杂度,但是会损失一部分信息,导致模型准确率下降。那么如何取得平衡呢?,此时可以试试弹性网络回归(Elastic Net Regression)。

弹性网络回归的损失函数就是岭回归和LASSO的组合:

弹性网络回归的方法是先将有共线性的自变量分成一组,如果其中有一个自变量与因变量有强相关关系,那么就将这一组所有自变量都输入线性模型。

7.上述岭回归和LASSO都是不同正则化形式下的线性回归,正则化的一般形式如下:

当p=1的时候,就是LASSO,p=2的时候就是岭回归。

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342