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

本文从基本的线性回归入手,回顾了无正则化项和带正则化项(L1、L2)的线性回归问题,对比了不同正则化方法的特点和作用。接着推广到多任务问题,定义了损失函数,并引入L2,1范数正则化项,以达到特征筛选的目的。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

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

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

参考资料:

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

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

[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]

L21范数是一种用于矩阵优化的正则化项,常用于处理高维数据下的稀疏表示问题。它结合了L2范数和平方核化的性质,在机器学习、信号处理和统计学等领域有着广泛的应用。 在MATLAB中,实现L21范数的基本思路是通过最小化含有该正则项的目标函数。目标函数通常包含损失函数和正则化项两部分,其中正则化项就是L21范数。L21范数对于一个n x p的矩阵A来说,可以看作是对每一列应用L2范数然后对所有列求L1范数的结果。即: \[ \text{L21范数} = \sum_{i=1}^{p} \sqrt{\sum_{j=1}^{n} A_{ij}^2} \] 在实际计算中,为了方便操作,我们经常将矩阵A转换成一维向量,然后计算其绝对值的一维向量的L1范数,再乘以根号下矩阵元素的数量(n * p),这样可以避免直接逐行累加和开方的操作。以下是具体的MATLAB代码示例: ```matlab function l21_norm = calculate_l21(A) % Calculate the L21 norm of a matrix A. % Input: Matrix A (n x p) as a single input argument % Output: The L21 norm as scalar % Convert matrix to column vector and take absolute values vec_A = abs(A(:)); % Compute L21 norm as sum of squared elements followed by square root, % then multiply back by sqrt(n*p), where n is number of rows in A, p is columns. l21_norm = sqrt(sum(vec_A.^2)) * sqrt(size(A,1)*size(A,2)); end ``` ### 示例如何使用此函数: 假设有一个随机生成的矩阵 `M`: ```matlab M = rand(5, 4); % Generate a 5x4 random matrix l21_result = calculate_l21(M); disp(l21_result); ``` ### 相关问题: 1. **解释L21范数在稀疏表示中的作用** - 说明为什么在处理稀疏数据或者特征选择时,L21范数特别有用。 2. **比较L21范数与其他正则化项(如L1、L2等)的区别** - 给出几个典型的例子,展示如何在实际的数据分析和建模过程中应用L21范数
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值