Lasso 回归与正则化路径
在线性回归 MSE 上加入 L1,用 alpha 控制稀疏度,并在训练部分交叉验证选择。
学习前需要掌握
背景与问题
普通最小二乘可能在很多列上分配权重,相关特征还会让估计不稳定。Lasso 将平方损失与 L1 结合,在回归任务中同时约束拟合与产生稀疏系数。
它不是独立于模型评价的“自动找真特征”工具。筛选结果依赖数据、尺度、强度与相关结构,应和最终预测一起验证。
概念定义
scikit-learn Lasso 的常用目标是平方残差和除以 2n,再加 alpha 乘权重绝对值和。alpha 越大通常收缩越强,但它的数值不能与采用其他损失归一化的库直接等同。
截距与特征缩放需要单独理解。若比较系数或正则路径,应说明是否中心化、是否标准化及哪些参数受惩罚。
直观理解
随着强度增加,一些系数逐渐缩小并进入零区间。观察整条正则路径,比只看某个强度下的一张稀疏清单更能揭示取舍和不稳定性。
同一条直线怎样被收缩到 1.5 与 0
构造 X=[-1,1]、y=[-2,2],不拟合截距。无惩罚最优斜率为 2;采用本页 Lasso 的 1/(2n) 约定,目标可化为 0.5×(w−2)²+alpha×|w|。
alpha=0.5 的解是 1.5;alpha=3 的解是 0。该例只有两条确定性记录,用于核对目标系数与收缩,不支持选择真实任务的最优 alpha。
核心原理
选择 alpha 应在训练内部交叉验证,必要的缩放也要折内拟合。把测试误差最小的强度称为“自动选择”,仍然是在使用测试集调参。
对相关特征,Lasso 可能选其中某一列并忽略另一列,轻微数据变化又可能交换选择。系数为零不是该因素没有现实作用的证明。
强惩罚减少自由度,也可能提高训练误差并造成欠拟合。预测误差、非零系数数目和跨折稳定性应共同检查,不应单纯追求最稀疏模型。
坐标下降等求解器还需要数值收敛。警告、迭代预算、容差与尺度值得记录,不能把尚未稳定的权重变化都解释成数据规律。
数学表达
核心表达
alpha 候选按对数尺度;LassoCV 只在训练数据内部选择。最终评价和因果解释分开。
变量含义
变量定义与本页概念定义一致,代码中的同名变量保持相同语义。
计算步骤
- 1标准化
- 2设置 logspace alpha
- 3LassoCV
- 4查看最佳 alpha
代码对应位置
示例 1用可解析数据检查 Lasso 的强度方向:将库的损失约定与手算解对照。
计算与实现步骤
- 标准化
- 设置 logspace alpha
- LassoCV
- 查看最佳 alpha
- 画权重路径
- 最终测试
代码实现
示例 1
用可解析数据检查 Lasso 的强度方向
example_01.py用途:将库的损失约定与手算解对照。
from sklearn.linear_model import Lasso
for alpha in [0.5, 3.0]:
model = Lasso(alpha=alpha, fit_intercept=False, tol=1e-10, max_iter=10000)
model.fit([[-1.0], [1.0]], [-2.0, 2.0])
print(f"alpha={alpha:.1f} coefficient={model.coef_[0]:.4f}")代码解析
解析始终位于完整代码下方,并按实际代码段逐项对应。
输入数据与任务
将库的损失约定与手算解对照。
model- 组合预处理和估计器的模型对象。
alpha- 当前学习率,控制每次参数更新的步长。
Step 1 · 1–5 行
导入当前步骤需要的数值计算、预处理、模型或评价工具。依赖集中写在代码开头,便于复现。
from sklearn.linear_model import Lasso
for alpha in [0.5, 3.0]:
model = Lasso(alpha=alpha, fit_intercept=False, tol=1e-10, max_iter=10000)
model.fit([[-1.0], [1.0]], [-2.0, 2.0])
print(f"alpha={alpha:.1f} coefficient={model.coef_[0]:.4f}")预期输出或运行结果
alpha=0.5 coefficient=1.5000 alpha=3.0 coefficient=0.0000
常见错误 · 3 条
- 测试集选 alpha
- 所有权重为零仍认为成功
- 相关特征不稳定
实际应用
- 回归特征选择
- 稀疏解释
常见错误
- 测试集选 alpha
- 所有权重为零仍认为成功
- 相关特征不稳定
推荐学习资料
参考库不会生成虚假资源或无效外部链接。