如何在 R 中使用 log-link 进行岭回归
how to do ridge regression with log-link in R
我想在 R 中使用 glmnet
或 lm.ridge
进行岭回归。
我需要用 log(Y)
做这个回归
cost ~ size + weight ⇒ log(cost) ~ size + weight
但是,我发现glmnet
或lm.ridge
没有像glm
这样的link。
对这个问题有什么想法吗?
对 ?glmnet
函数使用 alpha 输入参数(值为 0)。正如文档所说:
alpha=1 is the lasso penalty, and alpha=0 the ridge penalty.
尝试如下操作:
glmnet(x=cbind(size, weight), y=log(cost), alpha=0, family='gaussian')
或者可能与泊松回归
glmnet(x=cbind(size, weight), y=cost, alpha=0, family='poission')
如果你的输入数据不是太大,你可以直接使用公式solve(t(X)%*%X + λ*I)%*%(t(X)%*%y)
从训练数据中通过岭回归计算学习到的权重,其中X是您的输入变量矩阵,y 是响应变量,I 是单位矩阵,您可以使用 [= 了解 lambda 参数的最佳值23=]来自 held-out 数据集的交叉验证。
我想在 R 中使用 glmnet
或 lm.ridge
进行岭回归。
我需要用 log(Y)
cost ~ size + weight ⇒ log(cost) ~ size + weight
但是,我发现glmnet
或lm.ridge
没有像glm
这样的link。
对这个问题有什么想法吗?
对 ?glmnet
函数使用 alpha 输入参数(值为 0)。正如文档所说:
alpha=1 is the lasso penalty, and alpha=0 the ridge penalty.
尝试如下操作:
glmnet(x=cbind(size, weight), y=log(cost), alpha=0, family='gaussian')
或者可能与泊松回归
glmnet(x=cbind(size, weight), y=cost, alpha=0, family='poission')
如果你的输入数据不是太大,你可以直接使用公式solve(t(X)%*%X + λ*I)%*%(t(X)%*%y)
从训练数据中通过岭回归计算学习到的权重,其中X是您的输入变量矩阵,y 是响应变量,I 是单位矩阵,您可以使用 [= 了解 lambda 参数的最佳值23=]来自 held-out 数据集的交叉验证。