大部分刚入门的小伙伴,学习机器学习和数据科学的第一个算法是线性回归,它简单易懂。由于其功能有限,它不太可能成为工作中的最佳选择。大多数情况下,线性回归被用作基线模型来评估和比较研究中的新方法。在处理实际问题时,你应该了解并尝试许多其他回归算法。一方面可以系统学习回归算法,另外一方面在面试中也常用到这些算法。在本文中,我们将通过使用Scikit-learn和XGBoost的动手实践来学习9种流行的回归算法

在正式开始之前,给大家整理了一份人工智能零基础学习资料包:

需要的小伙伴,关注我的公粽号:AI技术星球,回复:555,即可获取

【1. 机器学习 基础】:决策树、 线性回归 、SVM、随机森林、贝叶斯、聚类算法、集成算法等机器经典算法源码+教程

【2. 深度学习 基础】:CNN+RNN+GAN+GNN 神经网络

【3.计算机视觉基础】:OpenCV+Pytorch+YOLO+图像分割等

【4.面试资料汇总】:阿里、字节、腾讯登头部大厂算法岗面试题库

【5.论文资料汇总】:CVPR/ICCV/AAAI/ECCV等顶会顶刊论文汇总

【6.大模型资料汇总】:大模型微调部署教程、面试题库、实战项目

线性回归

线性回归通常是人们学习机器学习和数据科学的第一个算法。线性回归是一种线性模型,它假设输入变量(X)和单个输出变量(y)之间存在线性关系。一般来说,有两种情况:

  ·单变量线性回归:它对单个输入变量(单个特征变量)和单个输出变量之间的关系进行建模。

  ·多变量线性回归(也称为多元线性回归):它对多个输入变量(多个特征变量)和单个输出变之间的关系进行建模这个算法很常见,以至于Scikit-learn在LinearRegression0中内置了这个功

能。让我们创建一个LinearRegression对象并将其拟合到训练数据中:

训练完成后,我们可以在coef_属性中检查LinearRegression找到的系数参数:

现在采用该模型并为训练数据拟合一条线

关于线性回归的几个关键点:

  .快速且易于建模

  ·当要建模的关系不是非常复杂并且您没有大量数据时,它特别有用

  ·非常直观的理解和解释

  ·它对异常值非常敏感

多项式回归

当我们想要为非线性可分数据创建模型时,多项式回归是最受欢迎的选择之一。它类似于线性回归,但使用变量×和y之间的关系来找到绘制适合数据点的曲线的最佳方法。对于多项式回归,一些自变量的幂大于1。例如,我们可能会提出如下二次模型:

Scikit-learn的PolynomialFeatures内置了这种方法。首先,我们需要生成一个由所有具有指定度数的多项式特征组成的特征矩阵:

接下来,让我们创建一个LinearRegression对象并将其拟合到我们刚刚生成的特征矩阵X_poly中

现在采用该模型并为训练数据×_plot拟合一条线,如下所示:

关于多项式回归的几个关键点:

  ·能够对非线性可分数据进行建模;线性回归不能做到这一点。一般来说,它更加灵活,可以对一些相当复杂的关系进行建模

  ·完全控制特征变量的建模(要设置的指数)

  ·需要精心设计。需要一些数据知识才能选择最佳指数

  ·如果指数选择不当,则容易过度拟合

支持向量机回归

支持向量机在分类问题中是众所周知的。SVM在回归中的使用称为支持向量回归(SVR)。Scikit-learn在SVRO中内置了这种方法。在拟合SVR模型之前,通常最好的做法是执行特征缩放,以便每个特征具有相似的重要性。首先,让我们使用StandardScaler()执行特征缩放:

接下来,我们创建一个SVR对象,内核设置为“rbf”,伽马设置为"auto”。之后,我们调用fitO使其适合缩放的训练数据:

现在采用该模型并为训l练数据scaledX拟合一条线,如下所示:

关于支持向量回归的几个关键点:

  ·它对异常值具有鲁棒性,并且在高维空间中有效

 ·它具有出色的泛化能力(能够正确适应新的、以前看不见的数据)

  ·如果特征数量远大于样本数量,则容易过拟合

决策树回归

决策树是一种用于分类和回归的非参数监督学习方法。目标是创建一个模型通过学习从数据特征推断出的简单决策规则来预测目标变量的值。一棵树可以看作是一个分段常数近似。决策树回归也很常见,以至于Scikit-learn将它内置在DecisionTreeRegressor中,可以在没有特征缩放的情况下创建,DecisionTreeRegressor对象,如下所示:

现在采用该模型并将其拟合到训练数据中:

关于决策树的几个关键点:

  ·易于理解和解释。树可以可视化。

  .适用于分类值和连续值

  ·使用DT(即预测数据)的成本与用于训练树的数据点数量成对数

  ·决策树的预测既不平滑也不连续(如上图所示为分段常数近似)

随机森林回归

随机森林回归基本上与决策树回归非常相似。它是一个元估计器,可以在数据集的各种子样本上拟合多个决策树,并使用平均来提高预测准确性和控制过拟合,随机森林回归器在回归中可能会或可能不会比决策树表现更好(虽然它通常在分类中表现更好),因为树构造算法本质上存在微妙的过拟合-欠拟合权衡。随机森林回归很常见,以至于Scikit-learn将它内置RandomForestRegressor中。首先,我们需要创建一个具有指定数量的估计器的RandomForestRegressor对象,如下图所示:

现在采用该模型并将其拟合到训练数据中:

关于随机森林回归的几点:

  ·减少决策树中的过度拟合并提高准确性

  .它也适用于分类值和连续值

  .需要大量计算能力和资源,因为它适合许多决策树来组合它们的输出

LASSO回归

LASSO回归是使用收缩的线性回归的变体。收缩是将数据值收缩到中心点作为平均值的过程。这种类型的回归非常适合显示重度多重共线性(特征相互之间高度相关)的模型。Scikit-learn内置在LassoCV中。

关于Lasso回归的几点:

  ·它最常用于消除自动变量和选择特征

  ·它非常适合显示重度多重共线性(特征相互之间高度相关)的模型

  ·LASSO回归利用L1正则化

  ·LASSO回归被认为比Ridge更好,因为它只选择了一些特征并将其他特征的系数降低到零

岭回归

岭回归与LASSO回归非常相似,因为这两种技术都使用了收缩。Ridge和LASSO回归都非常适合显示重度多重共线性(特征相互之间高度相关)的模型。它们之间的主要区别在于Ridge使用L2正则化,这意味着没有一个系数会像LASSO回归中那样变为零(而是接近零)Scikit-learn内置在RidgeCV中。

关于岭回归的几点:

  ·它非常适合显示重度多重共线性(特征相互之间高度相关)的模型

  ·岭回归使用L2正则化。贡献较小的特征将具有接近于零的系数

  .由于L2正则化的性质,岭回归被认为比LASSO更差

ElasticNet回归

ElasticNet是另一个使用L1和L2正则化训练的线性回归模型。它是Lasso和Ridge回归技术的混合体,因此它也非常适合显示重度多重共线性(特征相互之间高度相关)的模型。在Lasso和Ridge之间进行权衡的一个实际优势是它允许Elastic-Net在旋转下继承Ridge的一些稳定性。Scikit-learn内置在ElasticNetCV中。

XGBoost回归

XGBoost是梯度提升算法的一种高效且有效的实现。梯度提升是指一类可用于分类或回归问题的集成机器学习算法。XGBoost是一个开源库,最初由ChenTianqiChen在其2016年题为"XGBoost:AScalableTreeBoosting System”的论文中开发。该算法被设计为在计算上既高效又高效。第一步是安装XGBoost库(如果尚未安装)

可以通过创建XGBRegressor的实例来定义XGBoost模型:

·n_estimators:集成中树的数量,通常会增加,直到看不到进一步的改进

·max_depth:每棵树的最大深度,通常值在1到10之间。

·eta:用于加权每个模型的学习率,通常设置为较小的值,例如0.3、0.1、0.01或更小

·subsample:每棵树中使用的样本数,设置为0和1之间的值,通常为1.0以使用所有样本

·colsample_bytree:每棵树中使用的特征(列)数,设置为0到1之间的值,通常为1.0以使用所有特征

关于XGBoost的几点:

  ·XGBoost在稀疏和非结构化数据上表现不佳

  ·该算法被设计为计算效率和高效,但是对于大型数据集的训练时间仍然相当长

  .它对异常值很敏感

结论

在本文中,我们介绍了9种流行的回归算法,并使用Scikit-learn和XGBoost进行了动手实践。最好将它们放在您的工具箱中,这样就可以尝试不同的算法并为实际问题找到最佳回归模型。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐