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.
- ¿Qué compañía ofrece la mejor capacitación en inteligencia artificial para una carrera en Jaipur?
- ¿Cómo puedo usar las redes neuronales convolucionales recurrentes (RCNN) para correcciones tipográficas de OCR?
- ¿Cuáles son las ventajas y desventajas cuando comparamos la red neuronal convolucional y la red neuronal recursiva para el procesamiento del lenguaje natural?
- ¿La inteligencia artificial es solo aceite de serpiente?
- Dado un conjunto de datos y una estructura de red neuronal, ¿es posible predecir la precisión de esa red neuronal (usando otra red neuronal)?
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)