[英]Interpreting coefficient names in glmnet in R
我使用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)
...
如果這不正確我該如何解釋呢?
我看到了以下問題和答案,但它沒有解決這些類型的系數名稱。
在此先感謝您的幫助。
通常,我們使用預測函數。 在您的情況下,您需要在另一個程序中使用系數。 我們可以檢查使用預測和數據乘以系數的結果之間的一致性。
# 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)
因此,每個系數對應於訓練數據中的一列。 第一個對應截距。 總之,您可以提取系數並乘以測試數據以獲得您感興趣的結果。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.