Modelos de apilamiento / ensamblaje con caret

21

A menudo me encuentro entrenando varios modelos predictivos diferentes usando careten R. Los entrenaré a todos en los mismos pliegues de validación cruzada, usando caret::: createFolds, luego elegiré el mejor modelo basado en un error de validación cruzada.

Sin embargo, la predicción mediana de varios modelos a menudo supera al mejor modelo individual en un conjunto de pruebas independiente. Estoy pensando en escribir algunas funciones para apilar / armar modelos de caretas que se entrenaron con los mismos pliegues de validación cruzada, por ejemplo, tomando predicciones medianas de cada modelo en cada pliegue, o entrenando un "metamodelo".

Por supuesto, esto podría requerir un bucle externo de validación cruzada. ¿Alguien sabe de algún paquete existente / código fuente abierto para ensamblar modelos de caret (y posiblemente validar de forma cruzada esos conjuntos)?

Zach
fuente

Respuestas:

19

Parece que Max Kuhn comenzó a trabajar en un paquete para ensamblar modelos de caret , pero aún no ha tenido tiempo de terminarlo. Esto es exactamente lo que estaba buscando. ¡Espero que el proyecto termine algún día!

editar: escribí mi propio paquete para hacer esto: caretEnsemble

Zach
fuente
1
Excelente trabajo en este paquete!
mikeycgto
8

Lo que está buscando se llama "ensamblaje de modelos". Puede encontrar un tutorial introductorio simple con código R aquí: http://viksalgorithms.blogspot.jp/2012/01/intro-to-ensemble-learning-in-r.html

thiakx
fuente
3
No para ser quisquilloso, pero "ensamblar" está justo en el título de mi publicación. Estoy buscando específicamente un paquete R para ensamblar modelos arbitrarios, que no parece existir. Gracias por publicar el código, sin embargo. ¡Quizás escriba mi propio paquete!
Zach
1

No estoy muy seguro de lo que está buscando, pero esto podría ayudar: http://www.jstatsoft.org/v28/i05/paper

Es cómo usar múltiples modelos en caret. La parte que le puede interesar es la sección 5 en la pág. 13)

Chillido búho
fuente
Lo que estoy buscando es un paquete que tome como entrada una lista de objetos de intercalación, y luego arroje la media, media o promedio ponderado de sus predicciones. Una funcionalidad más avanzada podría incluir la optimización de los pesos a través de la validación cruzada anidada.
Zach