一般多重线性回归,使用p个预测变量和一个响应变量拟合模型,形式如下:

Y = β 0 + β 1 X 1 + β 2 X 2 + … + β p X p + ε {β_0 + β_1X_1 + β_2X_2 + … + β_pX_p + ε} β0​+β1​X1​+β2​X2​+…+βp​Xp​+ε

参数解释如下:

  • Y: 响应变量
  • X j {X_j} Xj​: 第j个预测变量
  • β j {β_j} βj​: 在保持所有其他预测不变的情况下, X j {X_j} Xj​增加一个单位对Y的平均影响
  • ε: 误差项

用最小二乘法选择 β 0 、 β 1 、 B 2 、 … 、 β p {β_0、β_1、B_2、…、β_p} β0​、β1​、B2​、…、βp​的值,以最小化残差平方和(RSS):

RSS = Σ ( y i – y ^ i ) 2 {Σ(y_i – ŷ_i)^2} Σ(yi​–y^​i​)2

解释参数如下:

  • Σ: 求和符号
  • y i {y_i} yi​: 第i个观测记录的响应值
  • y ^ i {ŷ_i} y^​i​: 使用多重线性回归模型基于第i个观测记录的预测值

但是当预测变量高度相关,则会产生多重共线问题,可能导致模型系数估计不可靠、方差较高。

在不删除预测变量的情况下,解决这类问题的一种方法是使用岭回归,它试图使得下面误差最小:

RSS + λ Σ β j 2 {λΣβ_j^2} λΣβj2​

当j范围从1到p,并且λ ≥ 0; 其中第二项被称为收缩惩罚。当λ = 0时惩罚项没有影响,岭回归与最小二乘法效果一样。然而当λ 变大,收缩惩罚影响加大和岭回归系数估计接近零,使得模型中影响最小的预测变量会以最快的速度趋近于零。

示例

首先导入执行岭回归需要的包:

import pandas as pd
from numpy import arange
from sklearn.linear_model import Ridge
from sklearn.linear_model import RidgeCV
from sklearn.model_selection import RepeatedKFold

加载数据

我们示例数据mtcars,包括33个不同品牌汽车信息,我们使用下面预测变量,hp作为响应变量:

  • mpg
  • wt
  • drat
  • qsec

下面代码加载数据:


# read in data
data_full = pd.read_csv("data/mtcars.csv")# select subset of data
data = data_full[["mpg", "wt", "drat", "qsec", "hp"]]# view first six rows of data
data[0:6]

拟合模型

下面使用sklearn包中 RidgeCV() 拟合岭回归模型,并使用 RepeatedKFold() 执行k折交叉验证,发现最佳惩罚项中的λ值。

示例中使用k=10,重复交叉验证3次。RidgeCV() 中定义λ值范围:0~1,每次增加0.01:

# define predictor and response variables
X = data[["mpg", "wt", "drat", "qsec"]]
y = data["hp"]# define cross-validation method to evaluate model
cv = RepeatedKFold(n_splits=10, n_repeats=3, random_state=1)# define model
model = RidgeCV(alphas=arange(0, 1, 0.01), cv=cv, scoring='neg_mean_absolute_error')# fit model
model.fit(X, y)# display lambda that produced the lowest test MSE
print(model.alpha_)## 输出0.99

测试MSE的最小化值是0.99

使用模型进行预测

最后使用上面的模型进行预测,预测数据如下:

  • mpg: 24
  • wt: 2.5
  • drat: 3.5
  • qsec: 18.5

下面代码使用岭回归模型预测hp的值:

# define new observation
new = [24, 2.5, 3.5, 18.5]# predict hp value using ridge regression model
model.predict([new])# array([104.16398018])

根据输入值,模型预测这辆车的HP值为104.16398018。

Python 实现Ridge Regression教程相关推荐

  1. [机器学习-5]岭回归及python实现(Ridge Regression)

    [机器学习-5]岭回归[L2正则化]及python实现(Ridge Regression)[L2] 前言 题目 岭回归(Ridge Regression) k-fold validation skle ...

  2. Python 数据科学入门教程:机器学习:回归

    Python 数据科学入门教程:机器学习:回归 原文:Regression - Intro and Data 译者:飞龙 协议:CC BY-NC-SA 4.0 引言和数据 欢迎阅读 Python 机器 ...

  3. 脊回归(Ridge Regression)

    脊回归(Ridge Regression) 标签:监督学习 @ author : duanxxnj@163.com @ time : 2016-06-19 在<线性回归(Linear Regre ...

  4. 机器学习算法系列(四)- 岭回归算法(Ridge Regression Algorithm)

    阅读本文需要的背景知识点:标准线性回归算法.一丢丢编程知识 一.引言   前面一节我们学习了机器学习算法系列(三)- 标准线性回归算法(Standard Linear Regression Algor ...

  5. 机器学习笔记——岭回归(Ridge Regression)

    本内容整理自coursera,欢迎转载交流. (https://www.coursera.org/specializations/machine-learning) 1.一般回归遇到的问题 一般的回归 ...

  6. Blender中的Python脚本介绍学习教程

    Blender中的Python脚本介绍学习教程 MP4 |视频:h264,1280×720 |音频:AAC,48000 Hz 语言:英语+中英文字幕(根据原英文字幕机译更准确)|大小解压后:1.63 ...

  7. 分享一个python cookbook的在线教程地址

    分享一个python cookbook的在线教程地址: http://python3-cookbook.readthedocs.org/zh_CN/latest/ 翻译者:熊能 转载于:https:/ ...

  8. R语言使用caret包构建岭回归模型(Ridge Regression )构建回归模型、通过method参数指定算法名称、通过trainControl函数控制训练过程

    R语言使用caret包构建岭回归模型(Ridge Regression )构建回归模型.通过method参数指定算法名称.通过trainControl函数控制训练过程 目录

  9. R语言glmnet拟合岭回归模型实战:岭回归模型的模型系数(ridge regression coefficients)及可视化、岭回归模型分类评估计算(混淆矩阵、accuracy、Deviance)

    R语言glmnet拟合岭回归模型(ridge regression)实战:岭回归模型的模型系数(ridge regression coefficients)及可视化.岭回归模型分类评估计算(混淆矩阵. ...

最新文章

  1. css中的px、em、rem 详解
  2. 云计算之路-阿里云上:数据库连接数过万的真相,从阿里云RDS到微软.NET Core
  3. 流批一体生产应用!Bigo 实时计算平台建设实践
  4. 深度学习术语_您应该意识到这些(通用)深度学习术语和术语
  5. python 死循环程序能占满cpu吗_运行tensorflow python程序,限制对GPU和CPU的占用操作...
  6. thinkcmf 横向排列数据_利用python进行数据分析之数据清洗规整
  7. python 开发板 播放音乐_MicroPython开发板:TPYBoard v102 播放音乐实例
  8. 递归(特别重要,小计算用)
  9. mysql_connect和mysql_pconnect区别
  10. 执行jar包中的某个类
  11. 拓展软文写作主题角度
  12. 函数式编程-Lodash库学习
  13. 在 Beagleboard-x15 上配置 spi 和 GPIO
  14. 手机计算机藏应用,手机“计算器”隐藏功能,一键把隐私照片加密
  15. 解决@Valid List 无法校验的问题
  16. 【ybt金牌导航8-3-3】【luogu P4593】分数计算 / 教科书般的亵渎(数学)(拉格朗日插值)
  17. 小程序创业,有哪些行业方向可以选?
  18. YII Framework学习教程-用YIIC快速创建YII应用之二-2011-11-11
  19. 桌面学习单词的小软件
  20. onethink入门笔记(一)

热门文章

  1. cufflinks一行代码搞定plotly
  2. Java多文件压缩下载解决方案
  3. 【多目标进化优化】 MOEA 测试函数
  4. 诺丁汉大学计算机科学世界排名,2020年诺丁汉大学计算机科学专业研究生申请条件及世界排名|学费介绍...
  5. Oracle数据库的表空间(一)
  6. 5-1链队入队出队操作
  7. 【码云周刊第 10 期】放码过来,四个男人的带头冲锋!!(内附 PPT 下载链接)...
  8. 2015届秋季面试感悟
  9. 关于socket error 10054
  10. QChart之QBarSeries绘制条形图