Pour ma recherche actuelle, j'utilise la méthode Lasso via le package glmnet dans R sur une variable dépendante binomiale.
Dans glmnet, le lambda optimal est trouvé par validation croisée et les modèles résultants peuvent être comparés à diverses mesures, par exemple erreur de classification erronée ou déviance.
Ma question: comment la déviance est-elle définie exactement dans glmnet? Comment est-il calculé?
(Dans l'article correspondant "Chemins de régularisation pour les modèles linéaires généralisés via la descente de coordonnées" par Friedman et al. données) "(p. 17)).
glm
(ou du moins, elle devrait l'être - il n'y a qu'une seule définition de la déviance à ma connaissance).Réponses:
Dans Friedman, Hastie et Tibshirani (2010) , la déviance d'un modèle binomial, à des fins de validation croisée, est calculée comme suit:
Étant donné qu'il s'agit du document cité dans la documentation de
glmnet
(p. 2 et 5), c'est probablement la formule utilisée dans le package.Et en effet, dans le code source de la fonction
cvlognet
, les résidus de déviance pour la réponse sont calculés commeoù
predmat
est simplementet est passé de la
cv.glmnet
fonction d' encollage . J'ai utilisé le code source disponible sur la page JStatSoft pour le papier , et je ne sais pas comment ce code est à jour. Le code de ce paquet est étonnamment simple et lisible; vous pouvez toujours vérifier par vous-même en tapantglmnet:::cv.glmnet
.la source
En plus de la réponse de @shadowtalker, lorsque j'utilisais le paquet glmnet, j'ai l'impression que la déviance dans la validation croisée est en quelque sorte normalisée.
Réf: deviance R document
parce que si je fais la division,
le résultat est
qui est très proche de l'ajustement $ cvm.
C'est peut-être ce que le commentaire de @Hong Ooi a dit sur cette question:
/programming/43468665/poisson-deviance-glmnet
la source