【scikit-learn基础】--『监督学习』之 岭回归
岭回归(Ridge Regression)是一种用于处理共线性数据的线性回归改进方法。
和上一篇用基于最小二乘法的线性回归相比,它通过放弃最小二乘的无偏性,
以损失部分信息、降低精度为代价来获得更实际和可靠性更强的回归系数。
1. 概述
岭回归的模型对于存在大量相关特征(这些特征之间存在很高的相关性)的数据时效果远好于基于最小二乘法的线性模型。
原因就是它通过给系数的大小增加一个约束条件(即L2正则化项),来防止模型过度拟合训练数据。
损失函数一般定义为:\(L(w) = (y-wX)^2+\lambda\parallel w\parallel_2\)
其中 \(\lambda\parallel w\parallel_2 = \lambda\sum_{i=1}^{n}w_i^2\),也就是 L2正则化项。
模型训练的过程就是寻找让损失函数\(L(w)\)最小的参数\(w\)。
也就等价于:\(\begin{align}
& arg\ min(y-wX)^2 \\
& s.t. \sum w_{ij}^2 < s
\end{align}\)
这两个公式表示,在满足约束条件 \(\sum w_{ij}^2 < s\)的情况下,计算 \((y-wX)^2\)的最小值。
2. 创建样本数据
岭回归适用于特征之间有很高关联性的数据集。
所以用scikit-learn中的加州住房数据集,这个数据集有8个房屋售价相关的属性,属性之间关联性高。
数据集的文件获取可以参考:TODO
从上面的文章中下载数据集(是一个zip压缩文件),
如下例所示,下载之后在 D:\share\data 中解压,就可以加载了。
import os
from sklearn.datasets import fetch_california_housing
home_dir = "D:\share\data"
data = fetch_california_housing(data_home=os.path.join(home_dir, "cal_housing"))
X = data["data"]
y = data["target"]
大约有2万多条数据。
3. 模型训练
数据加载之后,首先划分训练集和测试集。
from sklearn.model_selection import train_test_split
# 分割训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.1)
然后用岭回归模型训练数据:
from sklearn.linear_model import Ridge
# 初始化岭回归线性模型
reg = Ridge()
# 训练模型
reg.fit(X_train, y_train)
这里,用的Ridge()模型的默认参数,它的一些主要参数如下(训练模型时可根据情况调整参数):
- alpha:控制正则化强度的常量,也就是上面公式中的 \(\lambda\),默认值
1,设置为0时,就是最小二乘法 - fit_intercept:是否拟合此模型的截距,默认
True - copy_X:是否复制
X(也就是训练数据),默认True,设置为False的话,有可能会改变训练数据 - tol:算法迭代时,收敛的精度上限
- solver:迭代时使用的求解器,包含** {auto, svd, cholesky, lsqr, sparse_cg, sag, saga, lbfgs}** 等算法,默认
auto(根据数据类型自动选择求解器)
最后,用测试数据来验证训练后模型的性能。
y_pred = reg.predict(X_test)
mse = metrics.mean_squared_error(y_test, y_pred)
r2 = metrics.r2_score(y_test, y_pred)
m_error = metrics.median_absolute_error(y_test, y_pred)
print("均方误差:{}".format(mse))
print("复相关系数:{}".format(r2))
print("中位数绝对误差:{}".format(m_error))
# 运行结果
均方误差:0.0029948538129997903
复相关系数:0.9987534427417275
中位数绝对误差:0.049467455621301726
从结果来看,模型的性能还不错,均方误差和中位数绝对误差都比较小,而复相关系数高,说明在测试数据中,预测的值和实际的值比较接近。
4. 总结
总之,岭回归在很多场景下都有应用,例如多元线性回归、时间序列预测、特征选择等。
它的主要优点是可以处理共线性数据,并且在加入噪声的情况下会有更稳定的性能。
然而,由于其对数据的缩放敏感,岭回归的一个主要局限性是它可能对数据的尺度非常敏感。
此外,岭回归正则化参数的选择通常需要一些经验或者实验来确定,这也增加了其应用的复杂性。
PS.
共线性是指特征之间存在高度相关性,这可能导致线性回归模型的不稳定。
【scikit-learn基础】--『监督学习』之 岭回归的更多相关文章
- Python基础『一』
内置数据类型 数据名称 例子 数字: Bool,Complex,Float,Integer True/False; z=a+bj; 1.23; 123 字符串: String '123456' 元组: ...
- Python基础『二』
目录 语句,表达式 赋值语句 打印语句 分支语句 循环语句 函数 函数的作用 函数的三要素 函数定义 DEF语句 RETURN语句 函数调用 作用域 闭包 递归函数 匿名函数 迭代 语句,表达式 赋值 ...
- 『cs231n』计算机视觉基础
线性分类器损失函数明细: 『cs231n』线性分类器损失函数 最优化Optimiz部分代码: 1.随机搜索 bestloss = float('inf') # 无穷大 for num in range ...
- Scikit Learn: 在python中机器学习
转自:http://my.oschina.net/u/175377/blog/84420#OSC_h2_23 Scikit Learn: 在python中机器学习 Warning 警告:有些没能理解的 ...
- [原创] 【2014.12.02更新网盘链接】基于EasySysprep4.1的 Windows 7 x86/x64 『视频』封装
[原创] [2014.12.02更新网盘链接]基于EasySysprep4.1的 Windows 7 x86/x64 『视频』封装 joinlidong 发表于 2014-11-29 14:25:50 ...
- (原创)(三)机器学习笔记之Scikit Learn的线性回归模型初探
一.Scikit Learn中使用estimator三部曲 1. 构造estimator 2. 训练模型:fit 3. 利用模型进行预测:predict 二.模型评价 模型训练好后,度量模型拟合效果的 ...
- 『TensorFlow』专题汇总
TensorFlow:官方文档 TensorFlow:项目地址 本篇列出文章对于全零新手不太合适,可以尝试TensorFlow入门系列博客,搭配其他资料进行学习. Keras使用tf.Session训 ...
- 『TensorFlow』批处理类
『教程』Batch Normalization 层介绍 基础知识 下面有莫凡的对于批处理的解释: fc_mean,fc_var = tf.nn.moments( Wx_plus_b, axes=[0] ...
- 『TensorFlow』梯度优化相关
tf.trainable_variables可以得到整个模型中所有trainable=True的Variable,也是自由处理梯度的基础 基础梯度操作方法: tf.gradients 用来计算导数.该 ...
- 『TensorFlow』模型保存和载入方法汇总
『TensorFlow』第七弹_保存&载入会话_霸王回马 一.TensorFlow常规模型加载方法 保存模型 tf.train.Saver()类,.save(sess, ckpt文件目录)方法 ...
随机推荐
- QA|20221001|SecureCRT自动断开怎么办?
Q:SecureCRT自动断开怎么办? A:如下设置
- tomcat远程部署
使用maven的插件对tomcat进行远程部署,大大降低了部署步骤,对于远程部署调试也有一定的帮助 要让maven对够进行远程部署,我们需要对tomcat进行配置,主要是配置tomcat-user.x ...
- 《Python魔法大冒险》004 第一个魔法程序
在图书馆的一个安静的角落,魔法师和小鱼坐在一张巨大的桌子前.桌子上摆放着那台神秘的笔记本电脑. 魔法师: 小鱼,你已经学会了如何安装魔法解释器和代码编辑器.是时候开始编写你的第一个Python魔法程序 ...
- 全局安装oh-my-zsh保姆教程
我的系统是CentOS 7.6,按流程走完后可以实现系统内所有用户都默认使用zsh且插件配置共享省去重复编写配置或软连接的烦恼 1 安装git yum -y install git 2 安装zsh y ...
- Chrome 手机端网页如何使用开发者模式
chrome 手机端网页如何调试 在Chrome手机端,你可以使用Chrome开发者工具来调试网页.下面是一些步骤: 首先,确保你的手机已经开启开发者模式.打开USB调试功能或可以通过USB连接或无线 ...
- Burp Suite抓包工具配置代理手机抓取数据包
工作中很多手机上的问题因为环境差异导致无法在pc设备上完整的模拟真实物理手机,因此需要方法能抓取到手机设备上所有数据包发送详情.发现了这个好用的数据包抓取工具Burp Suite. 一.配置流程: 1 ...
- ElasticSearch系列——文档操作
文章目录 Elasticsearch的增删查改(CURD) 一 CURD之Create 二 CURD之Update 三 CURD之Delete 四 CURD之Retrieve Elasticsearc ...
- 前端三件套系例之CSS——响应式布局
文章目录 1.什么是响应式设计 1-1 定义 1-2 响应式设计的优势 2.屏幕的相关概念 3.viewport 视口 3-1 什么是viewport 3-2 设置viewport 4.媒体查询 @m ...
- 前端框架——Vue3
文章目录 Vue3快速上手 1.Vue3简介 2.Vue3带来了什么 1.性能的提升 2.源码的升级 3.拥抱TypeScript 4.新的特性 一.创建Vue3.0工程 1.使用 vue-cli 创 ...
- 快速添加string value Refactor->android->Extract Android String 或按Ctrl+1 出现列表框选择Extract Android String 来进行String国际化
快速添加string value Refactor->android->Extract Android String或按Ctrl+1 出现列表框选择Extract Android Stri ...