回归与聚类算法系列④:岭回归

目录

1. 背景

2. 数学模型

3. 特点

4. 应用领域

5. 岭回归与其他正则化方法的比较

6、API

7、代码

8、总结


🍃作者介绍:双非本科大三网络工程专业在读,阿里云专家博主,专注于Java领域学习,擅长web应用开发、数据结构和算法,初步涉猎Python人工智能开发。

🦅主页:@逐梦苍穹

📕回归与聚类算法系列

①:概念简述

②:线性回归

③:欠拟合与过拟合

🍔您的一键三连,是我创作的最大动力🌹

岭回归(Ridge Regression)是线性回归的一种变体,它在专业统计和机器学习领域中应用广泛。岭回归的核心目标是解决线性回归中的过拟合问题,并提高模型的泛化性能。

1. 背景

岭回归最早由统计学家Arthur E. Hoerl和Robert W. Kennard于1970年提出,是为了解决多重共线性(Multicollinearity)问题而诞生的。多重共线性是指在线性回归中,自变量之间存在高度相关性的情况,这会导致模型参数的估计不稳定,降低了模型的解释性能。

2. 数学模型

岭回归与线性回归类似,但在损失函数中引入了L2正则化项,用于惩罚模型参数的大小。

岭回归的数学模型如下所示:

Loss\hspace{0.1cm}Function = \sum_{i=1}^{n}(y_i - \beta_0 - \sum_{j=1}^{p}\beta_j x_{ij})^2 + \alpha\sum_{j=1}^{p}\beta_j^2

其中:

  • yi 是观测数据点(目标变量)。
  • xij 是输入特征矩阵的元素,表示第 i 个观测数据点的第 j 个特征。
  • β0 和 βj 是模型的参数,需要估计。
  • α 是岭回归的正则化参数,也称为正则化强度或惩罚参数。

损失函数的第一部分是最小二乘法的残差平方和,第二部分是L2正则化项。α是超参数,用于控制正则化的强度。较大的α值会导致模型参数趋于收缩,减小过拟合的风险。

3. 特点

  • 解决多重共线性:岭回归可以处理自变量之间的高度相关性,使得模型参数估计更稳定。
  • 增加模型复杂度:岭回归允许模型更复杂,因为正则化项允许参数取较大的值,但在不引入过拟合的情况下。
  • 参数缩减:岭回归的正则化项会使一些参数趋于零,实现了参数缩减(Parameter Shrinkage)。
  • 泛化能力提高:通过减小模型的方差,岭回归通常提高了模型在新数据上的泛化能力。

4. 应用领域

  • 经济学:用于经济数据建模,以预测经济变量之间的关系。
  • 生物统计学:用于基因表达分析和生物信息学领域,以处理高维数据。
  • 工程学:用于工程建模和控制系统设计,以改善模型的鲁棒性。
  • 金融学:用于资产定价和风险管理,以降低投资组合的风险。

5. 岭回归与其他正则化方法的比较

正则化力度越大,权重系数会越小

正则化力度越小,权重系数会越大

岭回归是一种L2则化方法,与L1正则化方法(如LASSO回归)不同,L1正则化可以导致参数稀疏性。选择哪种方法通常取决于具体问题和数据集的性质。

岭回归、LASSO回归和Elastic Net回归是三种常见的正则化线性回归方法,它们在处理多重共线性和过拟合问题时有不同的特点。下面是这三种方法之间的比较:

1. 岭回归(Ridge Regression):

  • 正则化项: 岭回归使用L2正则化项,即对模型参数的平方和进行惩罚。
  • 特点: 岭回归通过约束参数的平方和来控制参数的大小,使得模型参数趋于较小的值,但不会将参数压缩到零。
  • 解决的问题: 主要用于解决多重共线性问题和过拟合问题,可以保留所有特征,但对它们的权重进行缩减。
  • 稳定性: 对于高度相关的特征,岭回归能够给出相对稳定的参数估计。
  • 适用场景: 适用于特征之间存在相关性,但不希望丢弃特征的情况。

2. LASSO回归(Least Absolute Shrinkage and Selection Operator):

  • 正则化项: LASSO回归使用L1正则化项,即对模型参数的绝对值之和进行惩罚。
  • 特点: LASSO回归倾向于将不重要的特征的参数压缩到零,从而实现特征选择(Feature Selection)。
  • 解决的问题: 同样用于解决多重共线性和过拟合问题,但通常会导致一些特征的系数变为零,从而实现特征选择。
  • 稳定性: 在存在高度相关的特征时,LASSO回归可能会随机选择其中一个特征。
  • 适用场景: 适用于希望进行特征选择的情况,可以减少模型的复杂度。

3. Elastic Net回归:

  • 正则化项: Elastic Net回归结合了L1正则化项和L2正则化项,同时对模型参数的绝对值和平方和进行惩罚。
  • 特点: Elastic Net回归综合了岭回归和LASSO回归的优点,可以在解决多重共线性和过拟合问题的同时进行特征选择。
  • 解决的问题: 适用于综合考虑多重共线性和特征选择的问题。
  • 稳定性: 在存在高度相关的特征时,Elastic Net回归相对稳定,并可以选择一组相关性较高的特征。
  • 适用场景: 适用于需要综合考虑多个因素的情况,既希望减少特征数又需要保留相关性高的特征。

选择合适的正则化方法通常取决于具体问题和数据集的性质。如果特征之间存在高度相关性,但不希望进行特征选择,岭回归可能是一个良好的选择。如果需要进行特征选择,LASSO回归或Elastic Net回归可能更合适。不同方法之间的超参数需要进行调优,以获得最佳模型性能。

6、API

sklearn.linear_model.Ridge(alpha=1.0, fit_intercept=True,solver="auto", normalize=False)具有l2正则化的线性回归alpha:正则化力度,也叫 λλ取值:0~1 1~10solver:会根据数据自动选择优化方法sag:如果数据集、特征都比较大,选择该随机梯度下降优化normalize:数据是否进行标准化normalize=False:可以在fit之前调用preprocessing.StandardScaler标准化数据Ridge.coef_:回归权重Ridge.intercept_:回归偏置

All last four solvers support both dense and sparse data. However,

only 'sag' supports sparse input when `fit_intercept` is True.

这段话解释了关于使用不同优化方法时对稠密(dense)和稀疏(sparse)数据以及fit_intercept参数的支持情况。

首先,这里提到的四种优化方法是用于岭回归模型的优化方法。它们分别是:

  1. auto: 这个选项会根据数据的大小和特征数自动选择最适合的优化方法。
  2. sag: 随机平均梯度下降(Stochastic Average Gradient Descent)方法,通常用于处理大型数据集和特征数较多的情况。
  3. 其他两种方法未在这段话中详细说明。

然后,这段话指出,这四种优化方法都支持处理稠密和稀疏数据。稠密数据是指数据集中的大多数元素都是非零的,而稀疏数据是指数据集中的大多数元素都是零的。这些优化方法可以适用于两种类型的数据。

有一个例外情况:当设置fit_intercept=True时,只有sag方法支持处理稀疏数据。这是因为当fit_intercept为True时,模型需要估计偏置(intercept),而sag方法是唯一支持在这种情况下使用稀疏输入数据的方法。其他方法在这种情况下可能会导致错误或不稳定的行为。

因此,如果你的数据是稀疏的,并且你需要拟合一个带有偏置的岭回归模型,那么最好选择sag优化方法。如果你使用其他优化方法,并且希望处理稀疏数据,建议在调用岭回归之前使用preprocessing.StandardScaler等方法手动将数据标准化。

Ridge方法相当于SGDRegressor(penalty='l2', loss="squared_loss")。

只不过SGDRegressor实现了一个普通的随机梯度下降学习,推荐使用Ridge(实现了SAG)

sklearn.linear_model.RidgeCV(_BaseRidgeCV, RegressorMixin)

具有l2正则化的线性回归,可以进行交叉验证

coef_:回归系数

class _BaseRidgeCV(LinearModel):def __init__(self, alphas=(0.1, 1.0, 10.0),fit_intercept=True, normalize=False, scoring=None,cv=None, gcv_mode=None,store_cv_values=False):

7、代码

# -*- coding: utf-8 -*-
# @Author:︶ㄣ释然
# @Time: 2023/9/6 10:37
import warningsimport joblib
from sklearn.datasets import load_boston
from sklearn.linear_model import LinearRegression, SGDRegressor, Ridge
from sklearn.metrics import mean_squared_error
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler'''
sklearn.linear_model.Ridge(alpha=1.0, fit_intercept=True,solver="auto", normalize=False)具有l2正则化的线性回归alpha:正则化力度,也叫 λλ取值:0~1 1~10solver:会根据数据自动选择优化方法sag:如果数据集、特征都比较大,选择该随机梯度下降优化normalize:数据是否进行标准化normalize=False:可以在fit之前调用preprocessing.StandardScaler标准化数据Ridge.coef_:回归权重Ridge.intercept_:回归偏置
'''
def ridge():"""岭回归对波士顿房价进行预测:return:"""# 1)获取数据boston = load_boston()print("特征数量:\n", boston.data.shape)# 2)划分数据集x_train, x_test, y_train, y_test = train_test_split(boston.data, boston.target, random_state=22)# 3)标准化transfer = StandardScaler()x_train = transfer.fit_transform(x_train)x_test = transfer.transform(x_test)# 4)预估器estimator = Ridge(alpha=0.5, max_iter=10000)estimator.fit(x_train, y_train)# 保存模型joblib.dump(estimator, "my_ridge.pkl")# 加载模型# estimator = joblib.load("my_ridge.pkl")# 5)得出模型print("岭回归-权重系数为:\n", estimator.coef_)print("岭回归-偏置为:\n", estimator.intercept_)# 6)模型评估y_predict = estimator.predict(x_test)print("预测房价:\n", y_predict)error = mean_squared_error(y_test, y_predict)print("岭回归-均方误差为:\n", error)if __name__ == '__main__':warnings.filterwarnings("ignore")ridge()

8、总结

总之,岭回归是一种强大的工具,用于改善线性回归模型的性能,并处理多重共线性问题。它在各种领域中都有着广泛的应用,特别是在需要处理高维数据或自变量相关性较强的情况下,岭回归可以提供可靠的模型估计。

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

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

相关文章

机器学习(12)---梯度下降(含手写公式、推导过程和手写例题)

梯度下降 一、概述1.1 梯度下降的用途1.2 梯度下降公式 二、公式讲解2.1 推导过程2.2 例题 一、概述 1.1 梯度下降的用途 1. 使用线性回归的平方误差成本函数时,成本函数不会也永远不会有多个局部最小值。因为它是凸函数,只有单一的全局最小值。通俗地说…

Linux之yum/git的使用

目录 一、yum 1、关于yum 2、yum的操作 ①、yum list ②、yum install ③、yum remove 二、git 1、Linux中连接gitee 2、git的操作 ①git add [文件] ②git commit -m "提交日志" ③git push 3、可能出现的问题 ①配置用户名、邮箱 ②出现提交冲突 ③…

SpringBoot2.0入门(详细文档)

文章目录 Springboot是什么Springboot2.x依赖环境和版本新特性说明为什么学习Springboot从springboot优点来看从未来发展的趋势来看 开发环境Spring Boot开发环境搭建和项目启动jdk 的配置Spring Boot 工程的构建maven配置IDEA 快速构建maven 创建工程常用注解 完整代码 Spring…

成集云 | 聚水潭对接金蝶云星空接口 | 解决方案

源系统成集云目标系统 方案介绍 聚水潭是一款以SaaS ERP为核心,集多种商家服务为一体的SaaS协同平台,为全国35万多家电商企业提供全面的信息化解决方案。聚水潭已在全国设立了超过60个线下服务网点,服务范围覆盖超过300个城市,为…

23062C++QTday3

1> 自行封装一个栈的类,包含私有成员属性:栈的数组、记录栈顶的变量 成员函数完成:构造函数、析构函数、拷贝构造函数、入栈、出栈、清空栈、判空、判满、获取栈顶元素、求栈的大小 头文件stack.c #ifndef STACK_H #define STACK_H #in…

Elasticsearch实现词云效果Demo

文章目录 前言前期准备springbootElasticsearch依赖 思路准备数据查询数据处理文本样式处理 具体实施数据准备创建索引数据存储进行查询 踩坑记录聚合查询不生效问题 demo地址总结 前言 最近项目中使用Elasticsearch在做快速查询的功能,然后就想到了之前的一个项目…

9月1日作业

思维导图 服务器代码 #include<myhead.h>#define PORT 4567 #define IP "192.168.6.225"struct msg //接收到的客户端信息结构体 {char type;char name[20];char txt[128]; };//定义节点类型 typedef struct Node {union{struct sockaddr_in cin; //数据…

SpringMVC增删改查(CRUD)的实现

目录 前言 一、前期准备 1.pom.xml---依赖与插件的导入 2.jdbc.properties---数据库连接 3.log4j2.xml---日志文件 4.spring-mybatis---mybatis与spring整合文件 5.spring-context---spring上下文配置 6.spring-mvc 7.generatorConfig.xml---代码生成器 8.web.xml 二…

核心实验16_端口镜像_ENSP

项目场景&#xff1a; 核心实验16_端口镜像_ENSP 实搭拓扑图&#xff1a; 具体操作&#xff1a; 交换机: [garliccc]observe-port 1 interface GigabitEthernet 0/0/3 /设置0/0/3为观察口 [garliccc]int g0/0/2 [garliccc-GigabitEthernet0/0/2]port-mirroring to observe-po…

win 10 安装新程序总是弹出提示:目前无法访问smartscreen

win 10 安装新程序总是弹出提示&#xff1a;目前无法访问smartscreen 因为后来无法再现警告&#xff0c;无法截图 搜索安全&#xff0c;找到 Windows 安全中心 找到“应用和浏览器控制”&#xff0c;关闭其中 2 项 SmartScreen 奇怪的是&#xff0c;之后我又改回去了&#x…

npm install失败的分析与解决方案,以及修复完成的代码地址

问题描述&#xff1a; 在引入vue-element-admin后npm i 初始化失败&#xff0c;或者对下载的vue项目npm i 任何插件都会失败&#xff0c;且安装依赖时报错 npm ERR! Error while executing npm ERR! Error while executing: npm ERR! H:\Program Files\git\Git\cmd\git.EXE ls…

接口测试(详细总结)

序章 ​ 说起接口测试&#xff0c;网上有很多例子&#xff0c;看了不不知道他们说的什么&#xff0c;觉得接口测试&#xff0c;好高大上。认为学会了接口测试就能屌丝逆袭&#xff0c;走上人生巅峰&#xff0c;迎娶白富美。因此学了点开发知识后&#xff0c;发现接口测试其实都…

第P4周:猴痘病识别

&#x1f368; 本文为&#x1f517;365天深度学习训练营 中的学习记录博客&#x1f366; 参考文章&#xff1a;Pytorch实战 | 第P4周&#xff1a;猴痘病识别&#x1f356; 原作者&#xff1a;K同学啊|接辅导、项目定制 一、前期准备 1.设置GPU 设置GPU device torch.device…

系统架构设计师-嵌入式系统

目录 一、嵌入式系统概述 1、基本概念 2、嵌入式系统软件组成架构 二、嵌入式软件开发 三、嵌入式硬件 1、嵌入式微处理器 2、人工智能芯片 3、嵌入式微处理器体系结构 4、总线 四、嵌入式操作系统 1、嵌入式实时操作系统 2、操作系统内核架构 3、鸿蒙操作系统 五、嵌入式…

postman token 请求头添加

思路&#xff1a; 1、登录成功后将 得到的token设置为集合变量 2、在需要携带Authorization的请求头上使用该集合变量 关键代码 const responseData pm.response.json(); if(responseData.code 1) {// 获取tokenconst {data:{token}} responseData// 设置为集合变量pm.colle…

编译OpenWrt内核驱动

编译OpenWrt内核驱动可以参考OpenWrt内部其它驱动的编写例程&#xff0c;来修改成自己需要的驱动 一、OpenWrt源代码获取与编译 1.1、搭建环境 下载OpenWrt的官方源码&#xff1a; git clone https://github.com/openwrt/openwrt.git1.2、安装编译依赖项 sudo apt update -…

vue中如何给特殊字段设置插槽

大纲: <template><div><div><span>卡号</span><el-input type"text" v-model"cardNo" clearable placeholder"请输入卡号" /><el-button type"primary" plain icon"el-icon-search"…

我们如何在工作与生活中找到平衡点?

找到工作与生活中的平衡点是每个人都必须面对的问题。以下是一些建议&#xff0c;可以帮助你在工作和生活之间找到平衡&#xff1a; 制定时间表&#xff1a;确保你有足够的时间来处理工作和生活中的各种任务。为工作、学习和个人生活设定优先级&#xff0c;并确保时间分配合理…

ElasticSearch第三讲:ES详解 - Elastic Stack生态和场景方案

ElasticSearch第三讲&#xff1a;ES详解 - Elastic Stack生态和场景方案 本文是ElasticSearch第三讲&#xff0c;在了解ElaticSearch之后&#xff0c;我们还要了解Elastic背后的生态 即我们常说的ELK&#xff1b;与此同时&#xff0c;还会给你展示ElasticSearch的案例场景&…

浅谈限流式保护器在高校防火工作的应用

安科瑞 华楠 【摘要】摘要&#xff1a;为了预防火灾和减少火灾带来的危害&#xff0c;保护校园和师生生命财产安全&#xff0c; 建和谐安宁的校园环境&#xff0c;保障学校安全稳定发展&#xff0c;我们必须要时刻拧紧消防安全这弦&#xff0c;时刻注意这根高压线。随着近年来…