【机器学习笔记Ⅰ】13 正则化代价函数

正则化代价函数(Regularized Cost Function)详解

正则化代价函数是机器学习中用于防止模型过拟合的核心技术,通过在原始代价函数中添加惩罚项,约束模型参数的大小,从而提高泛化能力。以下是系统化的解析:


1. 为什么需要正则化?

  • 过拟合问题:当模型过于复杂(如高阶多项式回归、深度神经网络)时,可能完美拟合训练数据但泛化性能差。
  • 解决方案:在代价函数中增加对参数的惩罚,抑制不重要的特征权重。

2. 正则化代价函数的数学形式

(1) 原始代价函数(以线性回归为例)

J(\\mathbf{w}, b) = \\frac{1}{2m} \\sum_{i=1}\^m ( \\hat{y}\^{(i)} - y\^{(i)} )\^2

(2) 加入正则化项后的代价函数

J_{\\text{reg}}(\\mathbf{w}, b) = \\underbrace{\\frac{1}{2m} \\sum_{i=1}\^m ( \\hat{y}\^{(i)} - y\^{(i)} )\^2}*{\\text{原始损失}} + \\underbrace{\\lambda \\cdot R(\\mathbf{w})}* {\\text{正则化项}}

  • ( \lambda ):正则化强度(超参数),控制惩罚力度。
  • ( R(\mathbf{w}) ):正则化项,常见形式为L1或L2。

3. 常见的正则化方法

(1) L2正则化(岭回归,Ridge Regression)

  • 正则化项 :参数平方和(欧几里得范数)。

    R(\\mathbf{w}) = \\frac{1}{2} \|\\mathbf{w}\|*2\^2 = \\frac{1}{2} \\sum* {j=1}\^n w_j\^2

  • 作用:使参数趋向于较小的值,但不强制为零。
  • 更新后的梯度下降公式

    w_j := w_j - \\alpha \\left( \\frac{\\partial J}{\\partial w_j} + \\frac{\\lambda}{m} w_j \\right)

(2) L1正则化(Lasso回归)

  • 正则化项 :参数绝对值之和(曼哈顿范数)。

    R(\\mathbf{w}) = \|\\mathbf{w}\|*1 = \\sum* {j=1}\^n \|w_j\|

  • 作用:产生稀疏权重矩阵(部分参数恰好为零),自动执行特征选择。
  • 梯度更新 (需使用次梯度优化):

    w_j := w_j - \\alpha \\left( \\frac{\\partial J}{\\partial w_j} + \\frac{\\lambda}{m} \\text{sign}(w_j) \\right)

(3) Elastic Net(弹性网络)

  • 结合L1和L2 :平衡两种正则化的优势。

    R(\\mathbf{w}) = \\lambda_1 \|\\mathbf{w}\|_1 + \\lambda_2 \|\\mathbf{w}\|_2\^2


4. 正则化的直观理解

  • L2正则化:将参数限制在一个"圆"内(平滑约束)。

  • L1正则化:将参数限制在一个"菱形"内(尖角导致稀疏性)。


5. 代码实现(Python)

(1) 使用Scikit-learn实现

python 复制代码
from sklearn.linear_model import Ridge, Lasso

# L2正则化(Ridge回归)
ridge = Ridge(alpha=1.0)  # alpha即λ
ridge.fit(X_train, y_train)

# L1正则化(Lasso回归)
lasso = Lasso(alpha=0.1)
lasso.fit(X_train, y_train)

(2) 手动实现梯度下降(L2正则化)

python 复制代码
def gradient_descent(X, y, alpha=0.01, lambda_=0.1, epochs=1000):
    m, n = X.shape
    w = np.zeros(n)
    b = 0
    for _ in range(epochs):
        y_pred = X.dot(w) + b
        # 计算梯度(含L2正则化项)
        dw = (1/m) * X.T.dot(y_pred - y) + (lambda_/m) * w
        db = (1/m) * np.sum(y_pred - y)
        # 更新参数
        w -= alpha * dw
        b -= alpha * db
    return w, b

6. 如何选择正则化类型?

场景 推荐方法 理由
需要特征选择(稀疏解) L1正则化(Lasso) 自动将不重要特征的权重设为零。
参数平滑约束,避免过拟合 L2正则化(Ridge) 适合特征间相关性高的数据。
高维数据,特征数量远大于样本 Elastic Net 结合L1和L2的优势。

7. 超参数λ的选择

  • λ过大:模型欠拟合(参数过度压缩,趋于零)。
  • λ过小:正则化效果弱,可能过拟合。
  • 调参方法:网格搜索(GridSearchCV)或交叉验证。
python 复制代码
from sklearn.model_selection import GridSearchCV
params = {'alpha': [0.001, 0.01, 0.1, 1.0]}
grid = GridSearchCV(Ridge(), params, cv=5)
grid.fit(X_train, y_train)
print(grid.best_params_)

8. 正则化的数学本质

  • 贝叶斯视角:L2正则化等价于参数的高斯先验,L1等价于拉普拉斯先验。
  • 优化视角:在损失函数中添加约束条件,限制参数空间。

9. 总结

  • 核心目标:通过惩罚大权重降低模型复杂度,提升泛化能力。
  • 关键公式

    J_{\\text{reg}} = J(\\mathbf{w}, b) + \\lambda \\cdot R(\\mathbf{w})

  • 实践要点
    1. 数值型特征需先标准化(正则化对尺度敏感)。
    2. 逻辑回归、神经网络等模型均可应用正则化。
    3. 通过验证集性能选择最优的 ( \lambda )。

正则化是机器学习中对抗过拟合的基石技术,合理使用能显著提升模型鲁棒性!

相关推荐
智者知已应修善业1 分钟前
【删除有序数组中的重复项 II之O(N)算法】2024-1-31
c语言·c++·经验分享·笔记·算法
山东小木2 分钟前
AI智能问数(ChatBI)开发框架&解决方案&相关产品
人工智能·chatbi·智能问数·jboltai·javaai·ai问数·ai生图表
free-elcmacom7 分钟前
机器学习高阶教程<5>当机器学习遇上运筹学:破解商业决策的“终极难题”
人工智能·python·机器学习
AA陈超11 分钟前
Lyra Starter Game 中 GameFeature 类(如 ShooterCore)的加载流程
c++·笔记·学习·ue5·虚幻引擎
Lun3866buzha17 分钟前
大型铸件表面缺陷检测与分类_YOLO11-C2BRA应用实践
人工智能·分类·数据挖掘
递归尽头是星辰19 分钟前
AI 驱动的报表系统:从传统到智能的落地与演进
大数据·人工智能·大模型应用·spring ai·ai 报表·报表智能化
Wang ruoxi21 分钟前
基于最小二乘法的离散数据拟合
人工智能·算法·机器学习
阿杰学AI26 分钟前
AI核心知识56——大语言模型之ToT(简洁且通俗易懂版)
人工智能·ai·语言模型·提示工程·tot·pe·思维树
Baihai_IDP26 分钟前
你说的 CUDA 到底是哪个 CUDA?一文理清那些让人混淆的术语和版本号
人工智能·面试·llm
道199333 分钟前
PyTorch 高级进阶教程之深度实战实例(四)
人工智能·pytorch·python