ElasticNet回归的python实现及与岭回归、lasso的效果比较

  1. ElasticNet回归与岭回归、Lasso回归
    ElasticNet回归也叫弹性网络回归,是岭回归和Lasso回归的组合,而说起Lasso回归和岭回归,就不得不说起回归的正则化。正则化是用于解决回归里的过拟合问题,即我们的算法过度拟合了数据,导致算法的泛化能力不足,在新的数据集中预测的效果很差。如下图的蓝色曲线所示,它拟合了训练数据的所有点,但是一旦换了新的训练数据,其效果就可能很差,这就是过拟合问题。


    image.png

    正则化就是解决过拟合问题的一种方法,它采用的是在原有模型中加入一个正则化项或惩罚项,比如数据的平方项或绝对值项,从而影响每次训练的损失函数,使得在训练数据上的偏差较大,在未知数据上的方差较小,从而避免过拟合问题。其效果如上图的红色曲线所示。

    具体来说,岭回归就是在损失函数中加入了平方和的正则化方法(l2正则),即:
    image.png
    Lasso回归就是在损失函数中加入了绝对值和的正则化方法(l1正则),即:
    image.png
    而ElasticNet回归则是融合了两种正则方法,即:
    image.png
  2. ElasticNet回归的Python实现
    ElasticNet回归在Python中有sklearn.linear_model.ElasticNetCV和sklearn.linear_model.ElasticNet两个函数可供选择,直接可以调用函数,以sklearn.linear_model.ElasticNet为例,我们采用Python自带的iris数据库来进行训练与效果评价。
#导入基本程序包
import pandas  as pd
import numpy  as np
from sklearn.datasets import load_iris
from sklearn import linear_model

#导入IRIS数据集 
iris = load_iris() 
 #特征矩阵 
X=iris.data 
 #目标向量 
y=iris.target
from sklearn.cross_validation import train_test_split #导入数据划分包
#以20%的数据构建测试样本,剩余作为训练样本
X_train,X_test,y_train,y_test=train_test_split(X,y,test_size=0.20,random_state =1)
elastic= linear_model.ElasticNet(alpha=0.1,l1_ratio=0.5)  # 设置lambda值,l1_ratio值
elastic.fit(X_train,y_train)  #使用训练数据进行参数求解
y_hat2 = elastic.predict(X_test)  #对测试集的预测
print ("RMSE:", np.sqrt(metrics.mean_squared_error(y_test, y_hat2)))  #计算RMSE

得到结果为RMSE: 0.250402645005019
这里需要注意的是,ElasticNet最基本的参数是alpha、l1_ratio,alpha其正则化选项中的λ,l1_ratio则是对应α。这里的random_state就是为了保证程序每次运行都分割一样的训练集和测试集。
3、ElasticNet回归与岭回归、lasso的效果比较
我们将ElasticNet回归得到的RMSE评价效果与岭回归、lasso进行比较,如下:

ridge= linear_model.Ridge(alpha=0.1)  # 设置lambda值
ridge.fit(X_train,y_train)  #使用训练数据进行参数求解
y_hat = ridge.predict(X_test)  #对测试集的预测
from sklearn import metrics  #导入metrics评价模块
print ("RMSE:", np.sqrt(metrics.mean_squared_error(y_test, y_hat)))  #计算RMSE
lasso= linear_model.Lasso(alpha=0.1)  # 设置lambda值
lasso.fit(X_train,y_train)  #使用训练数据进行参数求解
y_hat1 = lasso.predict(X_test)  #对测试集的预测
print ("RMSE:", np.sqrt(metrics.mean_squared_error(y_test, y_hat1)))  #计算RMSE

得到岭回归的RMSE: 0.24949141419802712;得到Lasso回归的RMSE: 0.25558013168847055
这是我们看到,在相同的lambda值下,ElasticNet回归的RMSE介于岭回归、lasso之间,即比Lasso回归的效果好,比岭回归的效果差。
但是我们可以调整ElasticNet回归的l1_ratio值,此时ElasticNet回归会在l1正则、l2正则有不同的倾斜,因而得到不同的结果:

elastic1= linear_model.ElasticNet(alpha=0.1,l1_ratio=0.4)  # 设置lambda值,l1_ratio值
elastic1.fit(X_train,y_train)  #使用训练数据进行参数求解
y_hat3 = elastic1.predict(X_test)  #对测试集的预测
print ("RMSE:", np.sqrt(metrics.mean_squared_error(y_test, y_hat3)))  #计算RMSE

如上,我们设置l1_ratio=0.4,最终得到的RMSE: 0.24517143123222396,小于岭回归和Lasso,效果较好。

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

推荐阅读更多精彩内容

  • 番外 依然用手机写的。 所以笔记部分就没有写。 最近写的内容水分有点大,相应的阅读量也挺低的。 不过,今天决定好好...
    姜辣素阅读 250评论 0 0
  • 我没有什么好写的。一直以来我都在努力地表达自己,我希望我的表达是有趣的,但事实却是现在的我已经无法表达任何东西。 ...
    Aprilif阅读 411评论 4 8
  • 儿时听雨,听的是音韵。 小雨时刻,滴落屋檐,滑入盆中,叮~ 大人吆喝,小孩追逐。 雨再大些,敲打屋檐,落入盆里,咚...
    木旸阅读 619评论 4 8