机器学习 | 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方面对数据集的表现更好,因为它更好地消除了过拟合并捕获了数据中的潜在模式。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

基于PHP的电脑线上销售系统

作者:计算机学姐 开发技术:SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等,“文末源码”。 专栏推荐:前后端分离项目源码、SpringBoot项目源码、SSM项目源码 系统展示 【2025最新】基于phpMySQL的电脑线上销售系…

【C语言】自定义类型——联合和枚举

目录 一、联合体(共用体) (1)联合体类型的声明 (2)联合体类型的特点 (3)联合体和结构体的比较 (4)联合体大小的计算 (5)联合体的…

RK3588/RK3588s运行yolov8达到27ms

前言 Hello,小伙伴们~~我最近做了一个比较有意思的东西,想起来也好久没有写博客了,就记录一下吧。希望和大家一起学习,一起进步! 我简单介绍一下我最近做的这个东西的经过哈~上个月在B站上看到了一个博主发了一条视频关…

Qt 模型视图(四):代理类QAbstractItemDelegate

文章目录 Qt 模型视图(四):代理类QAbstractItemDelegate1.基本概念1.1.使用现有代理1.2.一个简单的代理 2.提供编辑器3.向模型提交数据4.更新编辑器的几何图形5.编辑提示 Qt 模型视图(四):代理类QAbstractItemDelegate ​ 模型/视图结构是一种将数据存储和界面展示分离的编程方…

Docker笔记-容器数据卷

Docker笔记-容器数据卷 docker的理念将运行的环境打包形成容器运行,运行可以伴随容器,但是我们对数据的要求是希望持久化,容器 之间可以共享数据,Docker容器产生的数据,如果不通过docker commit生成新的镜像&#xf…

assign是赋值,不是连接

如下图是一个top文件的背压 如果把原本应该是外界输入的变量m_ip_hdr_ready通过phv_parser_hdr_ready来“赋值!!!”,那么模块内部本该有的ready信号,就会是Z高阻态,因为没有给到值。 正确的赋值 将整个模…

【医疗大数据】医疗保健领域的大数据管理:采用挑战和影响

选自期刊**《International Journal of Information Management》**(IF:21.0) 医疗保健领域的大数据管理:采用挑战和影响 1、研究背景 本研究的目标是调查阻止医疗机构实施成功大数据系统的组织障碍,识别和评估这些障碍,并为管理…

微信小程序拨打电话点取消报错“errMsg“:“makePhoneCall:fail cancel“

问题:微信小程序中拨打电话点取消,控制台报错"errMsg":"makePhoneCall:fail cancel" 解决方法:在后面加上catch就可以解决这个报错 wx.makePhoneCall({phoneNumber: 181********}).catch((e) > {console.log(e) //用…

调整pycharm中的字体大小

1.找到设置 2.打开setting ,按照图示操作即可

YOLOv5白皮书-第Y1周:调用官方权重进行检测

>- **🍨 本文为[🔗365天深度学习训练营](小团体~第八波) 中的学习记录博客** >- **🍖 原作者:[K同学啊](K同学啊-CSDN博客)** 一、前言 拖了好久,终于要开始目标检测系列了。自己想过好几次&#xf…

中秋节特别游戏:给玉兔投喂月饼

🖼️ 效果展示 📜 游戏背景 在中秋这个充满诗意的节日里,玉兔因为贪玩被赶下人间。在这个温柔的夜晚,我们希望通过一个小游戏,让玉兔感受到人间的温暖和关怀。🐰🌙 🎮 游戏设计 人…

Broadcast:Android中实现组件及进程间通信

目录 一,Broadcast和BroadcastReceiver 1,简介 2,广播使用 二,静态注册和动态注册 三,无序广播和有序广播 1,有序广播的使用 2,有序广播的截断 3,有序广播的信息传递 四&am…

[产品管理-15]:NPDP新产品开发 - 13 - 产品创新流程 - 具体产品的创新流程:精益生产与敏捷开发

目录 前言:​ 一、集成产品开发IPD模型——集成跨功能团队的产品开发 1.1 概述 1、IPD模型的核心思想 2、IPD模型的主要组成部分 3、IPD模型的实施步骤 4、IPD模型的优点 1.2 基于IPD系统的组织实践等级 1.3 IPD的优缺点 二、瀑布开发模型 1、定义与特点…

21、Tomato

难度 低(个人认为中) 目标 root权限 一个flag 使用VMware启动 kali 192.168.152.56 靶机 192.168.152.66 信息收集 端口信息收集 可以看到有个ftp服务,2211实际是ssh协议端口,80、8888是一个web服务 web测试 80端口显示一个tomato 查看源码给了一些…

opencv图像透视处理

引言 在图像处理与计算机视觉领域,透视变换(Perspective Transformation)是一种重要的图像校正技术,它允许我们根据图像中已知的四个点(通常是矩形的四个角)和目标位置的四个点,将图像从一个视…

软件安装攻略:EmEditor编辑器下载安装与使用

EmEditor是一款在Windows平台上运行的文字编辑程序。EmEditor以运作轻巧、敏捷而又功能强大、丰富著称,得到许多用户的好评。Windows内建的记事本程式由于功能太过单薄,所以有不少用户直接以EmEditor取代,emeditor是一个跨平台的文本编辑器&a…

聊城网站建设:企业如何打造高效官网

聊城网站建设:企业如何打造高效官网 在互联网飞速发展的今天,官方网站已成为企业展示形象、推广产品、与客户沟通的重要平台。尤其对于聊城地区的企业来说,建立一个高效的官网显得尤为重要。本文将分享一些关键步骤,帮助企业打造一…

MapReduce基本原理

目录 整体执行流程​ Map端执行流程 Reduce端执行流程 Shuffle执行流程 整体执行流程 八部曲 读取数据--> 定义map --> 分区 --> 排序 --> 规约 --> 分组 --> 定义reduce --> 输出数据 首先将文件进行切片(block)处理&#xff…

人工智能快速发展下的极端风险管理

文章目录 前言一、快速进步与高风险并存1、深度学习系统缺乏关键功能,其开发周期尚不明朗2、自主人工智能系统一旦导向不良目标,人类可能面临其失控风险 二、技术研发方向调整1、实现安全人工智能的基础性突破,确保人工智能可靠安全2、实现有…

shopro前端 短信登录只显示模板不能正常切换

删掉 换成下面的代码 // 打开授权弹框 export function showAuthModal(type smsLogin) {const modal $store(modal);setTimeout(() > {modal.$patch((state) > {state.auth type;});}, 100); }