机器学习监督算法的基本思路是 让拟合的模型尽量接近真实数据, 换句更通俗的话, 要让我们的模型尽量简单又能很好的反应已知数据之间关系。在这个贴近的过程可能存在两个截然相反的问题:过拟合和拟合不够。 拟合不够是模型预测值与真实值之间误差较大,上篇文章中提到梯度下降就是讨论解决问题(求损失函数最小)。 而正则化则是探讨过拟合的问题(当然正则化还能改善ill-posed(condition)等问题,本文不详细论述), 或者说是让模型更简单的方法。在详细讨论正则化之前,先了解相关数学基础知识。
一、数学基础
1. 范数
范数是衡量某个向量空间(或矩阵)中的每个向量以长度或大小。范数的一般化定义:对实数p>=1, 范数定义如下:
L1范数
当p=1时,是L1范数,其表示某个向量中所有元素绝对值的和。
L2范数
当p=2时,是L2范数, 表示某个向量中所有元素平方和再开根, 也就是欧几里得距离公式。
2.拉普拉斯分布
如果随机变量的概率密度函数分布为:
那么它就是拉普拉斯分布。其中,μ 是数学期望,b > 0 是振幅。如果 μ = 0,那么,正半部分恰好是尺度为 1/2 的指数分布。
3.高斯分布
又叫正态分布,若随机变量X服从一个数学期望为μ、标准方差为σ2的高斯分布,记为:
X∼N(μ,σ2),
则其概率密度函数为:
其概率密度函数为正态分布的期望值μ决定了其位置,其标准差σ决定了分布的幅度。当μ = 0,σ = 1时的正态分布是标准正态分布。
还有涉及极大似然估计、概率论相关的先验和后验相关概率, 为了控制篇幅, 本文就不详细介绍, wiki百科和百度百科都讲得很清楚。
二、正则化解决过拟合问题
正则化通过降低模型的复杂性, 达到避免过拟合的问题。 正则化是如何解决过拟合的问题的呢?从网上找了很多相关文章, 下面列举两个主流的解释方式。
原因1:来自知乎上一种比较直观和简单的理解, 模型过于复杂是因为模型尝试去兼顾各个测试数据点, 导致模型函数如下图,处于一种动荡的状态, 每个点的到时在某些很小的区间里,函数值的变化很剧烈。这就意味着函数在某些小区间里的导数值(绝对值)非常大,由于自变量值可大可小,所以只有系数足够大,才能保证导数值很大。
而加入正则能抑制系数过大的问题。如下公式, 是岭回归的计算公式。
如果发生过拟合, 参数θ一般是比较大的值, 加入惩罚项后, 只要控制λ的大小,当λ很大时,θ1到θn就会很小,即达到了约束数量庞大的特征的目的。
原因二:从贝叶斯的角度来分析, 正则化是为模型参数估计增加一个先验知识,先验知识会引导损失函数最小值过程朝着约束方向迭代。 L1正则是Laplace先验,L2是高斯先验。整个最优化问题可以看做是一个最大后验估计,其中正则化项对应后验估计中的先验信息,损失函数对应后验估计中的似然函数,两者的乘积即对应贝叶斯最大后验估计。
给定训练数据, 贝叶斯方法通过最大化后验概率估计参数θ:
说明:P(θ)是参数向量θ的先验概率。
下面我们从最大后验估计的方式, 推导下加入L1和L2惩罚项的Lasso和岭回归的公式。
首先我们看下最小二乘公式的推导(公式推导截图来着知乎大神)
这个是通过最大似然估计的方法, 推导出线性回归最小二乘计算公式。
假设1: w参数向量服从高斯分布
最终的公式就是岭回归计算公式。与上面最大似然估计推导出的最小二乘相比,最大后验估计就是在最大似然估计公式乘以高斯先验, 这里就理解前面L2正则就是加入高斯先验知识。
假设2: θ参数服从拉普拉斯分布
最终的公式就是Lasso计算公式。与上面最大似然估计推导出的最小二乘相比,最大后验估计就是在最大似然估计公式乘以拉普拉斯先验, 这里就理解前面L1正则就是加入拉普拉斯先验知识。
三、 L1和L2正则化的区别
1. L2 regularizer :使得模型的解偏向于 norm 较小的 W,通过限制 W 的 norm 的大小实现了对模型空间的限制,从而在一定程度上避免了 overfitting 。不过 ridge regression 并不具有产生稀疏解的能力,得到的系数 仍然需要数据中的所有特征才能计算预测结果,从计算量上来说并没有得到改观。
2. L1 regularizer : 它的优良性质是能产生稀疏性,导致 W 中许多项变成零。 稀疏的解除了计算量上的好处之外,更重要的是更具有“可解释性”。
参考文档
正则化理解(一) http://www.voidcn.com/blog/shenxiaoming77/article/p-5011766.html
用正则化(Regularization)来解决过拟合 http://www.cnblogs.com/ooon/p/4964441.html
LR正则化与数据先验分布的关系 https://www.zhihu.com/question/23536142
最大似然估计和最小二乘法怎么理解? https://www.zhihu.com/question/20447622