zoukankan      html  css  js  c++  java
  • 机器学习中的正则化问题(2)——理解正则化

    理解正则化

    正则化的由来

      有几种角度来看待正则化(Regularization),它符合奥卡姆剃刀(Occam’s razor)原理:在所有可能选择的模型中,能够很好地解释已知数据并且十分简单的才是最好的模型。从贝叶斯估计的角度来看,正则化项对应于模型的先验概率。还有个说法就是,正则化是结构风险最小化策略的实现,是在经验风险上加一个正则化项(regularizer)或惩罚项(penalty term)。

      高维统计分析模型通常都是稀疏模型,即真正有效的变量只占一小部分,绝大多数变量都是噪声数据。因此当模型的参数过多时,不仅无法提高模型的解释力,反而会降低模型的解释力。
      在这个背景下,统计学家提出了各种各样的变量选择方法来筛选模型中重要的解释变量,从而防止过拟合问题。其中正则化是最常用的一种方法,而正则化方法中最常见的就是L0, L1 和L2范数。

      正则化方法的思想:处理最优化函数问题时,在目标函数中加入对参数的约束惩罚项,从而达到简化模型的目的。

      L0, L1和L2范数指的就是三种不同惩罚函数的形式,它们的通式形如

    [L_p=||β||_p=(|β_1|^p+|β_2|^p+...+|β_n|^p)^{1/p} ]

      因此:

    • L0范数是指向量中非0元素的个数。如果我们用L0范数来规则化一个参数矩阵W的话,就是希望W的大部分元素都是0,即让参数W是稀疏的;
    • L1范数是向量中各系数绝对值之和,它还有一个名字-LASSO;
    • L2范数是向量中各系数平方和的平方根,在计量经济学里面,它又称为“岭回归”。

    这三者的区别:

      L0范数和L1范数都具有变量选择的功能,但L0范数很难优化求解(NP问题),而L1范数是L0范数的最优凸近似,L1范数比L0范数更容易求解,所以L1范数被广泛应用到各种各样的模型中。
      L2范数的规则项可以使得每个系数都很小,都接近于0,但与L1范数不同,它不会让它等于0,而是接近于0L2范数,因此L2范数没有变量选择的功能。但是利用L2范数(岭回归方法)我们可以解决多重共线性问题并求出回归系数。一句话总结下:通过L2范数,我们可以实现了对模型空间的限制,从而在一定程度上避免了过拟合。

    L1、L2对模型空间限制的解释:

      我们将模型空间限制在系数(w)的一个norm-ball 中。为了便于可视化,我们考虑两维的情况,在 ((w1, w2)) 平面上可以画出目标函数的等高线,而约束条件则成为平面上半径为C的一个 norm ball 。等高线与 norm ball 首次相交的地方就是最优解:


    lk:图(a)中 (pm C=w_1pm w_2, 图(b)中 C=w^2_1+w^2_2)

      可以看到,L1-ball 与L2-ball 的不同就在于L1在和每个坐标轴相交的地方都有“角”出现,而目标函数的测地线除非位置摆得非常好,大部分时候都会在角的地方相交。注意到在角的位置就会产生稀疏性,例如图中的相交点就有w1=0,而更高维的时候(想象一下三维的L1-ball 是什么样的?)除了角点以外,还有很多边的轮廓也是既有很大的概率成为第一次相交的地方,又会产生稀疏性。

      相比之下,L2-ball 就没有这样的性质,因为没有角,所以第一次相交的地方出现在具有稀疏性的位置的概率就变得非常小了。这就从直观上来解释了为什么L1-regularization 能产生稀疏性,而L2-regularization 不行的原因了。

      因此,一句话总结就是:L1会趋向于产生少量的特征,而其他的特征都是0,而L2会选择更多的特征,这些特征都会接近于0。Lasso在特征选择时候非常有用,而Ridge就只是一种规则化而已。
      

    关于正则化是贝叶斯先验,整个优化目标是最大后验概率的解释:

    1. LR正则化与数据先验分布的关系?

    2. 回归系列之L1和L2正则化

    参考文献:
    [1] 机器学习中的范数规则化之(一)L0、L1与L2范数

  • 相关阅读:
    python 获取文件大小,创建时间和访问时间
    url中的20%、22%、26%、7B%、%7D、28%、29% 代表真实的字符(转发)
    python3 采集需要登录的网页数据
    python3 模拟鼠标中轴滚动
    python3 爬虫小技巧,
    马拉松中级训练计划
    python 使用夜神模拟器
    Python3+mitmproxy安装使用教程(Windows)(转载)
    adb server version (31) doesn't match this client (41); killing...
    appium+python环境搭建
  • 原文地址:https://www.cnblogs.com/stevenlk/p/6247992.html
Copyright © 2011-2022 走看看