01正则化
正则化
正则化的概念
-
正则化(Regularization) 是机器学习中对原始损失函数引入额外信息,以便防止过拟合和提高模型泛化性能的一类方法的统称。也就是目标函数变成了原始损失函数+额外项
-
常用的正则化一般有两种L1正则化和L2正则化
-
L1正则化的一般表达式:
a r g m i n [ J ( w ) + α ∣ ∣ w ∣ ∣ 1 ] argmin[J(w)+\alpha||w||_1] argmin[J(w)+α∣∣w∣∣1?] -
L2正则化的一般表达式:
a r g m i n [ J ( w ) + α ∣ ∣ w ∣ ∣ 2 2 ] argmin[J(w)+\alpha ||w||_2^2] argmin[J(w)+α∣∣w∣∣22?]
- J ( w ) J(w) J(w)表示损失函数, 对于L1正则化 ∣ ∣ w ∣ ∣ 1 ||w||_1 ∣∣w∣∣1?表示权值向量 w w w中各个元素的绝对值和,对于L2正则化 ∣ ∣ ∣ w ∣ 2 2 |||w|_2^2 ∣∣∣w∣22?表示权值向量 w w w中各个元素平方的和
- α \alpha α是一个超参数,可以衡量正则化的力度(在机器学习中也有人称呼为惩罚力度)
- 在机器学习中正则化用于防止过拟合,进而增强泛化能力, 可以直观的将正则化理解为约束(规则、限制)
正则化的作用
- L1正则化一般用于稀疏模型中
- L2正则化用于一般的模型中, 防止过拟合或者改善病态矩阵
下面通过机器学习中三个典型模型说明正则化的作用,这一部分参考sklearn的用户手册, 里面会有更细节的说明
普通最小二乘(Ordinary Least Squares)
- OLS: 普通最小二乘
对于 y ^ ( w , x ) = w 0 + w 1 x 1 + . . . + w p x p \hat y(w, x)=w_0+w_1x_1+...+w_px_p y^?(w,x)=w0?+w1?x1?+...+wp?xp?这样的线性回归, 我们可以用OLS拟合出其系数 w 1 ? w p w_1-w_p w1??wp?和偏差 w 0 w_0 w0?
其基本的思想为:方程两边残余平方差最小
m
i
n
∣
∣
X
w
?
y
∣
∣
2
2
min||Xw-y||^2_2
min∣∣Xw?y∣∣22?
- (下面这部分是结合我需要解决的一个问题进行比较,其他读者请直接Pass)
- 对于回归问题来说, 这里的 w w w为待求的未知数,通过样本(训练集)的特征值 X X X和 y y y,我们可以拟合出 w w w, 从而得到一个估计的方程。当有新的数据(测试集)输入到这个方程(模型)中,我们可以得到一个预测值 y ^ \hat y y^?, 若训练样本和算法选择适当,得到的方程就比较准确,则预测值 y ^ \hat y y^?就十分接近真实值。
- 对于定位问题来说, w w w其实是已知的,但由于实际中对 X X X会有测量误差,将其直接输入到方程中,其得到的预测值 y ^ \hat y y^?也必然会有误差。值得注意的是,这部分误差是未知的。但当方程的个数大于未知数的个数时, 就能够用最小二乘(或其他方法),对 y ^ \hat y y^?进行最优估计(实际定位不一定是线性问题, 这里只是做一个大概比较)
岭回归(Ridge regression)与L2正则化
- 岭回归通过对系数大小加以惩罚(penalty)来解决OLS中的一些问题, 其本质就是OLS+L2正则化
m i n ∣ ∣ X w ? y ∣ ∣ 2 2 + α ∣ ∣ w ∣ ∣ 2 2 min||Xw-y||^2_2+\alpha||w||^2_2 min∣∣Xw?y∣∣22?+α∣∣w∣∣22?
- α \alpha α越大, w w w越小(接近于0); α = 0 \alpha=0 α=0, 则与OLS一致
下面通过sklearn用户教程中的一个例子说明岭回归作为正则化函数的作用(更详细的可以参考)
This example also shows the usefulness of applying Ridge regression to highly ill-conditioned matrices. For such matrices, a slight change in the target variable can cause huge variances in the calculated weights. In such cases, it is useful to set a certain regularization (alpha) to reduce this variation (noise).
这个例子也展示岭回归在高度病态矩阵上的应用
# Author: Fabian Pedregosa -- <fabian.pedregosa@inria.fr>
# License: BSD 3 clause
import matplotlib.pyplot as plt
import numpy as np
from sklearn import linear_model
# X is the 10x10 Hilbert matrix 10个样本10个特征
# 希尔伯特矩阵是一种数学变换矩阵,正定,且高度病态(即,任何一个元素发生一点变动,整个矩阵的行列式的值和逆矩阵都会发生巨大变化),病态程度和阶数相关。
X = 1.0 / (np.arange(1, 11) + np.arange(0, 10)[:, np.newaxis])
y = np.ones(10)
print(np.linalg.det(X))
Output:
2.1644528904064253e-53
可以看到矩阵X是一个高度病态的矩阵
n_alphas = 200
alphas = np.logspace(-10, -2, n_alphas)
coefs = []
for a in alphas:
ridge = linear_model.Ridge(alpha=a, fit_intercept=False)
ridge.fit(X, y)
coefs.append(ridge.coef_)
ax = plt.gca()
ax.plot(alphas, coefs)
ax.set_xscale("log")
ax.set_xlim(ax.get_xlim()[::-1]) # reverse axis
plt.xlabel("alpha")
plt.ylabel("weights")
plt.title("Ridge coefficients as a function of the regularization")
plt.axis("tight")
plt.show()
Output:
- 可以看到当 α \alpha α比较大时, 十个拟合出的权重都接近于0
- 而当 α \alpha α很小时,部分拟合出的权重又会特别大(这时特征值发生微小的改变,将会使预测结果发生很大变化)(正则化程度低, 拟合出的方程病态)
- 但选择一个合适 α \alpha α,则所有拟合出的权重能够在一个比较合适的大小
- 值得注意的事,在机器学习中 α \alpha α可以用交叉验证的方法在一个范围内找一个适合的值
由于水平有限,做不出数学上的推导,在参考资料(L1、L2正则化)中有佬写了一些简单的数学证明
Lasso回归
- 中文翻译好像叫拉索回归
m i n 1 2 n s a m p l e s ∣ ∣ X w ? y ∣ ∣ 2 2 + α ∣ ∣ w ∣ ∣ 1 min\frac{1}{2n_{samples}}||Xw-y||^2_2+\alpha||w||_1 min2nsamples?1?∣∣Xw?y∣∣22?+α∣∣w∣∣1?
主要用于稀疏的场合…
总结
看了很多模型大抵稀疏模型用L1正则化,L2正则化用于防止过拟合,一些模型中结合L1和L2正则化, 使其适用于更多场合
此外在sklearn官网还有一个例子具体体现了L2正则化的作用:
Common pitfalls in the interpretation of coefficients of linear models
参考资料
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!