zoukankan      html  css  js  c++  java
  • ML-线性模型 泛化优化 之 L1 L2 正则化

    认识 L1, L2

    从效果上来看, 正则化通过, 对ML的算法的任意修改, 达到减少泛化错误, 但不减少训练误差的方式的统称

    训练误差

    这个就损失函数什么的, 很好理解.

    泛化错误

    • 假设 我们知道 预测值 和 真实值 之前的 "误差" , 这就是泛化错误

    • 跟训练数据没关系, 就是在用模型预测的时候, 给预测值 "加" 是一个项来修正模型

    • 类似于 给 模型的预测值, 加上了一个 "修正项"

    损失函数 = Loss + 正则化项

    举个线性回归的栗子

    • L1: 损失函数 = (J(eta) = ||X eta -y||^2 +||eta||_1)

    • L2: 损失函数 = (J(eta) = ||X eta -y||^2 +||eta||_2)

    即通过在等式中, 添加正则化项, 来抑制模型中的系数防止过拟合, 正则化的假设是,较小的权重对应更简单的模型.

    一般化: 通常是通过范数 来定义正则化项的:

    (J(w) = L(w) + ||w||_p)

    范数 (Norm) 是一种定义向量(矩阵) 大小的方法. ((矩阵_{mn} ightarrow R) 的某映射), 关于定义性质之类的暂时不细整了, 用到再说.

    (||x||_p = (sum limits _{i=1} ^n|x_i|^p)^{frac {1}{p}})

    • p1 Norm: 就是对向量各分量元素求和, 即: (|x1| + |x_2| + ...|x_n|)
    • p2 Norm: 就是欧氏距离, 即: (sqrt {(x_1^2 + x_2^2 +...x_n^2)})

    是如何其作用的? 又举个L1栗子.

    假设参数只有两个 (w=(w_1, w_2), 且有约束 ||w||_1 = 1)

    只两个元素w1, w2, 是为了在二维下可以画个图表示一波

    即: (|w_1| +| w_2| = 1, 即 w_2 = 1-|w_1|) , 在2维坐标下,不就是个以(0,0)为中心, 边长为1的正方形旋转45度嘛. 四个顶点分别为(1,0), (0,1), (-1,0), (0,-1)

    显然最低点在(0,0), 要到达这个点, 也要是该函数的负梯度, 或者称梯度下降.

    (- abla_w L_1(w) = sign(w)) 就是看正负号.

    再来举个L2的栗子,条件约束为 (||w||_2 = 1)

    (w_1^2 + w_2^2 = 1) 极值也是负梯度方向 可很快找到, 画出来就是一个单位圆,圆心是(0,0), 半径为1

    (- abla_w L_2(w) = -w)

    在任何一点的负梯度,也是朝向圆心的呀.

    总结一波, 对于加了正则化项: (cost = J(w) + ||w||_p) 而言, 总体最小, 即每项都要最小, 即向负梯度方向运动.(J(w)) , (||w||_p) 达到最小, 即 二者的等值线,都朝各自负梯度方向运动, 相当于是原来是一力量, 现在是两个力量. 从数量上来说, 加了 正则项后, 求解出来的 w 变小了(各分量值), 如:

    (y = w_1x_1 + w_2 x_2)

    • 当 w1, w2= 0的时候, 不论 x 如何变,都不影响 y
    • 当 w1, w2 非常大, x 变化一点点, y 会有很大变动
    • 当 w1, w2 比较小, x 变化一点点, y 受影响也不大

    L1 正则 特点

    • 可以将一些权值缩小到0, 很稀疏

    • 不容易计算, 在零点连续但不可导,需要分段求导

    • 执行隐式变量选择.意味着一些特征对结果影响等于0, 类似于删除特征

    • 预测因子对应较大的权值, 而其余的为零

    • 对于其提供稀疏的解决方案, 应用于特征很多的场景, 忽略了很多 0 权值的特征, 计算复杂降低, 感觉比PCA还稳,因为它是线性组合, 而非直接干掉.

    • 后来也取名为: Lasso 回归

    • L1 对异常值有较好的抵抗力

    case1: L1 线性回归

    (min sum limits _{i=1}^n (y_i - sum_{j=1}^p X_{ij} eta_j)^2 + lambda sum limits _{j=1}^p |eta_j|)

    看作两股力量 (min = A + B)

    • 原来只是 A 最小即可, 而现在是 A + B 最小, 相当于改变了解集
    • 入 如果很大, 则 B 占主导了, 那么模型也就没呀影响, 代表了强度

    L2 正则 特点

    • 将一些权重特征缩小, 接近0, 而非 L1 直接为0

    • 容易计算, 可导, 适合基于梯度下降法. 不过特征数很大也难算

    • 会保留相关特征, 其权值的分布取决于相关性

    • L2 对异常值非常敏感

    • 相对于L1 , 会更加精确一点

    • 后来取名为 Ridge 回归

    case1: L1 线性回归

    (min sum limits _{i=1}^n (y_i - sum_{j=1}^p X_{ij} eta_j)^2 + lambda sum limits _{j=1}^p eta_j^2)

    会使得参数值比较小, 但不至于像L1, 参数为0.

    L1, L2 各有各好处, 如果结合起来用就变成了Elastic Net. 大致类似这样:

    (min sum limits _{i=1}^n (y_i - sum_{j=1}^p X_{ij} eta_j)^2 + lambda_1 sum limits _{j=1}^p |eta_j|lambda_2 sum limits _{j=1}^p eta_j^2)

    但这样的话, 计算的复杂度和调参将变成一门艺术, 嗯, 大概就是, 用意念, 艺术性地调参.

    应用-Lasso, Ridge, Elastic

    其实就分别对应加了 L1, L2, (L1+L2) 的正则函数.

    Lasso 回归

    (Lasso sum limits _{i=1}^n (y_i - sum_{j=1}^p X_{ij} eta_j)^2 + lambda sum limits _{j=1}^p |eta_j| = ||y-Xeta||^2 + lambda||eta||_1)

    Ridege

    (Ridge ||y-X eta||^2 + lambda ||eta||^2)

    此时求解:

    (eta_{ridge} = (X'X + lambda I)^{-1} X'y)

    L2 求解出就比不加多个 入 项

    X' 表示 X 转置 和 ^T 是一样的

    • 如果 (lambda) 特别小, 相当于又回退到了 不加L2

    • 如果 (lambda) 特别大, 总体又要最小, 对 (||eta||^2) 而言, (eta) 要很小, 也就是说, 模型参数没啥用了.

    Lasso vs Ridge

    • Lasso (L1正则) 能将一些系数设置为0, 执行变量选择, 而 Ridge (L2正则) 只是弱化系数

    • 如果存在少量重要参数而其余影响小时, L1 , 如果先验认为多个同等重要的特征, 用L2比较好.

    • 没有谁比谁好, 还是看先验(经验) 还有试验. 在现实世界我们并不知道真实参数值, 交叉验证 不断调参就选择最好就行啦

    • 都能处理多重共线问题(样本矩阵不满秩

      • L1 (lasso): 相关特征具有较大系数, 其余几乎是0
      • L2 (ridge): 相关特征系数相近

    Elastic Net

    就结合了 L1, L2

    小结一波

    • 痛点: 线性模型通常有异常值或共线情况使参数估计有较大方差, 导致过拟合等, 模型不可靠

    • 解决: 加入正则项, 即找到良好的偏差bias - 方差variance, 来模型的总误差

    • 流行的有3种正则化技术

      • L1 正则: 又称 Lasso 回归, (参数1范数)项, 突出重点, 其余为零,变量选择
      • L2 正则: 又称 Ridge 回归, (参数2范数)项, 降低模型参数权值
      • Elastic Net: 综合 L1+L2
    • 实践中, 可通过 交叉验证的方式来不多调参, 找到最好组合, 做个自信而快乐的调参侠

  • 相关阅读:
    transform 多值先后执行顺序
    css 清除浮动
    鼠标移动到图片,图片放大
    js 事件循环机制EventLoop
    web安全
    web前端踩坑记录
    滚动加载图片(懒加载)
    css 兼容问题
    模块化 AMD与CMD 规范
    css 盒子模型 ie盒子模型
  • 原文地址:https://www.cnblogs.com/chenjieyouge/p/11974148.html
Copyright © 2011-2022 走看看