2016-05-31 1 views
1

J'utilise le paquet glmnet pour effectuer une régression LASSO. Je travaille maintenant sur l'importance des fonctionnalités en utilisant le paquet caret. Ce que je ne comprends pas, c'est la valeur de l'importance. Quelqu'un pourrait-il m'éclairer? Existe-t-il une formule pour calculer ces valeurs ou est-ce que cela signifie que ces valeurs sont basées sur les valeurs bêta?Paquet Caret - importance variable glmnet

ROC curve variable importance 
    only 7 most important variables shown (out of 25) 
              Importance 
feature1        0.8974 
feature2        0.8962 
feature3        0.8957 
feature4        0.8744 
feature5        0.8701 
feature6        0.8658 
feature7        0.8253 
+0

[Cette réponse] (http: //stats.stackexchange. com/a/135388/112731) et [cette réponse] (http://stats.stackexchange.com/questions/14853/variable-importance-from-glmnet/15071#15071) pourrait (partiellement) répondre à cette question. – geekoverdose

Répondre

1

caret regarde en fait les coefficients finaux de l'ajustement et prend alors la valeur absolue de classer les coefficients. Ensuite, les coefficients classés sont stockés en tant qu'importance variable.

Pour afficher le code source, vous pouvez taper

getModelInfo("glmnet")$glmnet$varImp 

Pour résumer, ce sont les lignes pour le calculer:

function(object, lambda = NULL, ...) { 

    ## skipping a few lines 

    beta <- predict(object, s = lambda, type = "coef") 
    if(is.list(beta)) { 
    out <- do.call("cbind", lapply(beta, function(x) x[,1])) 
    out <- as.data.frame(out) 
    } else out <- data.frame(Overall = beta[,1]) 
    out <- abs(out[rownames(out) != "(Intercept)",,drop = FALSE]) 
    out 
}