Caret et coefficients (glmnet)

19

Je suis intéressé à utiliser le curseur pour faire des inférences sur un ensemble de données particulier. Est-il possible de faire ce qui suit:

  1. produire des coefficients d'un modèle glmnet que j'ai formé au caret. Je voudrais utiliser glmnet en raison de la sélection de fonctionnalités inhérentes car je ne pense pas que glm l'ait?

  2. autre que la métrique ROC, existe-t-il une autre métrique que je peux utiliser pour évaluer l'ajustement du modèle? Tels que ajusté ?R2

Le but de cette analyse est de tirer une certaine inférence sur les effets de variables particulières, plutôt que pour la prédiction. J'aime juste le paquet caret car il a été facile de travailler jusqu'à présent avec des matrices.

user2300643
la source
3
Le paquet caret est livré avec une série de vignettes (et un papier JSS) qui couvrent la plupart de vos questions. Pourriez-vous indiquer ce que vous entendez précisément par «déduire une certaine influence sur l'effet de variables particulières»?
chl
Inférence via les coefficients. Je lis la modélisation prédictive appliquée pour en savoir plus sur R et la création de modèles simultanément. J'avais lu les vignettes et le pdf, mais il y a tellement de fonctions qu'il est difficile de les suivre toutes. Zach a répondu à ma question, cependant, je suis reconnaissant. Merci!
user2300643
En fait, j'ai trouvé le lien que je donne ici pour donner la meilleure réponse pour extraire les coefficients du modèle final stackoverflow.com/questions/48079660/…
Nusrat Rabbee

Réponses:

40

Disons que votre modèle caret est appelé "modèle". Vous pouvez accéder au modèle final de glmnet avec model$finalModel. Vous pouvez ensuite appeler coef(model$finalModel), etc. Vous devrez sélectionner une valeur de lambda pour laquelle vous souhaitez des coefficients, tels que coef(model$finalModel, model$bestTune$.lambda).

Jetez un œil au summaryFunctionparamètre de la trainControlfonction. Il vous permettra de spécifier n'importe quelle fonction que vous souhaitez minimiser (ou maximiser, voir l' maximizeargument train), en fonction d'un prédicteur et d'une réponse.

Il peut être difficile d'obtenir le R ^ 2 ajusté de cette manière, mais vous pouvez probablement obtenir R ^ 2 ou quelque chose de similaire.

Zach
la source
3
Merci, Zach. C'était exactement ça. Je tiens également à vous remercier pour votre colis caretEnsemble. Continuez votre bon travail.
user2300643
@ user2300643 Pas de problème! Je suis content que vous utilisiez le package.
Zach
6
Dans la caretversion 6.0.78, la meilleure écoute lambda est maintenant: model$bestTune$lambda.
Harrison
existe-t-il un moyen d'obtenir les erreurs standard de ces coefficients?
saifulsafuan