Je voudrais utiliser GLM et Elastic Net pour sélectionner ces fonctionnalités pertinentes + construire un modèle de régression linéaire (c'est-à-dire à la fois la prédiction et la compréhension, il serait donc préférable de se retrouver avec relativement peu de paramètres). La sortie est continue. C'est gènes pour 50 cas. J'ai lu sur le paquet, mais je ne suis pas sûr à 100% des étapes à suivre:glmnet
Effectuez CV pour choisir lambda:
cv <- cv.glmnet(x,y,alpha=0.5)
(Q1) étant donné les données d'entrée, choisiriez-vous une valeur alpha différente?
(Q2) Dois -je faire autre chose avant de construire le modèle?Ajuster le modèle:
model=glmnet(x,y,type.gaussian="covariance",lambda=cv$lambda.min)
(Q3) quelque chose de mieux que la "covariance"?
(Q4) Si lambda a été choisi par CV, pourquoi cette étape est-elle nécessairenlambda=
?
(Q5) est-il préférable d'utiliserlambda.min
oulambda.1se
?Obtenez les coefficients, pour voir quels paramètres sont tombés ("."):
predict(model, type="coefficients")
Dans la page d'aide il y a beaucoup de
predict
méthodes (par exemple,predict.fishnet
,predict.glmnet
,predict.lognet
, etc.). Mais tout "simple" prédire comme je l'ai vu sur un exemple.
(Q6) Dois-je utiliserpredict
oupredict.glmnet
ou autre?
Malgré ce que j'ai lu sur les méthodes de régularisation, je suis assez nouveau dans R et dans ces packages statistiques, il est donc difficile d'être sûr d'adapter mon problème au code. Toute suggestion sera la bienvenue.
MISE
À JOUR Basé sur "Comme indiqué précédemment, un objet de train de classe contient un élément appelé finalModel
, qui est le modèle ajusté avec les valeurs des paramètres de réglage sélectionnés par rééchantillonnage. Cet objet peut être utilisé de manière traditionnelle pour générer des prédictions pour de nouveaux échantillons, en utilisant celui fonction de prédiction du modèle. "
Utilisation caret
pour régler à la fois alpha et lambda:
trc = trainControl(method=cv, number=10)
fitM = train(x, y, trControl = trC, method="glmnet")
Ne fitM
remplacer étape précédente 2? Si oui, comment spécifier maintenant les options glmnet ( type.gaussian="naive",lambda=cv$lambda.min/1se
)?
Et ce qui suit predict
pas, puis - je remplacer model
à fitM
?
Si je fais
trc = trainControl(method=cv, number=10)
fitM = train(x, y, trControl = trC, method="glmnet")
predict(fitM$finalModel, type="coefficients")
est-ce que cela a du sens ou est-ce que je mélange de manière incorrecte le vocabulaire des deux packages?
caret
est un package de wrapper R qui enveloppe les interfaces de fonction de plus de 100 packages ML pour être plus cohérent et ajoute CV, gridsearch, modifie les paramètres par défaut insensés, etc. Ce n'est pas sans ses bizarreries mais c'est assez bon et largement utilisé.cva.glmnet(..)
au lieu de justecv.glmnet(...)
et régler alpha et lambda en même temps. Ensuite, vous pouvez exécuterminlossplot(cva.fit)
pour voir quel alpha donne le meilleur résultat. Cela fait tous deux partie de glmnetUtils