Vorrei usare GLM e Elastic Net per selezionare quelle caratteristiche rilevanti + costruire un modello di regressione lineare (cioè sia la previsione che la comprensione, quindi sarebbe meglio rimanere con relativamente pochi parametri). L'output è continuo. Sono geni per casi. Ho letto del pacchetto, ma non sono sicuro al 100% dei passaggi da seguire:glmnet
Esegui CV per scegliere lambda:
cv <- cv.glmnet(x,y,alpha=0.5)
(Q1) dati i dati di input, sceglieresti un valore alfa diverso?
(Q2) devo fare qualcos'altro prima di costruire il modello?Adatta il modello:
model=glmnet(x,y,type.gaussian="covariance",lambda=cv$lambda.min)
(Q3) qualcosa di meglio della "covarianza"?
(Q4) Se lambda è stato scelto da CV, perché è necessario questo passaggionlambda=?
(Q5) è meglio usarelambda.minolambda.1se?Ottieni i coefficienti, per vedere quali parametri sono stati esclusi ("."):
predict(model, type="coefficients")Nella pagina di aiuto ci sono molti
predictmetodi (ad esempio,predict.fishnet,predict.glmnet,predict.lognet, ecc). Ma qualsiasi previsione "semplice" come ho visto su un esempio.
(Q6) Dovrei usarepredictopredict.glmneto altro?
Nonostante ciò che ho letto sui metodi di regolarizzazione, sono abbastanza nuovo in R e in questi pacchetti statistici, quindi è difficile essere sicuri se sto adattando il mio problema al codice. Eventuali suggerimenti saranno i benvenuti.
AGGIORNAMENTO
Basato su "Come precedentemente notato, un oggetto di un treno di classe contiene un elemento chiamato finalModel, che è il modello adattato con i valori dei parametri di ottimizzazione selezionati mediante ricampionamento. Questo oggetto può essere utilizzato nel modo tradizionale per generare previsioni per nuovi campioni, usando quello funzione di previsione del modello ".
Usando caretper sintonizzare sia alpha che lambda:
trc = trainControl(method=cv, number=10)
fitM = train(x, y, trControl = trC, method="glmnet")
Non fitMsostituire precedente punto 2? In tal caso, come specificare le opzioni glmnet ( type.gaussian="naive",lambda=cv$lambda.min/1se) ora?
E il predictpassaggio seguente , posso sostituire modela fitM?
Se lo faccio
trc = trainControl(method=cv, number=10)
fitM = train(x, y, trControl = trC, method="glmnet")
predict(fitM$finalModel, type="coefficients")
ha senso o sto mescolando erroneamente entrambi i termini del pacchetto?