机器学习 | Scikit Learn中的普通最小二乘法和岭回归

在统计建模中,普通最小二乘法(OLS)和岭回归是两种广泛使用的线性回归分析技术。OLS是一种传统的方法,它通过最小化预测值和实际值之间的平方误差之和来找到数据的最佳拟合线。然而,OLS可以遭受高方差和过拟合时,预测变量的数量是大的。为了解决这个问题,岭回归引入了一个正则化项,将系数缩小到零,这可以导致具有较低方差的更好模型。

相关概念:

  1. 普通最小二乘法(OLS):普通最小二乘法(OLS)是一种用于计算线性回归模型参数的技术。目标是找到最佳拟合线,使观测数据点与线性模型的预期值之间的残差平方和最小化。
  2. 岭回归:岭回归是线性回归中用于解决过拟合问题的一种技术。它通过向损失函数添加正则化项来实现这一点,这将系数缩小到零。这降低了模型的方差,并可以提高其预测性能。
  3. 正则化:正则化是一种用于防止机器学习模型中过拟合的技术。它通过向损失函数添加惩罚项来实现这一点,这阻止了模型拟合数据中的噪声。正则化可以通过L1正则化(Lasso),L2正则化(Ridge)或弹性网络等方法来实现,具体取决于实际问题。
  4. 均方误差(MSE):MSE是用于评估回归模型性能的指标。它测量预测值与实际值之间的平方差的平均值。较低的MSE表明模型和数据之间的拟合更好。
  5. R-Squared:R-Squared是用于评估回归模型拟合优度的度量。它测量因变量中由自变量解释的方差的比例。R-Squared的范围为0到1,值越大表示模型与数据之间的拟合越好。

示例

import numpy as np
import matplotlib.pyplot as plt
from sklearn.preprocessing import PolynomialFeatures
from sklearn.linear_model import LinearRegression, Ridge
from sklearn.metrics import mean_squared_error# Generate a synthetic dataset with a non-linear relationship
np.random.seed(42)
X = np.linspace(0, 10, 50)
y = np.sin(X) + np.random.normal(0, 0.5, 50)# Fit OLS and Ridge Regression models with polynomial features
poly = PolynomialFeatures(degree=4)
X_poly = poly.fit_transform(X.reshape(-1, 1))
ols = LinearRegression().fit(X_poly, y)
ridge = Ridge(alpha=1).fit(X_poly, y)# Predict the output for the test data points
X_test = np.linspace(-2, 12, 100).reshape(-1, 1)
X_test_poly = poly.transform(X_test)
ols_pred = ols.predict(X_test_poly)
ridge_pred = ridge.predict(X_test_poly)# Compute the mean squared error on the test dataset
ols_mse = mean_squared_error(y_true=y, y_pred=ols.predict(X_poly))
ridge_mse = mean_squared_error(y_true=y, y_pred=ridge.predict(X_poly))# Plot the data and the regression lines for OLS
plt.scatter(X, y, color='blue', label='Data')
plt.plot(X_test, ols_pred, color='red', label=f'OLS (MSE={ols_mse:.2f})')
plt.legend()
plt.title('Ordinary Least Squares with Polynomial Features')
plt.show()# Plot the data and the regression lines for Ridge Regression
plt.scatter(X, y, color='blue', label='Data')
plt.plot(X_test, ridge_pred, color='green', label=f'Ridge (MSE={ridge_mse:.2f})')
plt.legend()
plt.title('Ridge Regression with Polynomial Features')
plt.show()

在这里插入图片描述
在这里插入图片描述

普通最小二乘与岭回归

假设我们有一个数据集,包含一个响应变量Y和一个预测变量X,其中有n个预测变量,如x1,x2,x3,…为了根据预测因子X预测Y,我们需要构建一个线性回归模型。在这种情况下,我们将比较岭回归和最小二乘(OLS)方法。

普通最小二乘法(OLS):OLS的目标是最小化残差平方和,并找到预测因子的最佳拟合系数。OLS估计量由下式给出:

在这里插入图片描述

岭回归:岭回归将一个称为正则化参数的惩罚项添加到残差平方和中,以控制系数的大小。岭估计量由下式给出:

在这里插入图片描述
这里,λ(lambda)是正则化参数,I是单位矩阵。

现在,让我们考虑预测变量的方差对使用OLS和岭回归获得的系数的影响。

假设x1的方差显著大于x2的方差。换句话说,与x2相比,x1具有更宽的值范围。

在OLS中,使用(X^T * X)的逆来估计系数,因此如果一个预测器具有较大的方差,则其将对估计的系数具有较大的影响。因此,与x2的系数相比,x1的系数将具有更高的方差。

在岭回归中,惩罚项λ乘以单位矩阵,这有助于将系数缩小到零。因此,岭回归减少了具有高方差的预测变量的影响。因此,即使x1具有更高的方差,x1和x2的岭系数也将具有相似的方差。

总之,当预测变量之间的方差存在差异时,OLS倾向于为与具有较高方差的预测变量相对应的系数提供给予较高的方差,而岭回归通过将系数之间的方差差缩小到零来减小它们。

注意:这里提供的示例假设了一个简单的场景来演示OLS和岭回归之间的方差差异。在实践中,OLS和岭回归之间的选择取决于各种因素,如数据特征,多重共线性的存在,以及偏差和方差之间的理想权衡。

代码示例

下面的代码生成了一个包含10个特征和50个样本的合成数据集。我们将数据分为训练集和测试集,并将OLS和岭回归模型拟合到训练数据中。然后,我们在测试数据集上计算两个模型的均方误差,并绘制两个模型的系数以可视化方差的差异。

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression, Ridge
from sklearn.metrics import mean_squared_error# Generate a synthetic dataset
np.random.seed(23)
X = np.random.normal(size=(50, 10))
y = X.dot(np.random.normal(size=10)) + np.random.random(size=50)# Split the data into training and testing sets
X_train, X_test, y_train, y_test = X[:40], X[40:], y[:40], y[40:]# Fit OLS and Ridge Regression models to the training data
ols = LinearRegression().fit(X_train, y_train)
ridge = Ridge(alpha=1.2).fit(X_train, y_train)# Compute the mean squared error on the test dataset
ols_mse = mean_squared_error(y_true=y_test, y_pred=ols.predict(X_test))
ridge_mse = mean_squared_error(y_true=y_test, y_pred=ridge.predict(X_test))# Print the mean squared error of the two models
print(f"OLS MSE: {ols_mse:.2f}")
print(f"Ridge MSE: {ridge_mse:.2f}")# Plot the coefficients of the two models
plt.figure(figsize=(10, 5))
plt.bar(range(X.shape[1]), ols.coef_, color='blue', label='OLS')
plt.bar(range(X.shape[1]), ridge.coef_, color='green', label='Ridge')
plt.xticks(range(X.shape[1]))
plt.legend()
plt.title('Coefficients of OLS and Ridge Regression Models')
plt.show()

输出

OLS MSE: 0.13 
Ridge MSE: 0.09

在这里插入图片描述
该图显示,与岭回归模型的系数相比,OLS模型的系数在幅度上更大,范围更广。因此,可以得出结论,OLS模型在方差和对数据噪声的敏感性方面优于岭回归模型。

  • OLS模型:OLS模型的MSE较高(0.13)表明与岭回归模型相比,它具有相对较高的总体方差。
  • 岭回归模型:岭回归模型的MSE较低(0.09)表明与OLS模型相比,它具有较低的总体方差。

岭回归中的正则化参数(lambda)有助于管理最小化系数幅度和最小化残差平方和之间的权衡。岭回归可以通过添加惩罚项来减少模型中的方差,从而减少过拟合并提高泛化性能。

因此,岭回归模型的MSE较低(0.09)表明其方差低于OLS模型(0.13)。这表明岭回归模型在MSE方面对数据集的表现更好,因为它更好地消除了过拟合并捕获了数据中的潜在模式。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/54878.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++篇】从零实现 `list` 容器:细粒度剖析与代码实现

文章目录 从零实现 list 容器:细粒度剖析与代码实现前言1. list 的核心数据结构节点结构分析 2 迭代器设计与实现2.1 为什么 list 需要迭代器?2.2 实现一个简单的迭代器2.3 测试简单迭代器解释: 2.4 增加后向移动和 -> 运算符关键点&#…

SpringMVC5-域对象共享数据

目录 使用ServletAPI向request域对象共享数据 使用ModelAndView向request域对象共享数据 使用Model向request域对象共享数据 使用map向request域对象共享数据 使用ModelMap向request域对象共享数据 Model、ModelMap、Map的关系 向session域共享数据 向application域共享…

asp.net core grpc快速入门

环境 .net 8 vs2022 创建 gRPC 服务器 一定要勾选Https 安装Nuget包 <PackageReference Include"Google.Protobuf" Version"3.28.2" /> <PackageReference Include"Grpc.AspNetCore" Version"2.66.0" /> <PackageR…

Python | Leetcode Python题解之第441题排列硬币

题目&#xff1a; 题解&#xff1a; class Solution:def arrangeCoins(self, n: int) -> int:left, right 1, nwhile left < right:mid (left right 1) // 2if mid * (mid 1) < 2 * n:left midelse:right mid - 1return left

Junit 5 - 理解Mockito,提高UT 覆盖率

前言 当我是1个3年初级程序员时&#xff0c; 我被面试者问到1个问题&#xff1a; 如何保证你的开发任务交付质量 当我是1个7年开发组长时&#xff0c; 我被面试者问到另1个问题&#xff1a;如何保证你的团队的代码质量&#xff0c; 减少rework。 又若干年后&#xff0c; 我才…

Mysql调优之索引优化(四)

一、mysql索引结构B树原理 B树开始就是n树&#xff0c;不是二叉树 B树的非叶子结点存储了数据&#xff0c;导致层级会很深&#xff0c;每一层又有数据又有索引。 B树只有叶子结点存储数据&#xff0c;其余都是存储索引&#xff0c;增加了每层存取索引的数量&#xff08;3层结构…

Comfyui 学习笔记1

如果图像输出被裁剪&#xff0c;则需要使用PrepImageForClipVision&#xff0c;来设置图像距离上边沿的位置. 决定绘画的作用区域&#xff0c;后面的KSample只作用到 mask标记的范围。 图像位置偏移了&#xff0c;可以考虑通过Image crop 裁剪 IPAdapter face 提取时&…

OceanBase 3.X 高可用 (一)

OceanBase 3.X 高可用&#xff08;一&#xff09; 一、分布式核心 OceanBase 3.x 采用的是paxos 协议&#xff0c;与raft协议相比。其复杂程度高&#xff0c;实现技术难度大。 Paxos 协议允许事务日志乱序发送&#xff0c;顺序提交。raft允许事务顺序发送&#xff0c;顺序提…

【java】前端RSA加密后端解密

目录 1. 说明2. 前端示例3. 后端示例3.1 pom依赖3.2 后端结构图3.3 DecryptHttpInputMessage3.4 ApiCryptoProperties3.5 TestController3.6 ApiCryptoUtil3.7 ApiDecryptParamResolver3.8 ApiDecryptRequestBodyAdvice3.9 ApiDecryptRsa3.10 ApiCryptoProperties3.11 KeyPair3…

Android界面控件概述

节选自《Android应用开发项目式教程》&#xff0c;机械工业出版社&#xff0c;2024年7月出版 做最简单的安卓入门教程&#xff0c;手把手视频、代码、答疑全配齐 控件是Android界面的重要组成单元&#xff0c;Android应用主要通过控件与用户交互&#xff0c;Android提供了非常…

raise Exception(“IPAdapter model not found.“)

IPAdapter模型文件太多了&#xff0c;而节点IPAdapter Unified Loader是通过函数&#xff08;get_ipadapter_file与get_clipvision_file&#xff09;预设来加载模型文件&#xff0c;当发生错误“IPAdapter model not found.“时并不指明模型文件名&#xff0c;导致想要有针对性…

在MacOS上安装MongoDB数据库

一、安装方法 1.1 安装包安装 首先&#xff0c;打开MongoDB 官网下载安装包&#xff0c;下载链接&#xff1a;https://www.mongodb.com/try/download/community。 根据自己的系统环境自行选择下载的版本。将下载好的 MongoDB 安装包解压缩&#xff0c;并将文件夹名改为 mon…

理解:基础地理实体相关概述

理解&#xff1a;基础地理实体相关概述 地理实体 geo-entity 现实世界中占据一定且连续空间位置和范围、单独具有同一属 性或完整功能的地理对象。 基础地理实体 fundamental geo-entity 通过基础测绘采集和表达的地理实体&#xff0c;是其他地理实体和相关 信息的定位框架与…

卡通角色检测系统源码分享

卡通角色检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Vis…

Keepalived+MySQL 高可用集群

基础架构如下 准备干净的实验环境 [rootmysql1 ~]# systemctl stop firewalld [rootmysql1 ~]# cat /etc/sysconfig/selinux |grep "SELINUXdisabled" SELINUXdisabled [rootmysql1 ~]# setenforce 0 setenforce: SELinux is disabled [rootmysql1 ~…

IoT网关的主要功能有哪些?天拓四方

在数字化浪潮席卷全球的今天&#xff0c;物联网&#xff08;IoT&#xff09;技术凭借其独特的优势&#xff0c;逐渐在各个领域展现出强大的生命力。而IoT网关&#xff0c;作为连接物理世界与数字世界的桥梁&#xff0c;其在物联网体系中的作用愈发凸显。 一、数据聚合与预处理…

acw(树的重心)

给定一颗树&#xff0c;树中包含 n&#x1d45b; 个结点&#xff08;编号 1∼n1∼&#x1d45b;&#xff09;和 n−1&#x1d45b;−1 条无向边。 请你找到树的重心&#xff0c;并输出将重心删除后&#xff0c;剩余各个连通块中点数的最大值。 重心定义&#xff1a;重心是指树…

《论文阅读》 用于产生移情反应的迭代联想记忆模型 ACL2024

《论文阅读》 用于产生移情反应的迭代联想记忆模型 ACL2024 前言简介任务定义模型架构Encoding Dialogue InformationCapturing Associated InformationPredicting Emotion and Generating Response损失函数问题前言 亲身阅读感受分享,细节画图解释,再也不用担心看不懂论文啦…

C++杂项

作业&#xff1a; 将之前实现的顺序表、栈、队列都更改成模板类 顺序表 #include <iostream>using namespace std;template<typename T>class SeqList { private:T *ptr;int size; //总长度int len 0; //当前顺序表实际长度public://初始…

误差不到1毫米的WGS84与CGCS2000坐标转换工具

我们在《WGS84与CGCS2000坐标的精密转换方法》一文中为你分享了一个WGS84与CGCS2000坐标的精密转换纯理论性的方法。 现在&#xff0c;再为你分享一个据说是误差不到1毫米的WGS84与CGCS2000坐标的转换工具&#xff0c;请从文末查看该工具的领取方法。 WGS84与CGCS2000坐标转换…