了解统计分析中的岭回归

news2024/11/16 7:30:55

一、介绍

        在统计建模和机器学习领域,回归分析是用于理解变量之间关系的基本工具。在各种类型的回归技术中,岭回归是一种特别有用的方法,尤其是在处理多重共线性和过拟合时。本文深入探讨了岭回归的概念、其数学基础、应用、优点和局限性。

在数据领域,就像在生活中一样,阻力最小的路径往往会导致道路人满为患。Ridge Regression 就像一个明智的指南,将我们带到一条人迹罕至的路线上,那里的旅程可能稍微复杂一些,但到达目的地的准确性和可靠性更高。

二、背景

        岭回归,也称为 Tikhonov 正则化,是一种用于分析多重共线性的多元回归数据的技术。当回归模型中的自变量高度相关时,就会发生多重共线性。这种情况可能导致普通最小二乘法 (OLS) 回归中回归系数的估计值不可靠且不稳定。Ridge Regression 通过在回归模型中引入惩罚项来解决此问题。

三、数学基础

岭回归背后的基本思想是在回归模型中系数的平方和中添加一个惩罚(岭惩罚)。岭惩罚是系数大小乘以称为 lambda (λ) 的参数的平方,该参数控制惩罚的强度。

岭回归模型表示为:

其中 yi 是因变量,xij 是自变量,βj 是系数,n 和 p 分别表示观测值和预测变量的数量。

四、应用与优势

岭回归广泛用于 OLS 回归无法提供可靠估计的情况:

  1. 处理多重共线性:通过对系数进行惩罚,岭回归减少了多重共线性问题,从而获得更可靠的估计。
  2. 防止过拟合:该技术可用于防止模型中的过拟合,尤其是在预测变量数量相对于观测值数量较大的情况下。
  3. 提高预测准确性:由于偏差-方差权衡,岭回归可以提高预测准确性

五、局限性

尽管有其优点,但岭回归也有局限性:

  1. Lambda 的选择:为 lambda 参数选择适当的值至关重要。通常使用交叉验证,但它可能是计算密集型的。
  2. 置估计器:该方法在回归系数的估计中引入了偏置。但是,这是为了降低方差和提高预测准确性而进行的权衡。
  3. 功能选择的不适用性:Ridge Regression 不执行特征选择;它只是将系数缩小到零,但永远不会完全缩小到零。

六、代码

为了演示 Python 中的 Ridge 回归,我们将遵循以下步骤:

  1. 创建合成数据集。
  2. 将数据集拆分为训练集和测试集。
  3. 将 Ridge 回归应用于数据集。
  4. 评估模型的性能。
  5. 绘制结果。

下面是一个完整的 Python 代码示例来说明此过程:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.model_selection import train_test_split
from sklearn.linear_model import Ridge
from sklearn.metrics import mean_squared_error
from sklearn.datasets import make_regression

# Step 1: Create a synthetic dataset
X, y = make_regression(n_samples=100, n_features=1, noise=10, random_state=42)

# Step 2: Split the dataset into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Step 3: Apply Ridge Regression to the dataset
# Note: Adjust alpha to see different results (alpha is the λ in Ridge formula)
ridge_model = Ridge(alpha=1.0)
ridge_model.fit(X_train, y_train)

# Predictions
y_train_pred = ridge_model.predict(X_train)
y_test_pred = ridge_model.predict(X_test)

# Step 4: Evaluate the model's performance
train_error = mean_squared_error(y_train, y_train_pred)
test_error = mean_squared_error(y_test, y_test_pred)
print(f"Train MSE: {train_error}, Test MSE: {test_error}")

# Step 5: Plot the results
plt.scatter(X_train, y_train, color='blue', label='Training data')
plt.scatter(X_test, y_test, color='red', label='Testing data')
plt.plot(X_train, y_train_pred, color='green', label='Ridge model')
plt.title("Ridge Regression with Synthetic Dataset")
plt.xlabel("Feature")
plt.ylabel("Target")
plt.legend()
plt.show()
Train MSE: 73.28536502082304, Test MSE: 105.78604284136125

若要运行此代码,请执行以下操作:

  1. 确保安装了 Python 和必要的库:NumPy、Matplotlib 和 scikit-learn。
  2. 您可以在 Ridge 函数中调整参数,以查看不同值如何影响模型。代码中的参数对应于 Ridge 回归公式中的 λ (lambda)。alphaalpha
  3. 合成数据集是使用 scikit-learn 的函数生成的,该函数创建适合回归的数据集。make_regression

此代码将创建一个 Ridge 回归模型,将其应用于合成数据集,使用均方误差 (MSE) 评估其性能,并显示一个图,显示 Ridge 回归模型与训练和测试数据的拟合。

结论

        岭回归是一种强大的统计工具,用于处理回归分析中的一些固有问题,例如多重共线性和过拟合。通过合并惩罚项,它为普通最小二乘回归提供了一种强大的替代方案,尤其是在具有许多预测变量的复杂数据集中。虽然它给模型带来了一些偏差,但这通常是值得的,以换取稳定性和预测准确性的提高。但是,从业者必须注意其局限性,包括选择适当的 lambda 值的挑战以及无法执行特征选择。总体而言,岭回归是统计学家、数据分析师和机器学习从业者武器库中不可或缺的技术。

人工智能
机器学习
深度学习

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

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

相关文章

OpenHarmony从入门到放弃(四)

设计一款使用Harmony开发的App 接下来我会通过设计并开发一款资讯类的App来入门OpenHarmony; 以下是我对App的设计想法; 一、模块划分 内容模块:App的核心模块,负责管理和展示资讯内容,具体包括内容获取与处理&…

云化XR技术于农业领域中的表现

随着科技的不断发展和应用的深入,农业领域也在逐渐引入新技术来优化生产效率和成本、改进管理和监控等。云化XR(CloudXR)作为一种融合了云计算、虚拟现实(VR)和增强现实(AR)等技术的解决方案&am…

AntV-G6 -- 将G6图表应用到项目中

1. 效果图 2. 安装依赖 npm install --save antv/g6 3. 代码 import { useEffect } from alipay/bigfish/react; import G6 from antv/g6;const data {id: root,label: 利息收入,subLabel: 3,283.456,ratio: 3,children: [{id: child-a,label: 平均利息,subLabel: 9%,ratio:…

机器视觉兄弟们,没有项目订单,机器视觉项目行业难题来了

产品没一个正形,光源像是打了几十年的光棍一样,偏偏配不上,n次“相亲”之后图像硬是“阴晴圆缺”,老板阴阳怪气你这打不出来,给客户看之后说,这都打不出来,你们不行啊。 我听了后真想&#xff…

字节填充与0比特填充以及数据链路的基本问题

目录 字节填充: 比特填充: 数据链路有三个基本问题 1.封装成帧 2.透明传输 3.差错检测 首先介绍一下PPP的帧结构: 首部的第一个字段和尾部的第二个字段都是标志字段F(Flag),规定为0x7E (符号“0x”表示它后面的字符是用十六…

Android低功耗蓝牙开发总结

基础使用 权限申请 蓝牙权限在各个版本中略有不同 Android 12 及以上版本,如果不需要通过蓝牙来推断位置的话,蓝牙扫描不需要开启位置权Android 11 及以下版本,蓝牙扫描必须开启位置权限Android 9 及以下版本,蓝牙扫描可开启粗…

弧形导轨和直线导轨的区别

弧形导轨和直线导轨是两种常见的导轨类型,都具有支撑和引导功能,都可以将运动的能量传递到接收端,实现稳定的运动。那么这两者有什么区别呢? 从结构上来看,直线导轨呈现直线的形状,在机器设备的运动中起到了…

Java学习苦旅(十八)——详解Java中的二叉树

本篇博客将详细讲解二叉树 文章目录 树型结构简介基本概念表示形式 二叉树概念两种特殊的二叉树二叉树的性质二叉树的存储二叉树的简单创建二叉树的遍历前中后序遍历层序遍历 结尾 树型结构 简介 树是一种非线性的数据结构,它是由n(n>0&#xff09…

Pytest——Fixture夹具的使用

一、什么是Fixture 在测试开展的过程中,会需要考虑到测试前的准备工作,以及测试后的释放操作行为。这些在Pytest中,会通过Fixture的方式来实现。如果说在运行pytest的测试用例的时候,需要调用一些数据来实现测试行为,…

AJAX(三)跨域

一、同源策略 同源策略最早由Netscape公司提出,是浏览器的一种安全策略。 同源:协议、域名、端口号必须完全相同。(同一个来源) 违背同源策略就是跨域。 AJAX发送请求时是默认要遵循同源策略的,不是同源策略&#…

Java 如何实现微信支付功能代码示例

微信支付是由中国的腾讯公司推出的一种移动支付方式。它允许用户通过在微信应用中绑定银行卡或其他支付方式来进行交易,包括在线购物、转账、付款码支付等。微信支付的特点包括便捷、安全、快速和全面,使用户可以随时随地完成交易。用户可以通过扫描商家…

QT自定义信号和槽

信号和槽 介绍实现创建文件对teacher的h和cpp文件进行处理对student的h和cpp文件进行处理对widget的h和cpp文件进行处理 介绍 Qt中的信号和槽是一种强大的机制,用于处理对象之间的通信。它们是Qt框架中实现事件驱动编程的核心部分。 信号(Signal&#x…

48种国内外的PCB设计工具-你知道的有哪几种呢?

针对强迫症,非要使用最好最全的工具;针对死较真,认为自己的工具最好用; 工具只是工具,思想最重要! 自记录: 无论我们设计什么样的项目,电子工程师都必须知道电路应该如何布局以及…

使用mysql查询当天、近一周、近一个月及近一年的数据以及各种报表查询sql

1.mysql查询当天的数据 1 select * from table where to_days(时间字段) to_days(now()); 2.mysql查询昨天的数据 1 select * from table where to_days(now( ) ) - to_days( 时间字段名) < 1 3.mysql查询近一个月的数据 1 SELECT * FROM table WHERE date(时间字段) …

Idea连接Docker在本地(Windows)开发SpringBoot

文章目录 1. 新建运行配置2. 修改运行目标3. 设置新目标Docker4. 选择运行主类5. 运行 当一些需要的服务在docker容器中运行时&#xff0c;因为docker网络等种种原因&#xff0c;不得不把在idea开发的springboot项目放到docker容器中才能做测试或者运行。 1. 新建运行配置 2. …

开启Android学习之旅-3-Android Activity

Android Activity 本文总结《第一行代码 Android》第3版的内容 环境&#xff1a; Android Studio Giraffe | 2022.3.1 Patch 3 Activity 是什么&#xff1f; Activity 简单将就是UI界面&#xff0c;包含两部分 Activity 类 和应用布局文件&#xff0c;如果是 Compose 则另说&…

kubernetes(一)概述与架构

云原生实战 语雀 官网 Kubernetes 文档 | Kubernetes 更新&#xff1a;移除 Dockershim 的常见问题 | Kubernetes B站课程&#xff1a;https://www.bilibili.com/video/BV13Q4y1C7hS/?p26 1.概述 概述 | Kubernetes 大规模容器编排系统 kubernetes具有以下特性&#xf…

【数值分析】非线性方程求根,牛顿法,牛顿下山法,matlab实现

4. 牛顿法 收敛时牛顿法的收敛速度是二阶的&#xff0c;不低于二阶。如果函数有重根&#xff0c;牛顿法一般不是二阶收敛的。 x k 1 x k − f ( x k ) f ′ ( x k ) x_{k1}x_k- \frac{f(x_k)}{f(x_k)} xk1​xk​−f′(xk​)f(xk​)​ matlab实现 %% 牛顿迭代例子 f (x) x…

x-cmd pkg | gh - GitHub 官方 CLI

目录 简介首次用户功能特点与 x-cmd gh 模块的关系相关作品进一步探索 简介 gh&#xff0c;是由 GitHub 官方使用 Go 语言开发和维护的命令行工具&#xff0c;旨在脚本或是命令行中便捷管理和操作 GitHub 的工作流程。 注意: 由于 x-cmd 提供了同名模块&#xff0c;因此使用官…

机器视觉系统选型-环境配置:报错序列不包含任何元素 的解决方法

描述 环境&#xff1a;VM4.0.0VS2015 及以上 现象&#xff1a;配置环境后&#xff0c;获取线线测量模块结果&#xff0c;报错“序列不包含任何元素”。如下图所示&#xff1a; 解答 将“\VisionMaster4.0.0\Development\V4.0.0 \ComControls\bin\x64”下整体重新拷贝。