Lasso回归的坐标下降法推导

这篇博客详细介绍了Lasso回归中坐标下降法的原理和应用。通过目标函数RSS和L1正则化的推导,阐述了RSS偏导数、正则项偏导数的计算,以及整体偏导数在Lasso成本函数中的表达。文中还提供了坐标下降法的伪代码,并从概率角度解释了Lasso回归与拉普拉斯分布的关系,以及MAP推导过程。最后,博主邀请读者加入机器学习交流群进行讨论。

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

目标函数

Lasso相当于带有L1正则化项的线性回归。先看下目标函数: R S S ( w ) + λ ∥ w ∥ 1 = ∑ i = 0 N ( y i − ∑ j = 0 D w j h j ( x i ) ) 2 + λ ∑ j = 0 D ∣ w j ∣ RSS(w)+\lambda \Vert w\Vert_1=\sum_{i=0}^{N}(y_i-\sum_{j=0}^D{w_jh_j(x_i)})^2+\lambda \sum_{j=0}^{D}|w_j| RSS(w)+λw1=i=0N(yij=0Dwjhj(xi))2+λj=0Dwj
这个问题由于正则化项在零点处不可求导,所以使用非梯度下降法进行求解,如坐标下降法或最小角回归法。

坐标下降法

本文介绍坐标下降法。
坐标下降算法每次选择一个维度进行参数更新,维度的选择可以是随机的或者是按顺序。
当一轮更新结束后,更新步长的最大值少于预设阈值时,终止迭代。

下面分为两部求解

RSS偏导

在这里插入图片描述
下面做一下标记化简
ρ j = ∑ i = 1 N h j ( x i ) ( y i − ∑ k ≠ j w k h k ( x i ) ) \rho_j=\sum_{i=1}^Nh_j(x_i)(y_i-\sum_{k \neq j }w_kh_k(x_i)) ρj=i=1Nhj(xi)(yik=jwkhk(xi))
z j = ∑ i =

### Lasso回归坐标下降法的Matlab实现 为了实现在Matlab中通过坐标下降法求解Lasso回归问题,下面提供了一个详细的代码示例。此方法旨在最小化损失函数加上正则项: \[ \min_{\beta} \frac{1}{2N}\sum_{i=1}^{N}(y_i-\hat{y}_i)^2+\lambda\sum|\beta_j| \] 其中 \( N \) 是样本数量, \( y_i \) 表示第 i 个观测的真实值, \( \hat{y}_i \) 则是由模型预测出来的值, 而 \( \lambda \) 控制着惩罚力度。 #### Matlab代码实现 ```matlab function beta = lassoCoordinateDescent(X, y, lambda, tol, maxIter) % X: 输入特征矩阵 (n x p), n为样本数,p为特征数. % y: 响应变量向量 (n x 1). % lambda: 正则参数. % tol: 收敛阈值. % maxIter: 最大迭代次数. [n, p] = size(X); beta = zeros(p, 1); % 初始化系数向量 r = y; % 残差初始化 for iter = 1:maxIter betaOld = beta; for j = 1:p r = r + X(:,j)*beta(j); rho = X(:,j)'*r / n; if rho < -lambda/2 beta(j) = (rho + lambda/2)/(X(:,j)'*X(:,j)/n); elseif rho > lambda/2 beta(j) = (rho - lambda/2)/(X(:,j)'*X(:,j)/n); else beta(j) = 0; end r = r - X(:,j)*beta(j); end if norm(beta-betaOld,'inf') < tol break; end end disp(['Converged after ', num2str(iter), ' iterations']); end ``` 这段程序定义了一个名为 `lassoCoordinateDescent` 的函数,用于执行基于坐标轴更新策略的Lasso回归优化过程[^4]。该算法会逐次遍历每一个维度上的权重并调整其大小直到满足收敛条件为止。 #### 使用说明 - **输入**: 特征矩阵\(X\)、响应向量\(y\)以及超参数\(\lambda\)决定了压缩程度;还有两个控制精度和最大循环轮数的参数。 - **输出**: 返回最终估计得到的线性组合系数向量`\beta`。 请注意,在实际应用之前可能还需要对数据做标准化处理以确保不同尺度下的属性能够公平竞争被选入模型之中。
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值