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

线性回归与正则化

一、什么是回归算法

        1、回归算法是一种有监督算法。

        2、回归算法用来建立“解释”变量(自变量x)和观测值(应变量y)之间的关系:从机器学习的角度来讲,用于构建一个算法模型(函数)来做属性(x)与标签(y)之间的映射关系,在算法的学习过程中,试图寻找一个函数h:R^d——>R使得参数之间的关系拟合性最好

        3、回归算法中算法(函数)的最终结果是一个连续的数据值,输入值(属性值)是一个d维度的属性/数值向量

二、最小二乘法   

1、最小二乘法原理

最小二乘法通过最小化误差平方和寻找数据的最佳函数匹配。对于线性模型 $y = X\beta + \epsilon$,目标是最小化残差平方和: $ \min_{\beta} \sum_{i=1}^{n} (y_i - X_i \beta)^2 = \min_{\beta} | y - X \beta |^2 $

2、损失函数定义

损失函数通常定义为残差平方和: $ L(\beta) = (y - X\beta)^T (y - X\beta) $

3、求解最优值的步骤

展开损失函数: $ L(\beta) = y^T y - 2 \beta^T X^T y + \beta^T X^T X \beta $

$\beta$求导并令导数为零: $ \frac{\partial L(\beta)}{\partial \beta} = -2 X^T y + 2 X^T X \beta = 0 $

解得正规方程: $ X^T X \beta = X^T y $

$X^T X$可逆,则最优解为: $ \hat{\beta} = (X^T X)^{-1} X^T y $

三、过拟合和欠拟合

1、过拟合(Overfitting)

过拟合指模型在训练数据上表现优异,但在新数据(测试数据或真实场景)上表现较差。通常由于模型过于复杂或训练数据量不足导致,模型过度捕捉了训练数据中的噪声或细节而非通用规律。

特点

  • 训练误差低,测试误差高。
  • 模型复杂度显著高于数据真实规律。
  • 常见于决策树、深度学习等高容量模型中。

解决方法

  • 增加训练数据量或使用数据增强。
  • 降低模型复杂度(如减少神经网络层数)。
  • 使用正则化技术(L1/L2正则化)。
  • 采用交叉验证评估模型泛化能力。

2、欠拟合(Underfitting)

欠拟合指模型在训练数据和新数据上均表现不佳,通常因模型过于简单或特征不足,无法捕捉数据中的有效模式。

特点

  • 训练误差和测试误差均较高。
  • 模型无法学习数据的基本结构。
  • 常见于线性模型或特征工程不充分时。

解决方法

  • 增加模型复杂度(如使用更高阶多项式)。
  • 改进特征工程(添加更有意义的特征)。
  • 减少正则化强度(如降低L2正则化系数)。
  • 延长训练时间或调整优化算法(如学习率)。

3、过拟合与欠拟合的关系

两者是模型性能与复杂度权衡的结果。理想情况是找到泛化误差最小的平衡点。

模型复杂度与误差关系

  • 欠拟合区:模型过于简单,训练和测试误差均高。
  • 平衡区:模型复杂度适中,测试误差最低。
  • 过拟合区:模型过于复杂,训练误差低但测试误差高。

可通过学习曲线或验证曲线直观判断当前模型状态。

四、L1正则和L2正则

1、L1正则(Lasso正则)

L1正则通过在损失函数中添加权重参数的绝对值之和作为惩罚项,公式表示为:
$ \text{Loss} = \text{Original Loss} + \lambda \sum_{i=1}^{n} |w_i| $
其中,$ \lambda $ 是正则化系数,$ w_i $为模型权重。

L1正则倾向于产生稀疏解,即部分权重会被压缩为零,适用于特征选择场景。其效果类似于对权重施加拉普拉斯先验分布。


2、L2正则(Ridge正则)

L2正则通过在损失函数中添加权重参数的平方和作为惩罚项,公式表示为:
$ \text{Loss} = \text{Original Loss} + \lambda \sum_{i=1}^{n} w_i^2 $

L2正则会使得权重整体趋近于零但不为零,适用于缓解过拟合。其效果类似于对权重施加高斯先验分布。L2正则对异常值更鲁棒,因为平方项放大了大误差的惩罚。


核心区别

稀疏性:L1正则产生稀疏解,L2正则不产生。
计算特性:L1正则的优化可能需特殊算法(如坐标下降),L2正则可通过梯度下降直接求解。
几何解释:L1正则的约束区域为菱形(易触及顶点导致稀疏),L2正则的约束区域为圆形(权重均匀缩小)。

http://www.dtcms.com/a/272404.html

相关文章:

  • Django专家成长路线知识点——AI教你学Django
  • 【PTA数据结构 | C语言版】顺序栈的3个操作
  • 【深度学习系列--经典论文解读】Gradient-Based Learning Applied to Document Recognition
  • LINUX710 MYSQL
  • linux-用户与用户组管理
  • serialVersionUID
  • 配置 msvsmon.exe 以无身份验证启动
  • 力扣打卡第23天 二叉搜索树中的众数
  • 算法题(171):组合型枚举
  • Shusen Wang推荐系统学习 --召回 矩阵补充 双塔模型
  • 深度探索:实时交互与增强现实翻译技术(第六篇)
  • Win10用camke+gcc编译opencv库报错error: ‘_hypot‘ has not been declared in ‘std‘
  • 什么是 领域偏好学习(DPO)与多目标强化学习(PPO)
  • 在 Ubuntu 22 部署 vLLM + Qwen3 32B 模型
  • EPLAN 电气制图(六):电机正反转副勾主电路绘制
  • STM32第十九天 ESP8266-01S和电脑实现串口通信(2)
  • 代理模式——Java
  • 机器学习14——线性回归
  • 前端项目vue3项目集成eslint@9.x跟prettier
  • android TabLayout 标题栏切换 事件拦截
  • 【前端】jQuery动态加载CSS方法总结
  • 2025Datawhale AI夏令营第一期-(1)用AI预测新增用户
  • 01-RabbitMQ消息队列
  • ResolvableType 解密Java泛型反射
  • day01 - 数组part01
  • 【高等数学】第三章 微分中值定理与导数的应用——第二节 洛必达法则
  • 关闭实时防护
  • Qt Creator控件及其用途详细总结
  • LeetCode经典题解:49、字母异位词分组
  • 游戏开发问题记录