小工具知识网

当前位置: 首页 > 行业知识 > 【机器学习】常见的四种“回归”算法 - 概述及实战

行业知识

【机器学习】常见的四种“回归”算法 - 概述及实战

2026-10-21 20:50:43 来源:互联网转载

在之前���帖子中,我们概述了常见的分类算法,现在让我们深入了解另一类监督学习 - 回归,其中输出变量是连续的和数字的。 有四种常见的回归模型。

  • 线性回归(Linear Regression)
  • Lasso 回归(Lasso Regression)
  • Ridge 回归 (Ridge Regression)
  • 多项式回归 (Polynomial Regression)

    线性回归

    线性回归寻找自变量和因变量之间的最佳线性关系,从而进行相应的预测。最简单的形式是y = b0 + b1x。当只有一个输入特征时,线性回归模型在二维空间中拟合直线,以最小化预测值和实际值之间的残差。衡量残差大小的常见成本函数(cost function)是残差平方和(RSS)。随着更多特性的引入,简单线性回归演变为多元线性回归 y = b0 + b1x1 + b2x2 + ... + bnxn。

    Lasso回归

    Lasso回归是具有L1正则化 (L1 Regularization)的线性回归变体。简单来说,它只是在试图最小化的回归模型的残差中添加了一个额外的元素。之所以被称为L1正则化,是因为这个添加的正则化项与系数的绝对值成正比。与Ridge回归相比,它更擅长将一些特征的系数降至0,因此适用于特征消除。我们将在之后的“特征重要性”部分回顾这一点。

    Ridge回归

    Ridge回归是线性回归另一种具有L2正则化 (L2 Regularization)的变体。因此,不难推断正则化项是基于系数的平方值的次方。相比于Lasso回归,脊回归具有收敛更快,消耗时间更少的优点。

    Lasso和Ridge的正则化强度由值确定。较大的值会使系数值缩小,使模型更平坦,变化更小。因此,正则化通常用于减少模型过拟合。

    多项式回归

    多项式回归是线性回归的一个变体,它通过多项式特征转换增加了独立变量之间的交互。PolynomialFeatures(degree = 2)被应用来将输入特征转换为最高2次幂。例如,如果原始输入特征是,那么这将扩展特征到。结果是,关系不再是线性的,而是为数据提供了一个非线性的拟合。

    回归模型实战

    现在,让我们比较不同类型的回归模型的性能,并探讨不同的 lambda 值如何影响模型性能。

    1. 数据集概述

    这个实战应用的目标是使用回归模型基于其他因素预测国家的幸福分数,这些因素包括”GDP per capita”, “Social support”, Healthy life expectancy”, “Freedom to make life choices”, “Generosity” 和“Perceptions of corruption”。

    我使用了 Kaggle 上的“世界幸福报告”数据集,该数据集包括156个条目和9个特征。df.describe()被应用以提供数据集的概览。

    2. 数据探索(Data Exploration)和特征工程 (Feature Engineering)

    1) 删除冗余特征

    特征“Overall rank”被删除,因为它是目标“Score”的直接反映。另外,“Country or Region”也被删除,因为它对预测没有带来任何价值。

    2) 单变量分析 (Univariate Analysis)

    应用直方图来理解每个特征的分布。如下图所示,“Social support”似乎呈严重的左偏态,而“Generosity” 和“Perceptions of corruption” 是右偏态 - 这为转换的特征工程技术提供了信息。

    # univariate analysisfig = plt.figure(figsize=(16, 8))  i = 0for column in df:    sub = fig.add_subplot(2,4 , i + 1)    sub.set_xlabel(column)    df[column].plot(kind = 'hist')    i = i + 1
    # measure skewnessskew_limit = 0.7for col in df.columns:    skewness = df[col].skew()    if skewness + skew_limit  skew_limit:        print(col, ": right skewed", str(skewness))    else:         print(col, ": not skewed", str(skewness))

    3) 平方根转换 (square root transformation)

    np.sqrt被应用来转换右偏特征 (right skewed features)- "Generosity" 和 "Perceptions of corruption"。结果,这两个特征变得更接近正态分布。

    4)对数变换 (log transformation)

    np.log(2-df['Social support'])被应用来转换左偏特征(left skewed features)。并且偏度明显从1.13减少到0.39。

    5)双变量分析(bivariate analysis)

    我们可以使用sns.pairplot(df)来可视化转换后特征之间的相关性。从散点图可以看出,“GDP per capita”, “Social support”, “Healthy life expectancy”与目标特征“Score”相关,因此可能有更高的系数值。

    6) 特征缩放 (feature scaling)

    由于正则化技术改变了系数值,因此特征应转换为相同的规模。我们可以对三个缩放器进行了实验 - StandardScaler,MinMaxScaler和RobustScaler。

    from sklearn.model_selection import train_test_splitX = df.drop(['Score'], axis=1)y = df['Score']X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)print(X_train.shape, X_test.shape)

    3. 回归模型比较

    现在让我们比较以下三种线性回归模型 - 线性回归,Ridge回归和Lasso回归。

    • lr = LinearRegression().fit(X_train, y_train)
    • l2 = Ridge(alpha = 0.1).fit(X_train, y_train)
    • l1 = Lasso(alpha = 0.001).fit(X_train, y_train)

      1) 预测比较

      首先,将三个模型的预测值与实际值在一个散点图中进行可视化,这表明在当前的参数设置下,它们的预测大部分与彼此重叠。

      2) 特征重要性

      第二步是实验不同的(在scikit-learn中是alpha)值如何影响模型。最重要的是,特征的重要性和系数值如何随着alpha值从0.0001增加到1而改变。

      根据Lasso和Ridge模型生成的系数值,“GDP per capita”, “Social support”, “Healthy life expectancy” 是最重要的前3个特征。这与之前的散点图的发现一致,表明它们是决定国家幸福分数的主要因素。并列比较还表明,alpha值的增加对Lasso和Ridge的影响程度不同,Lasso回归中的特征被更强烈地抑制。这就是为什么Lasso通常被用于特征选择(feature selection)。

      3) 应用多项式效应

      此外,我进行了引入多项式特征的实验 - 这增加了特征的数量,从6增加到27。

      # apply polynomial effectsfrom sklearn.preprocessing import PolynomialFeaturespf = PolynomialFeatures(degree = 2, include_bias = False)X_train_poly = pf.fit_transform(X_train)X_test_poly = pf.fit_transform(X_test)

      4. 模型评估

      最后一步,评估并比较Lasso回归与Ridge回归模型的性能,和多项式的效应。在下面的代码中,我创建了四个模型:

      • l2:没有多项式特征的Ridge回归
      • l2_poly:带有多项式特征的Ridge回归
      • l1:没有多项式特征的Lasso回归
      • l1_poly:带有多项式特征的Lasso回归

        常用的回归模型评估指标有MAE、MSE、RMSE和R Squared。在这里我使用了MSE(均方误差)。

        1)通过比较Ridge和Lasso,可以看出,当alpha值较低时,它们的精度相似,但当alpha接近1时,Lasso的精度明显下降。

        2)通过比较多项式的效应,我们可以看出,多项式一般会降低MSE - 因此提高模型性能。这种效果在Ridge回归中更为显著,当alpha增加到1时,以及在Lasso回归中更为显著,当alpha接近0.0001时。

        尽管如此,选择了 alpha(lambda)值为 0.001 的 Lasso 回归。这是因为在应用多项式之前,Lasso在三个模型中产生的平均绝对误差最低。尽管多项式特征提高了模型的准确性,但它也通过增加特征之间的交互作用降低了模型的可解释性(explainability)。

        根据当前的模型,“GDP per capita”, “Social support”, “Healthy life expectancy” 是预测的主要因素。建议的下一步是尝试使用正则化模型的不同alpha值,特别是Lasso回归。由于Lasso回归更擅长将特征重要性归零,这可能会对哪些特征对预测的贡献最小,并且可以在特征选择(feature selection)阶段被排除,以此避免模型过拟。

上一篇:外星人的主机是什么系统吗

下一篇:Win10任务栏图标大小调整秘籍,个性化桌面,轻松上手!