Ensemble
El aprendizaje por conjuntos combina las predicciones de varios modelos mediante bagging, boosting o stacking para conseguir un error menor que el de cualquiera de sus componentes por separado.
El aprendizaje por conjuntos entrena varios modelos para una misma tarea y combina sus predicciones mediante votación, promediado o un combinador aprendido, para generar una única salida que suele ser más precisa y estable que la de cualquiera de los modelos por separado. Funciona porque los distintos modelos cometen errores diferentes, y al combinarlos se cancela parte del error de cada uno. En 1995, Anders Krogh y Jesper Vedelsby demostraron que esto se cumple exactamente en modelos de regresión promediados: el error cuadrático del conjunto es igual al error medio de sus componentes menos su desacuerdo medio con el conjunto. Por tanto, un conjunto promediado nunca es peor que su componente medio, y la diversidad entre sus componentes es lo que lo hace mejor.
Bagging, boosting y stacking#
Tres familias abarcan la mayoría de los conjuntos de aprendizaje automático, y cada una actúa sobre distintos aspectos del compromiso entre sesgo y varianza.
El bagging, abreviatura de agregación bootstrap, fue introducido por Leo Breiman en 1996. Entrena cada componente de forma independiente con una muestra bootstrap extraída del conjunto de entrenamiento con reemplazo, y promedia los resultados o vota por ellos, lo que reduce principalmente la varianza. Es adecuado para aprendices inestables, como los árboles de decisión profundos. El bosque aleatorio de Breiman, de 2001, añade un subconjunto aleatorio de características en cada división para que los árboles sean aún más distintos.
El boosting entrena los componentes en secuencia, y cada uno se centra en los errores del conjunto acumulado hasta ese momento, lo que reduce principalmente el sesgo. AdaBoost, de Yoav Freund y Robert Schapire, aumenta el peso de los ejemplos mal clasificados antes de entrenar el siguiente aprendiz débil. El gradient boosting de Jerome Friedman ajusta cada árbol nuevo al gradiente de la función de pérdida, el enfoque que utilizan XGBoost, LightGBM y CatBoost, que siguen siendo los modelos más potentes en muchos conjuntos de datos tabulares.
El stacking, o generalización apilada, fue propuesto por David Wolpert en 1992. Un metamodelo, a menudo una regresión logística, aprende a combinar modelos base heterogéneos a partir de sus predicciones en particiones reservadas, y da más peso a los modelos cuyas predicciones reservadas son más fiables.
Este ejemplo de scikit-learn compara un árbol individual con un conjunto de cada familia en un conjunto de datos de diagnósticos de cáncer de mama, mediante validación cruzada de 5 particiones:
from sklearn.datasets import load_breast_cancer
from sklearn.ensemble import GradientBoostingClassifier, RandomForestClassifier, StackingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.model_selection import cross_val_score
from sklearn.tree import DecisionTreeClassifier
X, y = load_breast_cancer(return_X_y=True) # 569 tumors, 30 measurements each
forest = RandomForestClassifier(n_estimators=200, random_state=0)
boosting = GradientBoostingClassifier(random_state=0)
models = {
"Single decision tree": DecisionTreeClassifier(random_state=0),
"Bagging (random forest)": forest,
"Boosting (gradient boosting)": boosting,
# Stacking: a logistic regression learns how to combine the forest and the boosted trees
"Stacking": StackingClassifier([("forest", forest), ("boosting", boosting)], LogisticRegression()),
}
for name, model in models.items():
print(f"{name}: {cross_val_score(model, X, y, cv=5).mean():.3f}")El árbol individual obtiene 0,917, el bosque aleatorio 0,960, el gradient boosting 0,963 y el modelo apilado 0,963. Todos los conjuntos reducen aproximadamente a la mitad el error del árbol. El stacking iguala a su componente más potente porque 16 de los 23 tumores que clasifica mal el bosque también están mal clasificados por los árboles potenciados, lo que deja poco desacuerdo que el metamodelo pueda aprovechar.
Conjuntos en aprendizaje profundo y visión#
Los conjuntos profundos entrenan varias redes neuronales con distintas inicializaciones aleatorias y promedian sus salidas. En 2017, Balaji Lakshminarayanan y sus colegas de DeepMind demostraron que esto mejora tanto la precisión como la cuantificación de la incertidumbre, porque los componentes discrepan más ante entradas distintas de los datos de entrenamiento. En la detección de objetos, se agrupan las cajas delimitadoras de varios detectores y se fusionan con la supresión no máxima (NMS) o Weighted Boxes Fusion, que promedia las cajas superpuestas en lugar de conservar solo la más segura. Los conjuntos de arquitecturas distintas son habituales en el análisis de imágenes médicas y en las participaciones en competiciones, donde la precisión importa más que el coste de inferencia.
Ese coste aumenta con cada componente, lo que limita los conjuntos en dispositivos de IA en el borde. La destilación de conocimiento se introdujo en parte para resolver este problema: Geoffrey Hinton, Oriol Vinyals y Jeff Dean entrenaron un único modelo para imitar las salidas promediadas de un conjunto. El dropout es una alternativa más económica, ya que entrenar con él aproxima el promedio de un número exponencial de subredes reducidas.
Conjuntos de modelos, model soups y mezclas de expertos#
Un conjunto de modelos suele consistir en combinar redes entrenadas por separado durante la inferencia, la forma más habitual de aprendizaje por conjuntos en el aprendizaje profundo. Los model soups y otros métodos de fusión de modelos promedian los pesos en lugar de las predicciones, lo que mantiene el coste de un solo modelo, pero solo funciona con modelos ajustados a partir de los mismos pesos preentrenados. Una mezcla de expertos (MoE) entrena a sus expertos conjuntamente con un enrutador que envía cada entrada a unos pocos de ellos, para que los expertos se especialicen en lugar de resolver cada uno toda la tarea.
Promediar los pesos a lo largo de una única ejecución de entrenamiento aproxima un conjunto de puntos de control de esa ejecución al coste de un solo modelo, como demostraron Pavel Izmailov y sus colegas con el promediado estocástico de pesos en 2018. El entrenamiento de Ultralytics YOLO aplica este método en cada ejecución de YOLO26: mantiene un promedio móvil exponencial de los pesos, actualizado tras cada paso del optimizador con una tasa de decaimiento que aumenta progresivamente hasta 0.9999, y valida y guarda ese promedio en best.pt y last.pt en lugar de los pesos sin promediar.










