IOKELU
Nivel: Inteligencia Artificial – Intermedio (Guía 19)

Ensamble de modelos

El ensamble de modelos combina múltiples algoritmos para obtener un rendimiento superior al de cualquier modelo individual. Es una técnica ampliamente usada en la industria y en competiciones como Kaggle.

Tabla de contenidos

  • Qué es un ensamble
  • Bagging
  • Boosting
  • Stacking
  • Voting Classifier
  • Ejercicios
  • Mini‑proyecto

1. Qué es un ensamble

Un ensamble combina varios modelos para mejorar estabilidad, precisión y generalización.

# Ejemplo conceptual
modelo1 + modelo2 + modelo3 → predicción final

2. Bagging

Bagging entrena múltiples modelos en diferentes subconjuntos del dataset. Random Forest es el ejemplo más famoso.

from sklearn.ensemble import BaggingClassifier
from sklearn.tree import DecisionTreeClassifier

model = BaggingClassifier(
    base_estimator=DecisionTreeClassifier(),
    n_estimators=50
)

model.fit(X_train, y_train)

3. Boosting

Boosting entrena modelos secuenciales, cada uno corrigiendo los errores del anterior. Ejemplos: Gradient Boosting, XGBoost, LightGBM, CatBoost.

from sklearn.ensemble import GradientBoostingClassifier

model = GradientBoostingClassifier()
model.fit(X_train, y_train)

4. Stacking

Stacking combina varios modelos base y usa un modelo final (meta‑modelo) para hacer la predicción definitiva.

from sklearn.ensemble import StackingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.tree import DecisionTreeClassifier
from sklearn.svm import SVC

estimators = [
    ("tree", DecisionTreeClassifier()),
    ("svm", SVC(probability=True))
]

stack = StackingClassifier(
    estimators=estimators,
    final_estimator=LogisticRegression()
)

stack.fit(X_train, y_train)

5. Voting Classifier

Voting combina predicciones de varios modelos mediante votación.

from sklearn.ensemble import VotingClassifier
from sklearn.linear_model import LogisticRegression
from sklearn.svm import SVC
from sklearn.tree import DecisionTreeClassifier

model = VotingClassifier(
    estimators=[
        ("lr", LogisticRegression()),
        ("svm", SVC(probability=True)),
        ("tree", DecisionTreeClassifier())
    ],
    voting="soft"
)

model.fit(X_train, y_train)

6. Ejercicios

7. Mini‑proyecto: Ensamble completo

Toma un dataset real y realiza:


Siguiente guía

Interpretación avanzada (SHAP, LIME, Permutation) →