Caret y coeficientes (glmnet)

19

Estoy interesado en utilizar caret para hacer inferencias en un conjunto de datos en particular. ¿Es posible hacer lo siguiente?

  1. producir coeficientes de un modelo glmnet que entrené en caret. Me gustaría usar glmnet debido a la selección de funciones inherentes, ya que no creo que glm lo tenga.

  2. Aparte de la métrica ROC, ¿hay otra métrica que pueda utilizar para evaluar el ajuste del modelo? Tal como ajustado ?R2

El propósito de este análisis es derivar alguna inferencia sobre los efectos de variables particulares, más que para la predicción. Simplemente me gusta el paquete caret porque hasta ahora ha sido fácil trabajar con matrices.

usuario2300643
fuente
3
El paquete caret viene con una serie de viñetas (y un documento JSS) que cubren la mayoría de sus preguntas. ¿Podría indicar qué quiere decir exactamente con "derivar alguna inferencia sobre el efecto de variables particulares?"
chl
Inferencia a través de los coeficientes. Estoy leyendo a través del modelado predictivo aplicado para aprender más sobre R y la construcción de modelos simultáneamente. Había leído las viñetas y el pdf, pero hay tantas funciones que es difícil hacer un seguimiento de todas ellas. Sin embargo, Zach respondió a mi pregunta, así que estoy agradecido. ¡Gracias!
user2300643
En realidad, encontré el enlace que doy aquí para dar la mejor respuesta para extraer los coeficientes del modelo final stackoverflow.com/questions/48079660/…
Nusrat Rabbee

Respuestas:

40

Digamos que su modelo de caret se llama "modelo". Puede acceder al modelo glmnet final con model$finalModel. Luego puede llamar coef(model$finalModel), etc. Tendrá que seleccionar un valor de lambda para el que desee coeficientes, como coef(model$finalModel, model$bestTune$.lambda).

Observe el summaryFunctionparámetro para la trainControlfunción. Le permitirá especificar cualquier función que desee minimizar (o maximizar, vea el maximizeargumento train), dado un predictor y una respuesta.

Puede ser difícil obtener R ^ 2 ajustado de esta manera, pero probablemente podría obtener R ^ 2 o algo similar.

Zach
fuente
3
Gracias Zach Eso fue exactamente eso. Además, quiero agradecerle por su paquete caretEnsemble. Por favor sigan con el buen trabajo.
user2300643
@ user2300643 ¡No hay problema! Me alegra que estés usando el paquete.
Zach
66
En caretla versión 6.0.78, lambda mejor sintonizado es ahora: model$bestTune$lambda.
Harrison el
¿Hay alguna manera de obtener los errores estándar de esos coeficientes?
saifulsafuan