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

85 阅读2分钟

前言

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

本文从最基本的线性回归开始,对比不同正则化方法的特点和作用,推广到多任务问题并引出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)Rnx^{(i)} \in R^n所对应的的标签yy是一个值,因此用于预测的参数是一个向量θRn\theta \in R^n,即

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

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

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

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

2. 带正则化项

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

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

argminθ12mi=1m(θTx(i)y(i))2+λθ1argmin_\theta \frac{1}{2m}\sum_{i=1}^m (\theta^T x^{(i)} - y^{(i)})^2 + \lambda \| \theta \|_1

argminθ12m(Xθy)T(Xθy)+λθ1argmin_\theta \frac{1}{2m} (X\theta - y)^T(X\theta - y) + \lambda \| \theta \|_1

其中,

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

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

argminθ12mi=1m(θTx(i)y(i))2+12λθ22argmin_\theta \frac{1}{2m}\sum_{i=1}^m (\theta^T x^{(i)} - y^{(i)})^2 + \frac{1}{2} \lambda \| \theta \|_2^2

argminθ12m(Xθy)T(Xθy)+12λθ22argmin_\theta \frac{1}{2m} (X\theta - y)^T(X\theta - y) + \frac{1}{2} \lambda \| \theta \|_2^2

其中,

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

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

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

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

二、多任务问题

1. 定义损失函数

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

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

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

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

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

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

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

2. 引入正则化项

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

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

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

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

J(Θ)=i=1mΘTx(i)y(i)2+λi=1nj=1dΘi,j2J(\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}

根据L2,1范数的定义:

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

则有

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

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