线性模型的正则化

降低模型的过拟合的好方法就是正则化这个模型(即限制它):模型有越少的自由度,就越难拟合数据。例如,正则化一个多项式模型,一个简单的方法就是减少多项式的阶数。
对于线性模型,正则化的典型实现就是约束模型中参数的权重。这里介绍三种不同约束权重的方法:Ridge回归,Lasso回归和Elastic Net。但介绍之前,先了解下结构风险最小化和参数缩减(参考:https://blog.csdn.net/xmu_jupiter/article/details/46594273,https://blog.csdn.net/zhang_shuai12/article/details/53064697)

结构风险最小化是一种模型选择策略。模型选择的策略一般有两种:经验风险最小化和结构风险最小化。
模型f(x)关于训练数据集的平均损失称为经验风险或经验损失:

\[R_{emp}(f)=\frac{1}{N}\sum_{i=1}^{N}L(y_i,f(x_i)) \]

经验风险是模型关于训练样本集的平均损失。经验风险最小化(empirical risk minimization,EMP)的策略认为,经验风险最小的模型是最优的模型。根据这一策略,按照经验风险最小化求最优模型就是求解最优化问题,即求最小化\(R_{emp}(f)\)
当样本容量最够大时,经验风险最小化能保证有很好的学习效果,其中极大似然估计(MLE)就是一个经验风险最小化的一个例子。当模型是条件概率分布,损失函数是对数损失函数时,经验最小化等于极大似然估计。但样本容量很小时,经验风险最小化的效果并不好,因为所求取的参数是对于训练数据的无偏估计,结果就容易产生过拟合现象。
结构风险最小化就是为克服这过拟合而提出的。它是在经验风险最小化的基础上增加一个正则化因子,通常这个正则化因子时模型规模的函数,模型越复杂,这个函数取值越小。
正则化因子的加入其实可以解释为对模型参数进行了某种条件约束,然后参数的求解过程就相当于应用拉格拉日乘子法。通过对参数进行约束,保证了参数的取值不会太极端,也就进行了“参数缩减”。

岭(Ridge)回归

应用结构风险最小化的模型选择策略,在经验风险最小化的基础上加入正则化因子。当正则化因子选择为模型参数的二范数的时候,整个回归的方法就叫做岭回归。为什么叫“岭”回归呢?这是因为按照这种方法求取参数的解析解的时候,最后的表达式是在原来的基础上在求逆矩阵内部加上一个对角矩阵,就好像一条“岭”一样。加上这条岭以后,原来不可求逆的数据矩阵就可以求逆了。不仅仅如此,对角矩阵其实是由一个参数lamda和单位对角矩阵相乘组成。lamda越大,说明偏差就越大,原始数据对回归求取参数的作用就越小,当lamda取到一个合适的值,就能在一定意义上解决过拟合的问题:原先过拟合的特别大或者特别小的参数会被约束到正常甚至很小的值,但不会为零。
岭回归损失函数:

\[J(\theta)=MSE(\theta)+\alpha\frac{1}{2}\sum_{i=1}^{n}\theta_i^2 \]

超参数\(\alpha\)决定了正则化这个模型的强度。如果\(\alpha=0\),那此时的岭回归就是了线性回归,如果\(\alpha\)非常大,所有的权重最后最后都接近于0,最后结果将是一条穿过数据平均值的水平直线。还需要注意的是偏差\(\theta_0\)是没有被正则化的(累加运算是从i=1开始的),如果定义w作为特征的权重向量(\(\theta_1到\theta_n\)),那么正则化可以简写成\(\frac{1}{2}(||w||_2)^2,||·||_2表示权重向量的l2范数\)
岭回归的封闭方程的解:

\[\hat{\theta}=(X^T \cdot X+\alpha A)^{-1} \cdot X^T \cdot y \]

注意:

  • 使用岭回归前,对数据进行缩放(可以使用StandardScaler)是非常重要的,算法对输入特征的术支持度(scale)非常敏感。大多数的正则化模型都是这样
  • 一般情况下,训练过程使用的损失函数和测试过程中使用的评价函数是不一样的。除正则化外,还有一个不同,就是训练时损失函数应该在优化过程中易于求导,而在测试过程中,评价函数更应该解决最后的客观表现。一个好的例子,在分类训练中,使用对数损失作为损失函数,但却用精确度/召回率来作为它的评价函数

lasso回归

上面提到,岭回归是在结构风险最小化的正则化因子上使用模型参数向量的二范数形式,那,如果使用一范式形式就是lasso回归了。lasso回归相对于岭回归,会比较极端。它不仅可以解决过拟合问题,而且可以在参数缩减过程中将一些重复的不必要的参数直接缩减为0,也就是完全减掉了,这可以达到提取有用特征的作用。但是lasso回归的计算过程复杂,毕竟一范数不是连续可导的。
Lasso回归的损失函数:

\[J(\theta)=MSE(\theta)+\alpha\sum_{i=1}^{n}|\theta_i| \]

Lasso回归子梯度向量:、

\[g(\theta,J)=\Delta_{\theta}MSE(\theta)+\alpha\begin {pmatrix}sign(\theta_1)\\sign(\theta_1)\\ \vdots \\ sign(\theta_n) \end{pmatrix}where\;sign(\theta_i)=\begin {cases} -1,&& \theta_i<0 \\0,&&\theta_i=0\\+1,&&\theta_i>0\end{cases} \]

弹性网络(Elastic Net)

弹性网络介于Ridge回归和Lasso回归之间,它的正则项是Ridge回归和Lasso回归正则项的简单混合,同时可以控制疼的混合率r,让r=0时,弹性网络就是Ridge回归,r=1时,就是Lasso回归,公式如下:

\[J(\theta)=MSE(\theta)+r\alpha\sum_{i=1}^{n}|\theta_i|+\frac{1-r}{2}\alpha\sum_{i=1}^{n}\theta_i^2 \]

那问题来了,如何选择呢?一般来说有一点正则项的表现更好,因此通常要避免使用简单的线性回归。岭回归是一个很好的首选项,但如果特征仅有少数是真正有用的,应该选择Lasso和弹性网络。

猜你喜欢

转载自www.cnblogs.com/whiteBear/p/12897857.html