当前位置: 首页 > news >正文

【漫话机器学习系列】154.岭回归(Ridge Regression)

岭回归(Ridge Regression)详解

1. 引言

岭回归(Ridge Regression)是一种改进的线性回归方法,它通过引入正则化项来解决普通最小二乘法(OLS, Ordinary Least Squares)可能遇到的多重共线性问题。岭回归的核心思想是在损失函数中加入参数的 L2 正则化,从而使模型更具稳定性,减少过拟合的风险。

2. 岭回归的数学表达式

普通的线性回归模型可以表示为:

Y = X\beta + \epsilon

其中:

  • Y 为目标变量(因变量)

  • X 为特征矩阵(自变量)

  • β 为回归系数

  • ϵ 为误差项

普通最小二乘法的目标是最小化残差平方和(RSS, Residual Sum of Squares):

RSS = \sum_{i=1}^{n} (y_i - \hat{y}_i)^2

岭回归在此基础上增加了一个正则化项,即回归系数的平方和:

RSS + \lambda \sum_{j=1}^{p} \beta_j^2

其中:

  • λ 为调节参数(Regularization Parameter),用于控制正则化的强度

  • \sum_{j=1}^{p} \beta_j^2​ 为所有回归系数的平方和

3. 岭回归的作用

岭回归的主要作用是通过 L2 正则化(即回归系数的平方和)来防止模型过拟合。具体来说:

  1. 减少多重共线性影响

    • 当自变量之间高度相关时,普通最小二乘法可能会得到不稳定的回归系数,即某些回归系数的数值可能会非常大或方向不稳定。

    • 岭回归通过对回归系数施加约束,使其保持在较小的范围内,从而减少多重共线性的影响。

  2. 特征缩减(Feature Shrinkage)

    • 岭回归不会像 Lasso 回归那样将某些特征的系数直接降为 0,而是会缩小所有回归系数的绝对值,使其更接近于 0。

    • 这样可以避免模型对某些特征的依赖过大,提高泛化能力。

  3. 降低模型的方差

    • 在高维数据集中,普通最小二乘法容易因噪声导致模型方差较大。

    • 通过正则化项,岭回归减少了系数的波动,从而降低了模型的方差,提高了稳定性。

4. 岭回归的调节参数(λ)

调节参数 λ\lambdaλ 控制正则化的强度:

  • λ→0 时,岭回归退化为普通最小二乘回归(OLS)。

  • λ 较小时,模型仍然倾向于普通最小二乘法,但稍有正则化作用。

  • λ 较大时,正则化作用增强,回归系数被压缩得更接近 0,但不会完全归零。

λ 的选择

选择合适的 λ 值通常需要使用交叉验证(Cross Validation)来找到最优值。在实际应用中,可以使用以下方法:

  • 网格搜索(Grid Search):在一组候选的 λ 值中进行搜索,选择最优的 λ 值。

  • 交叉验证(Cross Validation):使用 K 折交叉验证(K-Fold Cross Validation)来评估不同 λ\lambdaλ 值下的模型表现,选取最优的 λ\。

5. 岭回归 vs. Lasso 回归

Lasso(Least Absolute Shrinkage and Selection Operator)回归是一种与岭回归类似的正则化方法,但它使用的是 L1 正则化(即参数的绝对值之和):

RSS + \lambda \sum_{j=1}^{p} |\beta_j|

与岭回归相比,Lasso 回归的特点是:

  • Lasso 可将某些回归系数压缩为 0,从而实现特征选择,而岭回归只能缩小系数,但不会归零。

  • Lasso 更适用于高维稀疏数据集,因为它可以自动选择重要的特征并丢弃不重要的特征。

  • 岭回归适用于所有特征都有贡献的情况,因为它不会让某些特征的系数变为 0。

6. 岭回归的应用场景

由于岭回归能够有效减少过拟合并提高模型的稳定性,因此它被广泛应用于:

  1. 高维数据建模

    • 当数据集的维度(特征数量)远大于样本数量时,普通回归方法容易出现过拟合,而岭回归可以很好地解决这个问题。

  2. 多重共线性问题

    • 在经济学、金融建模等领域,自变量之间往往存在较高的相关性,岭回归可以有效降低多重共线性的影响,使回归系数更稳定。

  3. 医疗和生物统计分析

    • 在基因研究、疾病预测等领域,数据通常是高维的,并且不同基因之间可能存在共线性,岭回归可以帮助构建更稳定的预测模型。

  4. 推荐系统

    • 在个性化推荐系统中,特征维度通常很高,岭回归可以有效控制模型复杂度,提高泛化能力。

7. 实现岭回归(Python 示例)

在 Python 中,我们可以使用 scikit-learn 库来实现岭回归:

from sklearn.linear_model import Ridge
from sklearn.model_selection import train_test_split
from sklearn.metrics import mean_squared_error
import numpy as np

# 生成示例数据
np.random.seed(42)
X = np.random.rand(100, 5)
y = 3*X[:, 0] + 2*X[:, 1] - X[:, 2] + np.random.randn(100) * 0.1

# 划分数据集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 训练岭回归模型
ridge = Ridge(alpha=1.0)  # 这里的 alpha 就是 λ
ridge.fit(X_train, y_train)

# 预测
y_pred = ridge.predict(X_test)

# 计算均方误差
mse = mean_squared_error(y_test, y_pred)
print(f'均方误差:{mse}')
均方误差:0.021834065378890568

8. 总结

岭回归是一种强大的回归方法,它通过 L2 正则化减少过拟合,提高模型的稳定性。相比普通最小二乘回归,它更适用于高维数据和多重共线性问题,但不能像 Lasso 一样进行特征选择。适当调整正则化参数 λ\lambdaλ 是使用岭回归的关键,通常可以使用交叉验证来选择最优值。


通过本文的详细讲解,相信你已经掌握了岭回归的基本概念、数学原理、应用场景以及如何在 Python 中实现它。如果你对岭回归的实际应用有兴趣,可以尝试使用不同的数据集进行实验,并观察正则化参数 λ 对模型的影响!

相关文章:

  • 【MySQL笔记】库操作与表操作
  • LabVIEW发电平台数据采集系统
  • 云计算中的DevOps是什么?为什么它很重要?
  • SmolVLM2: 让视频理解能力触手可及
  • 介绍一个测试boostrap表格插件的好网站!
  • MyBatisSystemException:Parameter ‘item‘ not found.
  • Unity/C# 常用XML读写方式详解(LINQ to XML、XmlReader/Writer)
  • SLAM十四讲【一】基本概念
  • GPT-5 将免费向所有用户开放?
  • 记录flutter编译项目遇到的问题
  • 2025年01月02日浙江鼎永前端面试
  • C语言入门教程100讲(6)类型修饰符
  • 如何彻底解决Docker Desktop中Kubernetes无法启动问题
  • 【RabbitMQ】RabbitMQ的基本架构是什么?包括哪些核心组件?
  • 建筑安全员考试:“时间管理” 关键词统筹的备考规划
  • 考研课程安排(自用)
  • Ubuntu 系统安装 Redis 的详细步骤
  • 一键部署 GPU Kind 集群,体验 vLLM 极速推理
  • CUDA 学习(2)——CUDA 介绍
  • 三层网络 (服务器1 和 服务器2 在不同网段)
  • 当我们提起拉动消费时,应该拉动什么消费?
  • 价格周报|供需回归僵局,本周生猪均价与上周基本持平
  • 匈牙利外长称匈方已驱逐两名乌克兰外交官
  • 对话哭泣照被恶意盗用成“高潮针”配图女生:难过又屈辱
  • 公募基金解读“一揽子金融政策”:增量财政空间或打开,有助于维持A股活力
  • 人民日报钟声:中方维护自身发展利益的决心不会改变