Combinando modelos de aprendizaje automático

20

Soy un poco nuevo en minería de datos / aprendizaje automático / etc. y he estado leyendo sobre un par de formas de combinar múltiples modelos y ejecuciones del mismo modelo para mejorar las predicciones.

Mi impresión al leer un par de documentos (que a menudo son interesantes y geniales en teoría y letras griegas pero cortos en código y ejemplos reales) es que se supone que debe ser así:

Tomo un modelo ( knn, RF, etc.) y obtener una lista de los clasificadores entre 0 y 1. Mi pregunta es cómo hacerlo combinar cada una de estas listas de clasificadores? ¿Ejecuto los mismos modelos en mi conjunto de entrenamiento para que el número de columnas que van al modelo final sea el mismo o hay algún otro truco?

Sería genial si alguna sugerencia / ejemplo incluyera el código R.

NOTA: Esto es para un conjunto de datos con 100k líneas en el conjunto de entrenamiento y 70k en el conjunto de prueba y 10 columnas.

Chillido búho
fuente

Respuestas:

21

En realidad, se reduce a una de las técnicas "3B": embolsado, refuerzo o mezcla.

En el ensacado, entrena muchos clasificadores en diferentes subconjuntos de objetos y combina respuestas por promedio para regresión y votación para clasificación (hay algunas otras opciones para situaciones más complejas, pero lo omitiré). La proporción / varianza de voto puede interpretarse como una aproximación de error, ya que los clasificadores individuales generalmente se consideran independientes. RF es, de hecho, un conjunto de ensacado.

Impulsar es una familia más amplia de métodos, sin embargo, su punto principal es que construye el siguiente clasificador sobre los residuos del primero, de esta manera (en teoría) aumenta gradualmente la precisión al resaltar interacciones cada vez más sutiles. Por lo tanto, las predicciones generalmente se combinan resumiéndolas, algo así como calcular el valor de una función en x sumando los valores de los elementos de su serie Taylor para x.
Las versiones más populares son (Stochastic) Gradient Boosting (con una buena base matemática) y AdaBoost (bien conocido, de hecho, un caso específico de GB). Desde una perspectiva holística, el árbol de decisión es un impulso de clasificadores de pivote triviales.

La combinación es una idea de anidar clasificadores, es decir, ejecutar un clasificador en un sistema de información hecho de predicciones de otros clasificadores. Como tal, es un método muy variable y ciertamente no es un algoritmo definido; puede requerir muchos objetos (en la mayoría de los casos, el clasificador "licuadora" debe estar entrenado en un conjunto de objetos que no se utilizaron para construir los clasificadores parciales para evitar un ajuste excesivo embarazoso).
Obviamente, las predicciones de los clasificadores parciales se combinan fusionándolas en un sistema de información que predice el mezclador.


fuente
7

La expresión "combinar modelos" es vaga, pero supongo que está preguntando acerca de los métodos de aprendizaje por conjuntos. La mejor referencia para aprender sobre ellos es quizás los documentos de Rich Caruana:

http://www.cs.cornell.edu/~caruana/ctp/ct.papers/caruana.icml04.icdm06long.pdf

No hay un código real en este documento, pero el algoritmo se describe claramente, por lo que no debería tener ningún problema para codificarlo en el idioma que prefiera.

usuario765195
fuente
2

Después de mirar un poco con la ayuda de las respuestas anteriores, me di cuenta de cuál era mi problema. Había estado tratando de usar las predicciones de otros modelos en el mismo modelo que se usó para predecirlos. En otras palabras, si tuviera 5 variables cuando ejecuté el kNNmodelo, agregaría una nueva variable con las predicciones del kNNmodelo y haría un modelo con 6 variables cuando ejecuté el modelo aleatorio de Forest. Descubrí que, en cambio, los resultados de los modelos deberían segmentarse y ejecutarse como un modelo separado. Así que me gustaría crear predicciones de varios modelos ( knn, RF, svd, etc.) a continuación, ejecutar una mezcla modelo separado combinación / / apilamiento utilizando sólo las predicciones como variables y las clasificaciones como lo de predecir.

Creo que algunos de mis problemas fueron que al combinar las predicciones con las otras variables, puede haber habido un sobreajuste o multicolinealidad, pero no estoy seguro. Alguien más podría evaluar mejor lo que estaba haciendo mal. De todos modos, gracias a todos por su ayuda.

Chillido búho
fuente