了解统计分析中的岭回归

一、介绍

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

在数据领域,就像在生活中一样,阻力最小的路径往往会导致道路人满为患。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.mzph.cn/news/602537.shtml

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

相关文章

腾讯面试总结

腾讯 一面 mysql索引结构?redis持久化策略?zookeeper节点类型说一下;zookeeper选举机制?zookeeper主节点故障,如何重新选举?syn机制?线程池的核心参数;threadlocal的实现&#xff…

Git 实战指南:常用指令精要手册(持续更新)

👑专栏内容:Git⛪个人主页:子夜的星的主页💕座右铭:前路未远,步履不停 目录 一、Git 安装过程1、Windows 下安装2、Cent os 下安装3、Ubuntu 下安装 二、配置本地仓库1、 初始化 Git 仓库2、配置 name 和 e…

SpringBoot学习(六)-SpringBoot整合Shiro

12、Shiro 12.1概述 12.1.1简介 Apache Shiro是一个强大且易用的Java安全框架 可以完成身份验证、授权、密码和会话管理 Shiro 不仅可以用在 JavaSE 环境中,也可以用在 JavaEE 环境中 官网: http://shiro.apache.org/ 12.1.2 功能 Authentication…

【Docker】desktop docker 打包镜像 docker如何打包镜像

一、打包镜像 当你对某一个容器做了修改之后(通过在容器中运行某一个命令),可以把对容器的修改保存下来,这样下次可以从保存后的最新状态运行该容器。docker中保存状态的过程称之为committing,它保存的新旧状态之间的区别,从而产生一个新的版本。 首先使用docker ps -l命…

利用事务实现转账功能!!!(基础版)

搭建环境&#xff1a;利用下边环境即可&#xff01;&#xff01;&#xff01; Spring整合MyBatis框架&#xff01;&#xff01;&#xff01;-CSDN博客 需要修改的文件&#xff1a; applicationContext.xml: <?xml version"1.0" encoding"UTF-8"?>…

Keil5,ARM编译器限制

根据 ISO C 标准的要求&#xff0c;介绍与翻译相关的 Arm C 编译器和 C 库的实现定义方面。 第 5.2.4.1 节 ISO/IEC 9899&#xff1a;2011 标准的翻译限制要求符合的编译器必须接受的最低翻译限制。下表汇总了这些限制。在此表中&#xff0c;限制 <memory> 表示 Arm Comp…

DFS-体积

DFS-体积 题目&#xff1a; 给出n件物品&#xff0c;每件物品有一个体积Vi&#xff0c;求从中取若干件物品能够组成不同的体积和有多少种可能。例如&#xff0c;n3&#xff0c;Vi(1,3,4),那么输出6,6种不同的体积分别为1,3,4,5,7,8 输入格式&#xff1a; 第一行一个正整数&…

一文讲透Python数据分析可视化之直方图(柱状图)

直方图&#xff08;Histogram&#xff09;又称柱状图&#xff0c;是一种统计报告图&#xff0c;由一系列高度不等的纵向条纹或线段表示数据分布的情况。一般用横轴表示数据类型&#xff0c;纵轴表示分布情况。通过绘制直方图可以较为直观地传递有关数据的变化信息&#xff0c;使…

关于“Python”的核心知识点整理大全65

目录 20.2.19 设置 SECRET_KEY 20.2.20 将项目从 Heroku 删除 注意 20.3 小结 附录 A 安装Python A.1.1 确定已安装的版本 A.1.2 在 Linux 系统中安装 Python 3 A.2 在 OS X 系统中安装 Python A.2.1 确定已安装的版本 A.2.2 使用 Homebrew 来安装 Python 3 注意 …

ejs默认配置 原型链污染

文章目录 ejs默认配置 造成原型链污染漏洞背景漏洞分析漏洞利用 例题 [SEETF 2023]Express JavaScript Security ejs默认配置 造成原型链污染 参考文章 漏洞背景 EJS维护者对原型链污染的问题有着很好的理解&#xff0c;并使用非常安全的函数清理他们创建的每个对象 利用Re…

高校选课系统需求分析开发源码

高校学生选课报名系统包括学生、教师和管理员三方的功能需求&#xff0c;学生的需求是查询院系的课程、选课情况及个人信息修改&#xff1b;教师则需要查看和查询所有课程信息及自己的课程信息以及教师信息的修改&#xff1b;管理员则负责更为复杂的任务&#xff0c;包括对学生…

opencv007 图像运算——加减乘除

今天学习图像处理的基础——加减乘除&#xff0c;总体来说比较好理解&#xff0c;不过生成的图片千奇百怪哈哈哈哈 opencv中图像的运算本质是矩阵的运算 加法 做加法之前要求两张图片形状&#xff0c;长宽&#xff0c;通道数完全一致 cv2.add(img1, img2) add的规则是两个图…

HTML 使用 ruby 给汉字加拼音

使用 ruby 给汉字加拼音 兼容性 使用 ruby 给汉字加拼音 大家有没有遇到过要给汉字头顶上加拼音的需求? 如果有的话, 你是怎么解决的呢? 如果费尽心思, 那么你可能走了很多弯路, 因为 HTML 原生就有这样的标签来帮我们实现类似的需求. <ruby> ruby 本身是「红宝石」…

leetcode 每日一题 2023年12月30日 一周中的第几天

题目 给你一个日期&#xff0c;请你设计一个算法来判断它是对应一周中的哪一天。 输入为三个整数&#xff1a;day、month 和 year&#xff0c;分别表示日、月、年。 您返回的结果必须是这几个值中的一个 {"Sunday", "Monday", "Tuesday", &qu…

JavaScript中的数组使用及常见属性方法

文章目录 一.什么是数组&#xff1f;二.数组的使用三、数组的方法四、数组总结 一.什么是数组&#xff1f; 在JavaScript中&#xff0c;数组是一种特殊的对象&#xff0c;用于存储和操作多个值。与其他编程语言不同&#xff0c;可以同时存储不同类型的值&#xff0c;并且长度是…

transforms图像增强(二)

一、图像变换 1、transforms.Pad transforms.Pad是一个用于对图像边缘进行填充的数据转换操作。 参数&#xff1a; padding&#xff1a;设置填充大小。可以是单个整数&#xff0c;表示在上下左右四个方向上均填充相同数量的像素&#xff1b;也可以是一个包含两个整数的元组…

Python学习笔记第八十天(OpenCV图像操作)

Python学习笔记第八十天 OpenCV图像操作图像读取与显示像素值访问与修改图像属性获取ROI定义与处理通道拆分与合并图像边框设置 后记 OpenCV图像操作 图像读取与显示 在开始任何图像处理之前&#xff0c;我们需要先读取图像。OpenCV提供了cv2.imread函数用于读取图像。这个函…

【Xilinx FPGA】异步 FIFO 的复位

FIFO&#xff08;First-In-First_Out&#xff0c;先入先出&#xff09;是一种的存储器类型&#xff0c;在 FPGA 开发中通常用于数据缓存、位宽转换或者跨时钟域&#xff08;多 bit 数据流&#xff09;。在使用异步 FIFO 时&#xff0c;应注意复位信号是否遵循相关要求和规范&am…

MySQL Mysqldump 一致性备份与大数据库备份 与 PG MYSQL 到底谁是NO.1

这开头还是介绍一下群&#xff0c;如果感兴趣PolarDB ,MongoDB ,MySQL ,PostgreSQL ,Redis, Oceanbase, Sql Server等有问题&#xff0c;有需求都可以加群群内&#xff0c;可以解决你的问题。加群请联系 liuaustin3 &#xff0c;&#xff08;共1830人左右 1 2 3 4 5&#xf…

android apk文件的签名问题

android的APK文件实际上是一个jar文件。jar的意思是瓶、罐&#xff0c;那就意味着jar文件是一个用来存放android应用相关文件的容器。事实上&#xff0c;它也确实如此&#xff0c;它只是一个带或不带压缩的zip文件&#xff0c;当你把.apk后缀改成.zip后&#xff0c;就能对此进行…