文章目录
- 一、前言
- 二、线性模型
- 三、非线性模型
🍉 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(Y∣X=x) 是 X X X 到 y y y 的回归函数。简单来说,就是将样本的特征矩阵映射到样本标签空间。
本文全面整理了各种常用的回归预测模型,旨在帮助读者更好地学习回归预测建模。
二、线性模型
线性回归是一种线性模型,通过特征的线性组合来预测连续值标签。线性回归通过拟合系数 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,请引用相关论文和软件。