r - 解释 R 中 glmnet 中的系数名称

标签 r machine-learning glm glmnet

我使用 glmnet 使用以下代码根据一组 5 个特征来预测概率。我需要实际的公式,因为我需要在不同的(非 R)程序中使用它。

deg = 3

glmnet.fit <- cv.glmnet(poly(train.matrix,degree=deg),train.result,alpha=0.05,family='binomial')

结果系数的名称有五个位置(我假设这是每个特征之一),每个位置都是 0 到 3 之间的数字(我假设这是多项式的次数)。但我仍然对如何重构公式感到困惑。

以这些为例:

> coef(glmnet.fit,s= best.lambda)  
(Intercept) -2.25e-01  
...
0.1.0.0.1    3.72e+02
1.1.0.0.1    9.22e+04
0.2.0.0.1    6.17e+02
...

我们将这些特征称为 A、B、C、D、E。公式应该这样解释吗?

Y =
-2.25e-01 +
...
(3.72e+02 * (B * E) +
(9.22e+04 * (A * B * E) +
(6.17e+02 * (B^2 + E)
...

如果这不正确,我该如何解释?

我看到了以下内容question and answer但它没有解决这些类型的系数名称。

预先感谢您的帮助。

最佳答案

通常,我们使用预测函数。在您的情况下,您需要在另一个程序中使用系数。我们可以检查使用预测和数据乘以系数的结果之间的一致性。

# example data

library(ElemStatLearn) 
library(glmnet) 
data(prostate) 

# training data 

data.train <- prostate[prostate$train,] 
y <- data.train$lpsa 

# isolate predictors

data.train <- as.matrix(data.train[,-c(9,10)]) 

# test data

data.test <- prostate[!prostate$train,] 
data.test <-  as.matrix(data.test[,-c(9,10)]) 

# fit training model 

myglmnet =cv.glmnet(data.train,y) 

# predictions by using predict function 

yhat_enet <- predict(myglmnet,newx=data.test, s="lambda.min") 

#  get predictions by using coefficients 

beta  <- as.vector( t(coef(myglmnet,s="lambda.min"))) 

# Coefficients are returned on the scale of the original data. 
# note we need to add column  of 1s for intercept

testX <- cbind(1,data.test) 
yhat2  <- testX %*% beta 

# check by plotting predictions  

plot(yhat2,yhat_enet)

因此每个系数对应于训练数据中的一列。第一个对应于截距。总之,您可以提取系数并乘以测试数据以获得您感兴趣的结果。

关于r - 解释 R 中 glmnet 中的系数名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11141861/

相关文章:

r - 将地理引用数据与 R 中的形状文件匹配

r - 在 R 中的数据框的每一行中保留唯一分数

r - 用 95% CI 绘制具有多个解释的结果 glm

r - 在 R 中汇总组均值时如何创建有条件的新组

r - 将列添加到 r 中的 sf() 数据框中?

python - Keras:如何计算多标签分类的准确度?

python - 如何从 sklearn 中的 ColumnTransformer/Pipeline 中排除特定列?

machine-learning - 狄利克雷过程中的质点、狄拉克三角洲

r - 如何绘制同时具有连续变量和分类变量的二项式 GLM 的预测

r - 在 R 中使用sample.split 不正确地分割数据以及逻辑回归问题