¿Cuáles son ejemplos de mezcla y apilamiento en Machine Learning?

El apilamiento y la fusión son dos enfoques similares de combinar clasificadores (ensamblaje).

Primero que nada, déjame referirte a esta Guía de Ensamblaje Kaggle. Creo que es muy simple y fácil de entender (más fácil que el documento).

La diferencia es que el Apilamiento usa predicciones fuera del pliegue para el conjunto de trenes, y Blending usa un conjunto de validación (digamos, 10% del conjunto de entrenamiento) para entrenar la siguiente capa.

Ensemble

Los enfoques de ensamblaje entrenan a varios clasificadores con la esperanza de que la combinación de sus predicciones supere a cualquier clasificador individual (en el peor de los casos, sea mejor que el peor clasificador). La regla de combinación puede ser: voto mayoritario, media, máximo, mínimo, producto … la regla promedio es la más utilizada.

Mezcla y apilamiento

Como se dijo antes, la mezcla y el apilamiento son dos enfoques muy similares. De hecho, algunas personas usan los términos como sinónimos. Dichos enfoques entrenan una primera capa de clasificadores y usan sus resultados (es decir, probabilidades) para entrenar una segunda capa de clasificadores. Se puede usar cualquier cantidad de capas. La predicción final generalmente se realiza por la regla promedio o por un clasificador base final (como la Regresión logística en clasificación binaria).

Figura de la guía de ensamblaje de Kaggle

No puede (o no debe) usar el conjunto de entrenamiento para pasar a la siguiente capa. Por esta razón, existen reglas como el uso de la validación de plegado cruzado (el fuera de plegado se usa para entrenar la siguiente capa) – Apilamiento – o el uso de una validación de retención (parte del tren se usa en la primera capa, parte en el segundo …) – Mezcla .

Tenga en cuenta

Tenga en cuenta que, aunque los ejemplos de la Guía de ensamblaje de Kaggle muestran los mismos clasificadores base (XGB) varias veces, los clasificadores deben ser lo suficientemente diversos para que el ensamblaje produzca buenos resultados. Esto podría lograrse usando diferentes clasificadores básicos, entrenando usando diferentes características, entrenando usando diferentes partes del conjunto de entrenamiento, o usando diferentes parámetros.

Código

He escrito una API de ensamblaje compatible con scikit-learn (python), tiene varios enfoques de ensamblaje. Si está buscando una manera fácil de realizar el apilamiento, creo que esto podría ayudarlo.

viisar / brew [PD: esta URL y el nombre del repositorio pueden cambiar, no dude en ponerse en contacto conmigo a través de quora si esta URL no funciona y le proporcionaré el nuevo repositorio del proyecto]

cerveza de importación
de brew.base import Ensemble
de brew.combination.combiner import Combiner
de brew.stacking.stacker import EnsembleStack
de brew.stacking.stacker import EnsembleStackClassifier

layer_1 = [SVC (probabilidad = Verdadero),
XGBClassifier (max_depth = 6, n_estimators = 100),
RandomForestClassifier (n_estimators = 100),
ExtraTreesClassifier (n_estimators = 100)]

layer_2 = [SVC (probabilidad = Verdadero), LogisticRegression (max_iter = 500)]

stack = EnsembleStack (cv = 10) # número de pliegues por capa
stack.add_layer (Conjunto (capa_1))
stack.add_layer (Conjunto (capa_2))

clf = EnsembleStackClassifier (stack, Combiner (‘mean’))

# carga tus datos aquí
X_tra, y_tra, X_tst, y_tst = get_data ()

clf.fit (X_tra, y_tra)
clf.predict_proba (X_tst)

La combinación y el apilamiento son dos enfoques, que se ocupan del ensamblaje del modelo.

Tanto en la combinación como en el apilamiento, varios modelos de predicción se combinan en un solo modelo de predicción, con el objetivo de aumentar el rendimiento de predicción.

Ambos entrenan diferentes modelos con los mismos datos de entrenamiento, utilizando las salidas como datos de entrenamiento para un meta clasificador para predecir un resultado final.

Por ejemplo, en la clasificación binaria, entrena un modelo SVM o un árbol de decisión. Luego puede usar la salida de SVM y el árbol de decisión para entrenar un meta clasificador como la regresión logística.

Kaggle tiene buenos artículos y muchos programas diversos de código abierto disponibles que demuestran estas técnicas.