01正则化

本文介绍了正则化在机器学习中的作用,包括L1和L2正则化的概念、数学表达式,以及它们如何防止过拟合并提升模型泛化能力。通过实例展示了正则化在普通最小二乘、岭回归和Lasso回归中的应用,以及如何选择合适的超参数α。

正则化

正则化的概念

  • 正则化(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+w1x1+...+wpxp这样的线性回归, 我们可以用OLS拟合出其系数 w 1 − w p w_1-w_p w1wp和偏差 w 0 w_0 w0

其基本的思想为:方程两边残余平方差最小
m i n ∣ ∣ X w − y ∣ ∣ 2 2 min||Xw-y||^2_2 min∣∣Xwy22

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

主要用于稀疏的场合…

总结

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

参考资料

(L1、L2正则化)

(什么是正则化)

sklearn user guide

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值