全面整理!机器学习常用的回归预测模型(表格数据)

news2024/11/25 1:09:34

文章目录

  • 一、前言
  • 二、线性模型
  • 三、非线性模型

🍉 CSDN 叶庭云https://yetingyun.blog.csdn.net/


一、前言

回归预测建模的核心是学习输入 X X X 到输出 y y y (其中 y y y 是连续值向量)的映射关系。条件期望 E ( Y ∣ X = x ) E(Y \mid X=x) E(YX=x) X X X y y y 的回归函数。简单来说,就是将样本的特征矩阵映射到样本标签空间

A futuristic and aesthetically pleasing visualization of machine learning regression prediction, with sleek and high-tech graphics that convey a sense of advanced technology. --version 6 --quality .5 --chaos 0 --stylize 100 --aspect 16:9

本文全面整理了各种常用的回归预测模型,旨在帮助读者更好地学习回归预测建模。


二、线性模型

线性回归是一种线性模型,通过特征的线性组合来预测连续值标签。线性回归通过拟合系数 w = ( w 1 , ⋯   , w p ) w = (w_{1}, \cdots, w_{p}) w=(w1,,wp) (可选择是否设置截距)的线性模型,以最小化真实值和预测值之间的残差平方和

scikit-learn 的 linear_model 子模块提供了许多用于线性回归和广义线性模型(GLM)的方法。以下是一些常用的方法:

  • 普通最小二乘线性回归。

  • 套索回归(Lasso)。Lasso 可以理解为在线性回归的损失函数的基础上,加入一个 L1 正则项,来限制 w w w 不要过大。Lasso 趋向于使得一部分 w w w 值变为 0,所以可以作为特征选择用。

  • 岭回归(Ridge Regression)。岭回归可以理解为在线性回归的损失函数的基础上,加入一个 L2 正则项,来限制 w w w 不要过大。适用于共线性数据的有偏估计回归。这是一种改良的最小二乘估计法,它放弃了最小二乘法的无偏性,以损失部分信息和降低精度为代价,使得回归系数更符合实际、更可靠。对于病态数据,其拟合能力强于最小二乘法。然而,它不像 Lasso 那样具备特征选择的能力。

  • 随机梯度下降回归。通过随机梯度下降(SGD)最小化正则化经验损失来拟合的线性模型。每次估计每个样本的损失梯度,并且模型会随着时间推移按照递减的强度计划(即学习率)进行更新。正则化项是一种添加到损失函数中的惩罚项,它使用欧几里得范数 L2 或绝对范数 L1 或两者的组合(弹性网)模型参数缩小到零向量。如果由于正则化项的原因,参数更新超过了 0.0 的值,更新将被截断为 0.0,以便学习稀疏模型并实现在线特征选择

  • 弹性网络回归(ElasticNet)。ElasticNet 是一种结合了 L1 和 L2 先验的作为正则化项的线性回归模型。Lasso 之所以具备特征选择功能,是因为它采用了 L1 正则项。L1 正则倾向于生成稀疏解,这意味着它可以将一些对预测目标(标签)无帮助的特征的系数缩减至 0。这样,那些对模型结果有显著影响的特征就可以被突显出来。与此相对,岭回归采用 L2 正则项,并不具备这种将系数缩减至 0 的能力。L2 正则项只能将一些不太相关的特征的系数降低至一个较小的数值,但不会减至 0。此外,岭回归的 L2 正则化有解析解,而 L1 正则化没有。因此,人们提出了一种既含有 L1 正则化又含有 L2 正则化的方法 —— 弹性网络(ElasticNet),这种方法可以看作是岭回归和 Lasso 的一种折中方案。

  • 最小角回归模型(Least Angle Regression,简称 LAR)。最小角回归是一种适用于高维数据的回归算法。当预测变量 p p p 大于观察样本数 n n n 时,LAR 可以解决线性回归问题。其核心思想是将预测目标依次分解为特征向量的线性组合,最终使得残差向量与所有特征均线性无关,从而最小化。在每一步中,LAR 都会找到与目标最相关的特征。当多个特征具有相等的相关性时,LAR 不是沿着相同的特征继续进行,而是沿着特征之间角平分线的方向进行。LAR 是前向选择算法的快速性与前向梯度算法的准确性两者间的折中,可以产生分段线性结果的完整路径,这在模型的交叉验证中极为有用。

  • 正交匹配追踪算法(Orthogonal Matching Pursuit,简称 OMP)。这是一种贪心的压缩感知恢复算法。OMP 用于近似拟合一个带约束的线性模型,其中约束影响模型的非零系数。OMP 是一种前向特征选择方法,可以近似一个固定非零元素的最优向量解,这与最小角回归类似。OMP 的每一步选择都高度依赖于当前的残差,这是其基于贪心算法的特性。OMP 与匹配追踪(MP)相似,但相对于 MP 更优,因为它可以在每次迭代中利用正交投影重新计算残差,从而对先前选择的字典元素进行重建。

  • 贝叶斯岭回归。贝叶斯回归模型假设先验概率,似然函数和后验概率都是正态分布。先验概率是假设模型输出 y y y 是符合均值为 X θ X_{θ} Xθ 的正态分布,正则化参数 alpha 被看作是一个需要从数据中估计得到的随机变量。回归系数 θ \theta θ 的先验分布规律为球形正态分布,超参数为 lambda。我们需要通过最大化边际似然函数来估计超参数 alpha 和 lambda,以及回归系数 θ \theta θ。拟合一个贝叶斯岭模型。有关此实现的详细信息以及正则化参数 lambda(权重的精度)和 alpha(噪声的精度)的优化,请参阅备注部分。如果我们手头的数据集中存在大量的缺失数据或者数据之间存在矛盾,这种情况下的数据我们称之为 “病态数据”。在面对这种病态数据的时候,BayesianRidge(贝叶斯岭回归)是一个值得考虑的选择。它对于病态数据具有很强的鲁棒性,即使在数据不完整或存在矛盾的情况下也能较好地工作,而且它在模型训练过程中不需要通过交叉验证来选择超参数,这一点相比其他一些模型来说更为方便。不过,需要注意的是,虽然 BayesianRidge 对于病态数据处理较为理想,但它在推断过程中需要极大化似然函数,这个计算过程通常比较耗时。因此,在时间资源有限的情况下,一般不推荐在所有情况下使用 BayesianRidge。只有当数据确实存在很大问题,且其他方法难以应用或效果不佳时,采用 BayesianRidge 会是一个较好的选择。

  • 贝叶斯 ARD 回归。ARD(Automatic Relevance Determination)表示自动相关性确定。该方法使用 ARD 先验来拟合回归模型的权重,其中权重假设为高斯分布。同时,它会估计参数 lambda(权重分布的精度)和 alpha(噪声分布的精度),这个估计过程是通过迭代程序(即证据最大化)来完成的。ARDRegression 和 BayesianRidge 都是回归分析中的贝叶斯回归方法,它们在很多方面是类似的,但主要的区别在于对回归系数 θ \theta θ 的先验分布假设上有所不同。BayesianRidge 模型假设 θ \theta θ 的先验分布是球形正态分布,即假设所有方向上的变异性是相同的。这种假设意味着所有的回归系数共享一个相同的规模参数 lambda,因此,对于 θ \theta θ 的先验分布,我们只需要设定一个 lambda 值。相比之下,ARDRegression 放弃了 BayesianRidge 中对于球形高斯分布的假设,转而采用了一个与坐标轴平行的椭圆形高斯分布作为 θ \theta θ 的先验分布。这种做法意味着 θ \theta θ 的每一个维度都可以有其特定的规模参数 lambda,因此,与 BayesianRidge 相比,ARDRegression 模型中的 lambda 是一个含有 n n n 个维度的向量,其中 n n n θ \theta θ 的维度。即,每个回归系数可以有自己的规模参数 lambda,这允许模型为每个系数捕获不同程度的重要性。ARDRegression 同样通过最大化边际似然函数来估计超参数 alpha 和 lambda 向量,以及回归系数 θ \theta θ。通过这种方式,ARDRegression 可以根据数据自动调整 θ \theta θ 的先验分布,从而更灵活地适应不同的数据特征和结构。

  • 异常值鲁棒回归器是一种用来处理异常值的方法。它包括了几种不同的回归技术,例如 Huber 回归、分位数回归、RANSAC 回归和 Theil-Sen 回归。这些方法可以有效地处理数据中的异常值,使得回归模型更加稳健和准确。

  • 广义线性模型(GLM)用于回归预测,包括泊松分布、Tweedie 分布和 Gamma 分布。这些模型不仅允许预测目标具有正态分布以外的误差分布,还可以处理非正态分布的因变量。此外,它们还可以通过链接函数将自变量和因变量联系在一起。GLM 可以适用于多种类型的数据,如连续型数据、计数型数据和二分类数据等。


三、非线性模型

非线性回归是一种非线性模型,通过特征的非线性组合 / {/} /交互来预测连续值标签。在回归预测实践中,集成树模型是最常用的,因为它们具有适应异构数据、计算高效、泛化性能好和简单易用等优势

数据竞赛三巨头:XGBoost、LightGBM、CatBoost(极端梯度提升机及其变体)

  • XGBoost 官方文档:https://xgboost.readthedocs.io/en/stable/

  • LightGBM 官方文档:https://lightgbm.readthedocs.io/en/stable/

  • CatBoost 官方文档:https://catboost.ai/

其他:

选择普通非线性回归的期望函数通常取决于我们对系统响应曲线的形状以及物理和化学属性行为的了解。可能的非线性函数包括但不限于多项式、指数、对数、S 形和渐近曲线。您需要指定一个既符合您已有的知识,又满足非线性回归假设的函数。尽管可以灵活地指定各种期望函数,但确定最适合数据的函数可能需要大量的精力。这通常需要进行额外的研究、利用专业领域知识以及进行试错分析。此外,非线性方程在确定每个预测变量对响应的影响时可能不如线性方程直观。

决策树回归。CART 决策树可以应用于回归预测。当进行预测时,新样本从根节点开始,根据其特征值在每个节点被分配到左子节点或右子节点,直至到达叶节点。这个叶节点中所有训练样本标签的平均值就是新样本的预测值。

支持向量机回归。支持向量机能够应用于回归预测任务,主要得益于其ε-不敏感损失函数和核函数技巧。这两个特性使得 SVR 能够处理线性和非线性问题,并防止过拟合,因此它是一种有效的回归预测模型。

KNN 回归。KNN 是一种基于实例的学习方法,也可以称为懒惰学习。其工作原理是:当有一个新的数据点需要预测时,KNN 会在已知的数据集中找出与这个新数据点最接近的 K 个点,然后根据这些邻居的属性来预测新数据点的属性。在分类任务中,KNN 通常会选择这些邻居中最常见的类别作为新数据点的类别。而在回归任务中,KNN 通常计算这些邻居的平均值或者中位数,并将这个值作为新数据点的预测值。

普通神经网络回归。多层感知器 MLP,将样本的特征矩阵映射到样本标签空间。开发流程:网络初始化后,进行前向计算,反向传播和优化(损失函数通常为均方误差 MSE),然后进行迭代训练。这种方法也常用于回归预测。

随机森林回归。随机森林是一种基于 Bagging 范式的集成学习算法,其关注降低方差。数据随机:随机森林算法首先创建多个决策树,每棵树都在数据集的一个随机子集上进行训练。这种过程被称为自助采样(bootstrap sampling)。特征选择:在构建决策树的过程中,随机森林会在每个节点处从特征的随机子集中选择最优特征进行分割。这种方法增强了模型的多样性,从而降低了过拟合的风险。对于回归问题,最终的预测结果是所有决策树预测结果的平均值。

深度森林(DeepForest)回归 。周志华老师团队的一项工作 DeepForest,它是一种新颖的基于决策树的集成学习方法。深度森林主要由多粒度扫描和级联森林两个部分构成。其中,多粒度扫描通过滑动窗口技术获取多个特征子集,以增强级联森林的差异性。而级联森林则是通过级联方式将决策树组成的森林实现表征学习。深度森林继承了深度学习对样本特征属性的逐层处理机制,同时克服了深度学习参数依赖性强、训练开销大以及仅适用于大数据等缺点。

Extra trees 回归(Extra trees 是 Extremely randomized trees 的简称)。这也是一种使用决策树的集成学习方法,它与随机森林类似,但速度更快。Extra trees 会创建许多决策树,但每棵树的采样都是随机的,可以设置是否有放回采样。每棵树还会从全部特征集中随机选择特定数量的特征。Extra trees 最重要也是最独特的特点是随机选择特征的分割值。该算法不是使用基尼值或熵值计算局部最优值来分割数据,而是随机选择一个分割值。这就使得树具有多样性和非相关性,能够有效抑制过拟合。

AdaBoost 回归。AdaBoost 是一种关注降低偏差的基于 Boosting 范式的集成学习算法。AdaBoost 回归的基本步骤包括:(1)初始化训练样本的权重。每个样本的初始权重都是相等的;(2)对于每一轮迭代:使用当前的样本权重来训练一个弱学习器(例如决策树),计算这个弱学习器的预测误差,根据预测误差来计算这个弱学习器的权重,更新样本的权重;(3)将所有弱学习器的预测结果进行加权求和,得到最终的预测结果。

基于直方图的梯度提升回归(HistGradientBoostingRegressor)。scikit-learn 改进的基于直方图的梯度提升回归,在大型数据集(n_samples >= 10,000)上,该估计器比 GradientBoostingRegressor 快得多。该估计器本身支持缺失值(NaNs)。在训练过程中,树生长器在每个分裂点学习,并根据潜在增益决定缺失值的样本应该进入左子节点还是右子节点。在预测时,具有缺失值的样本将被相应地分配到左子节点或右子节点。如果在训练过程中对某个特征没有遇到缺失值,那么具有缺失值的样本将被映射到具有最多样本的子节点。这个算法的灵感来自于 LightGBM。

TabNet。TabNet 是由 Google 发布的一种针对于表格数据(Tabular data)设计的深度神经网络,它通过类似加性模型的序列注意力机制实现了 instance-wise 的特征选择,并且通过 encoder-decoder 框架实现了自监督学习,可用于下游学习任务如回归预测和分类预测。

交互网络上下文嵌入(Interaction Network Contextual Embedding,INCE)。INCE 是一种用于表格数据的深度学习模型,采用图神经网络(GNNs),更具体地说,使用交互网络进行上下文嵌入。编码器模型首先将每个表格数据集特征映射到潜在向量或嵌入中,然后解码器模型获取这些嵌入并用于解决有监督学习任务。编码器模型由 Columnar 嵌入和 Contextual 嵌入两部分组成;解码器模型由一个针对解决回归任务调整过的多层感知机(MLP)组成。

Local Cascade Ensemble:在 Python 中增强了 Bagging 和 Boosting 的组合。该工具包实现了本地级联集成(LCE),这是一种新颖的机器学习方法,可进一步提高目前最先进的方法 Random Forest 和 XGBoost 的预测性能。LCE 结合了它们各自的优势,并采用了一种互补的多样化方法,以获得更好的泛化预测模型。LCE 与 scikit-learn 兼容,因此可以与 scikit-learn pipeline 和模型选择工具进行交互。

门控加性树集成(Gated Additive Tree Ensemble, GATE)。GATE 是一种新颖的、高性能、参数效率和计算效率高的深度学习架构,适用于表格数据,即门控加性树集成(GATE)。GATE 使用了灵感来自于 GRU 的门控机制作为内置特征选择机制的特征表示学习单元,并将其与一组可微分、非线性决策树集成在一起,通过简单的自注意力重新加权,从而实现对期望输出值的预测。

深度自动特征学习的门控自适应网络(Gated Adaptive Network for Deep Automated Learning of Features)是 GATE 的简化版本,并且比 GATE 更高效。GANDALF 将 GFLU 作为主要学习单元,并在过程中引入了一些加速机制。由于超参数调整非常少,使其成为一个易于使用和调整的模型。

已有一个用于对表格数据建模的深度学习模型的标准框架 - pytorch_tabular:https://github.com/manujosephv/pytorch_tabular

PyTorch Tabular 是一个旨在使深度学习与表格数据易于使用和可访问的库。它建立在 PyTorch 和 PyTorch Lightning 等强大工具的基础上。库的设计原则包括低阻力、易用性、可扩展性和易于部署。它提供了多种模型和功能,如前馈网络、神经网络、自动特征交互学习等。安装和使用方法也很简单,可以通过 pip 安装并参考文档进行使用。如果在科学出版物中使用 PyTorch Tabular,请引用相关论文和软件。

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

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

相关文章

C# Stable Diffusion using ONNX Runtime

C# Stable Diffusion using ONNX Runtime github地址:https://github.com/saddam213/OnnxStack Welcome to OnnxStack! OnnxStack transforms machine learning in .NET, Seamlessly integrating with ONNX Runtime and Microsoft ML, this library empowers you …

OpenAI CEO透露GPT-4表现“有点糟糕”;通义听悟音视频问答登场;Adobe整合AI功能助力3D设计创作

🦉 AI新闻 🚀 OpenAI CEO透露GPT-4表现“有点糟糕” 摘要:OpenAI的首席执行官Sam Altman在与Lex Fridman的访谈中表示,GPT-4的表现并不令人满意,认为其“有点糟糕”,同时对即将到来的GPT-5寄予厚望。Altm…

HarmonyOS NEXT应用开发之Web组件预览PDF文件实现案例

介绍 本案例通过Web组件实现预览本地PDF文件和预览网络PDF文件,代码为Tabs容器组件包含了两个独立的TabContent子组件,分别标示为预览本地PDF文件和预览网络PDF文件。每个子组件内部构建一个Web组件。第一个Web组件利用resource协议关联本地PDF文件路径…

uniapp——第3篇:自定义组件、组件间传数据

前提,建议先学会前端几大基础:HTML、CSS、JS、Ajax,还有一定要会Vue!(Vue2\Vue3)都要会!!!不然不好懂 一、组件是啥玩意? 我之前讲vue2的文章讲过 Vue全家桶:vue2vue3全…

(css)步骤条el-steps区分等待、进行中、完成三种状态的图片

(css)步骤条el-steps区分等待、进行中、完成三种状态的图片 效果&#xff1a; <el-steps :active"active" finish-status"success" class"steps"><el-step title"选择.."></el-step><el-step title"..规则&…

Docker容器化技术(docker-compose示例:部署discuz论坛和wordpress博客,使用adminer管理数据库)

安装docker-compose [rootservice ~]# systemctl stop firewalld [rootservice ~]# setenforce 0 [rootservice ~]# systemctl start docker[rootservice ~]# wget https://github.com/docker/compose/releases/download/v2.5.0/docker-compose-linux-x86_64创建目录 [rootse…

【Leetcode】1969. 数组元素的最小非零乘积

文章目录 题目思路代码复杂度分析时间复杂度空间复杂度 结果总结 题目 题目链接&#x1f517; 给你一个正整数 p 。你有一个下标从 1 1 1 开始的数组 n u m s nums nums &#xff0c;这个数组包含范围 [ 1 , 2 p − 1 ] [1, 2^p - 1] [1,2p−1] 内所有整数的二进制形式&…

Python通过Ctypes调用C++类,实测有效

文章目录 前言创建vs dll工程添加外部库编辑代码编译测试参考 前言 在软件开发中&#xff0c;有时候需要Python与C相结合&#xff0c;以充分发挥两者的优势 。Python作为一种高级编程语言&#xff0c;具有简洁易读的特点&#xff0c;适用于快速开发和原型设计。而C则是一种性能…

HarmonyOS/OpenHarmony应用开发-HDC环境变量设置

hdc&#xff08;HarmonyOS Device Connector&#xff09;是 HarmonyOS 为开发人员提供的用于调试的命令行工具&#xff0c;通过该工具可以在 windows/linux/mac 系统上与真实设备或者模拟器进行交互。 hdc 工具通过 HarmonyOS SDK 获取&#xff0c;存放于 /Huawei/Sdk/openhar…

Vmware使用ubuntu报错空间不够

Vmware使用ubuntu报错空间不够 1.vmware修改2.进入镜像进行修改2.1需要下载GParted软件 1.vmware修改 这个需要把硬盘的大小进行扩展 2.进入镜像进行修改 2.1需要下载GParted软件

JAVA每日面经——JVM篇(包含JVM优化)

&#x1f469;&#x1f3fd;‍&#x1f4bb;个人主页&#xff1a;阿木木AEcru &#x1f525; 系列专栏&#xff1a;《Docker容器化部署系列》 《Java每日面筋》 &#x1f4b9;每一次技术突破&#xff0c;都是对自我能力的挑战和超越。 目录 一、什么是JVM&#xff1f;二、JVM由…

综合知识篇13-软件开发模型考点(2024年软考高级系统架构设计师冲刺知识点总结系列文章)

专栏系列文章: 2024高级系统架构设计师备考资料(高频考点&真题&经验)https://blog.csdn.net/seeker1994/category_12593400.html案例分析篇00-【历年案例分析真题考点汇总】与【专栏文章案例分析高频考点目录】(2024年软考高级系统架构设计师冲刺知识点总结-案例…

小程序应用市场的前世今生

最开始的开始&#xff0c;为软件开发者提供软件发布、运营和推广服务的平台称之为软件应用市场&#xff0c;其发展经历了以下3个阶段&#xff1a; 起源阶段&#xff1a;应用市场的起源可以追溯到桌面互联网时代&#xff0c;当时软件的开发和分发主要依靠软件网站。软件开发者可…

【C语言】【牛客】BC136 KiKi判断上三角矩阵

文章目录 题目 BC136 KiKi判断上三角矩阵思路代码呈现 题目 BC136 KiKi判断上三角矩阵 链接: link 思路 这题很简单但是再牛客中属于中等题 我们通过读题发现 2<n<10 &#xff0c;所以我们首先创建一个变量 n 以及一个 10*10 个元素数组 然后题目是判断该矩阵是否是…

windows下常用的DOS命令

DOS&#xff08;Disk Operating System&#xff09;是 Windows 操作系统中的命令行接口&#xff0c;也可以叫命令行窗口。一提到这个&#xff0c;很多初入行计算机的朋友们就是很犯怵&#xff0c;不知所错&#xff0c;好高端&#xff0c;有没有。界面如下&#xff1a; 普通用户…

联想笔记本的声音键没有反应怎么办?

如果我的联想笔记本电脑上的声音按钮没有响应&#xff0c;该怎么办&#xff1f; 如果我的联想笔记本电脑上的声音按钮没有响应&#xff0c;该怎么办&#xff1f; 按下按钮后我无法控制声音。 我该怎么办&#xff1f; 以下是我为您整理的关于联想笔记本声音按键无反应的相关资料…

流畅的 Python 第二版(GPT 重译)(九)

第四部分&#xff1a;控制流 第十七章&#xff1a;迭代器、生成器和经典协程 当我在我的程序中看到模式时&#xff0c;我认为这是一个麻烦的迹象。程序的形状应该只反映它需要解决的问题。代码中的任何其他规律性对我来说都是一个迹象&#xff0c;至少对我来说&#xff0c;这表…

01分布式搜索引擎ES

分布式搜索引擎ES 1.初识elasticsearch1.1.了解ES1.2.倒排索引1.3.es的一些概念 2.索引库操作2.1.mapping映射属性2.2.索引库的CRUD 3.文档操作3.1.新增文档3.2.查询文档3.3.删除文档3.4.修改文档3.5.总结 4.RestAPI4.0.导入Demo工程4.1.创建索引库4.2.删除索引库4.3.判断索引库…

CodeWhisperer插件

一、前言 产品官网地址&#xff1a;What is CodeWhisperer? - CodeWhisperer Amazon CodeWhisperer 是一个通用的、由机器学习驱动的代码生成器&#xff0c;可实时为您提供代码建议。在您编写代码时&#xff0c;CodeWhisperer 会根据您现有的代码和注释自动生成建议。您的个…

Power BI学习(数据可视化)

另一个也可以的工具是&#xff1a;Tableau 还有一个是&#xff1a;神策&#xff0c;主要是用于互联网的app的数据埋点 数据分析的过程&#xff1a; 数据源--数据清洗&#xff08;power query&#xff09;-构建指标 新建度量值&#xff08;power pivot&#xff09;-可视化&…