01正则化

2024-01-10 13:43:55

正则化

正则化的概念

  • 正则化(Regularization) 是机器学习中对原始损失函数引入额外信息,以便防止过拟合和提高模型泛化性能的一类方法的统称。也就是目标函数变成了原始损失函数+额外项

  • 常用的正则化一般有两种L1正则化和L2正则化

  • L1正则化的一般表达式:
    a r g m i n [ J ( w ) + α ∣ ∣ w ∣ ∣ 1 ] argmin[J(w)+\alpha||w||_1] argmin[J(w)+α∣∣w1?]

  • L2正则化的一般表达式:

a r g m i n [ J ( w ) + α ∣ ∣ w ∣ ∣ 2 2 ] argmin[J(w)+\alpha ||w||_2^2] argmin[J(w)+α∣∣w22?]

  • J ( w ) J(w) J(w)表示损失函数, 对于L1正则化 ∣ ∣ w ∣ ∣ 1 ||w||_1 ∣∣w1?表示权值向量 w w w中各个元素的绝对值和,对于L2正则化 ∣ ∣ ∣ w ∣ 2 2 |||w|_2^2 ∣∣∣w22?表示权值向量 w w w中各个元素平方的和
  • α \alpha α是一个超参数,可以衡量正则化的力度(在机器学习中也有人称呼为惩罚力度)
  • 在机器学习中正则化用于防止过拟合,进而增强泛化能力, 可以直观的将正则化理解为约束(规则、限制)

正则化的作用

  • L1正则化一般用于稀疏模型中
  • L2正则化用于一般的模型中, 防止过拟合或者改善病态矩阵

下面通过机器学习中三个典型模型说明正则化的作用,这一部分参考sklearn的用户手册, 里面会有更细节的说明

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?y22?

  • (下面这部分是结合我需要解决的一个问题进行比较,其他读者请直接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?y22?+α∣∣w22?

  • α \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?y22?+α∣∣w1?

主要用于稀疏的场合…

总结

看了很多模型大抵稀疏模型L1正则化L2正则化用于防止过拟合一些模型中结合L1和L2正则化, 使其适用于更多场合
此外在sklearn官网还有一个例子具体体现了L2正则化的作用:
Common pitfalls in the interpretation of coefficients of linear models

参考资料

(L1、L2正则化)

(什么是正则化)

sklearn user guide

文章来源:https://blog.csdn.net/nanxl1/article/details/135500670
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。