为什么有必要在 R 中删除 运行 ridge 和 lasso 的列

Why is it necessary to remove a column for running ridge and lasso in R

我正在尝试 运行 我自己的岭回归/套索,我正在根据“统计学习简介”第 251 页上的示例对我的方法进行建模。我们被告知建立模型矩阵如下:

library(ISLR)
x=model.matrix(Salary∼.,Hitters)[,-1] 
y=Hitters$Salary

我的问题是:为什么需要按照“[-1]”删除列

我不能确定,因为我看不到其余代码,但 model.matrix() 的目的是重新设计您的输入数据,以便它可以被回归模型处理。它会做一些事情,比如将任何因素转化为一组虚拟变量。

当此函数为 运行 时,它会在 1 列中创建一个额外的 (Intercept) 列,所以我猜测他们正在删除此列,因为后续模型(例如,glm()) 不需要这个额外的列。