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
- Implementa Bagging con 50 árboles.
- Implementa Gradient Boosting.
- Crea un Stacking con 2 modelos base.
- Crea un Voting Classifier.
- Explica cuándo usar ensambles.
# pista bagging
BaggingClassifier(n_estimators=50)
# pista voting
VotingClassifier(voting="soft")
7. Mini‑proyecto: Ensamble completo
Toma un dataset real y realiza:
- Bagging
- Boosting
- Stacking
- Voting
- Comparación de métricas entre todos los ensambles
- Informe final explicando cuál funciona mejor y por qué