机器学习笔记——浅析L2,1范数正则化的线性回归

ops/2024/10/21 19:31:39/

前言

嘻嘻,刚开始搓逾期了快两周的线性回归实验报告,为了让报告稍微不那么平淡不得不啃论文。

本文从最基本的线性回归开始,对比不同正则化方法的特点和作用,推广到多任务问题并引出L2,1范数正则化,卑微小采购尝试去理解论文是如何思考和优化问题(

参考资料:

[1] 一文讲清楚线性回归(Linear Regression)、逻辑回归(Logistic Regression) - 掘金 (juejin.cn)

[2]一篇文章完全搞懂正则化(Regularization)-CSDN博客

[3] Efficient and Robust Feature Selection via Joint ℓ2,1-Norms Minimization (neurips.cc)

[4] L21范数用于多任务特征选择的一些思考 - 知乎 (zhihu.com)

一、线性回归回顾

1. 无正则化项

在最简单的线性回归问题[1]中,每个样本 x ( i ) ∈ R n x^{(i)} \in R^n x(i)Rn所对应的的标签 y y y是一个值,因此用于预测的参数是一个向量 θ ∈ R n \theta \in R^n θRn,即

y ^ ( i ) = θ T x ( i ) = ( x ( i ) ) T θ \hat{y}^{(i)} = \theta^T x^{(i)} = (x^{(i)})^T \theta y^(i)=θTx(i)=(x(i))Tθ

记所有的样本组成一个矩阵 X = ( x ( 1 ) , . . . , x ( m ) ) T , X ∈ R m × n X = (x^{(1)}, ..., x^{(m)})^T, X \in R^{m \times n} X=(x(1),...,x(m))T,XRm×n,所有的预测值组成一个向量 y ^ ∈ R m \hat{y} \in R^m y^Rm,则有

y ^ = X θ \hat{y} = X \theta y^=

在此类问题中,常用梯度下降法或正规方程法求解使预测值最接近于标签的参数向量 θ \theta θ[1],以及添加正则化项防止过拟合

2. 带正则化项

在[2]中,提到了常见的正则化项包括L1正则化和L2正则化如下

L1正则化的线性回归问题:

a r g m i n θ 1 2 m ∑ i = 1 m ( θ T x ( i ) − y ( i ) ) 2 + λ ∥ θ ∥ 1 argmin_\theta \frac{1}{2m}\sum_{i=1}^m (\theta^T x^{(i)} - y^{(i)})^2 + \lambda \| \theta \|_1 argminθ2m1i=1m(θTx(i)y(i))2+λθ1

a r g m i n θ 1 2 m ( X θ − y ) T ( X θ − y ) + λ ∥ θ ∥ 1 argmin_\theta \frac{1}{2m} (X\theta - y)^T(X\theta - y) + \lambda \| \theta \|_1 argminθ2m1(y)T(y)+λθ1

其中,

向量的L1范数指: ∥ θ ∥ 1 = ∑ i = 1 n ∣ θ i ∣ \| \theta \|_1 = \sum\limits_{i=1}^n |\theta_i| θ1=i=1nθi

L2正则化的线性回归问题:

a r g m i n θ 1 2 m ∑ i = 1 m ( θ T x ( i ) − y ( i ) ) 2 + 1 2 λ ∥ θ ∥ 2 2 argmin_\theta \frac{1}{2m}\sum_{i=1}^m (\theta^T x^{(i)} - y^{(i)})^2 + \frac{1}{2} \lambda \| \theta \|_2^2 argminθ2m1i=1m(θTx(i)y(i))2+21λθ22

a r g m i n θ 1 2 m ( X θ − y ) T ( X θ − y ) + 1 2 λ ∥ θ ∥ 2 2 argmin_\theta \frac{1}{2m} (X\theta - y)^T(X\theta - y) + \frac{1}{2} \lambda \| \theta \|_2^2 argminθ2m1(y)T(y)+21λθ22

其中,

向量的L2范数指: ∥ θ ∥ 2 = ( ∑ i = 1 n ∣ θ i ∣ 2 ) 1 2 \| \theta \|_2 = (\sum\limits_{i=1}^n |\theta_i|^2)^{\frac{1}{2}} θ2=(i=1nθi2)21

两者的区别是,当我们进行梯度下降,对损失函数求导时,

L2正则化项的偏导为 λ ∑ i = 1 n ∣ θ i ∣ \lambda \sum\limits_{i=1}^n | \theta_i | λi=1nθi,对绝对值较大的 θ i \theta_i θi,会给予较重的惩罚。由此造成的结果就是, θ i \theta_i θi绝对值会尽可能小

L1正则化项的偏导为 λ \lambda λ,也就是说,无论 θ i \theta_i θi的大小,L1正则化项都给予相同的惩罚。由此造成的结果就是,许多 θ i \theta_i θi尽可能变为0,从此达到稀疏化和特征选择的作用

二、多任务问题

1. 定义损失函数

当遇到多任务问题[2]时,即每个样本x对应的y不只是一个值,而是一个d维向量,即 y ( i ) ∈ R d , Y ∈ R m × d y^{(i)} \in R^d, Y \in R^{m \times d} y(i)Rd,YRm×d时,用于预测的参数需要是一个矩阵 Θ ∈ R n × d \Theta \in R^{n \times d} ΘRn×d,使得

y ^ ( i ) = Θ T x ( i ) \hat{y}^{(i)} = \Theta^T x^{(i)} y^(i)=ΘTx(i)

Y ^ = X Θ \hat{Y} = X \Theta Y^=XΘ

由于前面预测值和真实值都是确定的一个值,使用平方误差作为损失函数。而如今预测值和真实值都是向量,于是使用2范数作为基本的损失函数:

J ( Θ ) = ∑ i = 1 m ∥ Θ T x ( i ) − y ( i ) ∥ 2 2 J(\Theta) = \sum\limits_{i=1}^m \| \Theta^T x^{(i)} - y^{(i)} \|_2^2 J(Θ)=i=1mΘTx(i)y(i)22

论文[3]中将损失函数定义为另一种更为鲁棒的形式:

J ( Θ ) = ∑ i = 1 m ∥ Θ T x ( i ) − y ( i ) ∥ 2 J(\Theta) = \sum\limits_{i=1}^m \| \Theta^T x^{(i)} - y^{(i)} \|_2 J(Θ)=i=1mΘTx(i)y(i)2

2. 引入正则化项

如果把 X X X看作 n n n个列向量排成一行,那么每个列向量就是一个特征。

Θ \Theta Θ看作 n n n个行向量排成一列,那么每一行就是对每个特征作用的参数

故,如果想在这里达到稀疏化,也就是剔除掉多余特征的作用,就需要将 Θ \Theta Θ的某几行尽可能全部置零

由此引出带L2,1范数正则化项的损失函数:

J ( Θ ) = ∑ i = 1 m ∥ Θ T x ( i ) − y ( i ) ∥ 2 + λ ∑ i = 1 n ∑ j = 1 d Θ i , j 2 J(\Theta) = \sum\limits_{i=1}^m \| \Theta^T x^{(i)} - y^{(i)} \|_2 + \lambda \sum\limits_{i=1}^n \sqrt{ \sum\limits_{j=1}^d \Theta_{i, j} ^2} J(Θ)=i=1mΘTx(i)y(i)2+λi=1nj=1dΘi,j2

根据L2,1范数的定义:

∥ W ∥ 2 , 1 = ∑ i = 1 n ∑ j = 1 d W i , j 2 \| W \|_{2,1} = \sum\limits_{i=1}^n \sqrt{ \sum\limits_{j=1}^d W_{i, j} ^2} W2,1=i=1nj=1dWi,j2

则有

J ( Θ ) = ∥ X Θ − Y ∥ 2 , 1 + λ ∥ Θ ∥ 2 , 1 J(\Theta) = \| X\Theta - Y \|_{2,1} + \lambda \| \Theta \|_{2,1} J(Θ)=XΘY2,1+λ∥Θ2,1

可见,L2,1范数就是对行求2范数后得到的结果作为一个向量再求1范数。外层的1范数制约部分行的2范数需要为0,也就是一整行都为0,从而起到特征筛选的作用[4]


http://www.ppmy.cn/ops/5565.html

相关文章

一篇文章带您学会CSS的动画

动画和过渡的区别 过渡:实现两个状态间的变化过程。 动画:实现多个状态间的变化过程。动画过程可控(重复播放,最终动画,是否暂停) 动画的实现步骤 1.定义动画 书写格式 keyframes 动画名称{from{}to{…

记一次nacos注册服务IP错误的解决方案

我们以常见的微服务脚手架RuoYi-Cloud-Plus 为例 场景 服务网关-》业务服务不通 在微服务场景中,网关会从注册中心获取服务的列表,这些数据以键值对的形式存储在本地缓存中,key是服务的名称,value是服务的IP地址和端口号&#…

Xamarin.Android中“ADB0020: Android ABI 不匹配。你正将应用支持的“armeabi-v7a;arm64-v8a”异常处理

这里写自定义目录标题 1、问题2、解决 1、问题 在Xamarin.Android中出现ADB0020: Android ABI 不匹配。你正将应用支持的“armeabi-v7a;arm64-v8a”ABI 部署到 ABI“x86_64;x86”的不兼容设备。应创建匹配其中一个应用 ABI 的仿真程序,或将“x86_64”添加到应用生成…

OllamaFunctions 学习笔记

OllamaFunctions 学习笔记 0. 引言1. 使用方法2. 用于提取 0. 引言 此文章展示了如何使用 Ollama 的实验性包装器,为其提供与 OpenAI Functions 相同的 API。 1. 使用方法 您可以按照与初始化标准 ChatOllama 实例类似的方式初始化 OllamaFunctions: …

腾讯云免费ssl证书申请与宝塔手动部署

1.在我的证书 - SSL 证书 - 控制台 (tencent.com)页面点击“申请免费证书” 2.在申请页面填写域名、邮箱,对于其中“验证方式”,如果服务器是部署在腾讯云的话,可以选“自动DNS” 3.等待审核通过之后,在我的证书 - SSL 证书 - 控…

Flutter 的 showDialog 和 showCupertinoDialog 有什么区别?

我将我的 App 里用的 Flutter 升级到了 3.19,没想到,以前我用 showDialog 和 AlertDialog 组合创建的二次确认框,变得无敌难看了,大幅度增加了整个框的圆角和里面默认按钮的圆角。不得已,我必须修改一下,以…

大数据测试:构建Hadoop和Spark分布式HA运行环境

随着大数据技术的不断发展,Hadoop和Spark已成为处理大规模数据的热门框架。在生产环境中,高可用性(HA)是至关重要的,以确保数据处理和分析任务不受中断。本文将详细介绍如何构建 Hadoop和Spark分布式HA运行环境&#x…

Flutter-----异步编程:Future和Stream

异步编程:使用 Future 和 async-await | Dart 什么是异步操作/异步操作的作用? Dart 代码运行在单个执行“线程”中。如果 Dart 代码在执行时阻塞,例如:处理一个需要长时间运行的计算操作或等待 I/O 完成。此时整个程序会被“冻…