Ir al contenido principal

Clasificador AdaBoost en Python

Entiende el enfoque ensemble, cómo funciona AdaBoost y aprende a construir modelos AdaBoost en Python.
Actualizado 17 sept 2026  · 8 min leer

Explorar con IA

ChatGPTClaudePerplexity

En los últimos años, los algoritmos de boosting se han vuelto muy populares en ciencia de datos y competiciones de machine learning. La mayoría de los ganadores de estas competiciones usan boosting para lograr gran precisión. Estas competiciones de ciencia de datos ofrecen una plataforma global para aprender, explorar y aportar soluciones a problemas empresariales y de administraciones públicas. Los algoritmos de boosting combinan varios modelos de baja precisión (o débiles) para crear modelos de alta precisión (o fuertes). Se pueden aplicar en ámbitos como crédito, seguros, marketing y ventas. Algoritmos como AdaBoost, Gradient Boosting y XGBoost se usan ampliamente para ganar competiciones de ciencia de datos. En este tutorial vas a aprender el algoritmo de ensemble AdaBoost, y cubriremos:

Enfoque de aprendizaje automático con ensembles

Un ensemble es un modelo compuesto que combina una serie de clasificadores de bajo rendimiento con el objetivo de crear un clasificador mejorado. Aquí, cada clasificador individual vota y la predicción final se obtiene por mayoría. Los ensembles suelen ser más precisos que un clasificador individual o base. Además, pueden paralelizarse asignando cada aprendiz base a máquinas distintas. En definitiva, los métodos de ensemble son meta-algoritmos que combinan varios métodos de machine learning en un único modelo predictivo para aumentar el rendimiento. Pueden reducir la varianza con bagging, reducir el sesgo con boosting o mejorar las predicciones con stacking.

Enfoque de aprendizaje automático con ensembles
  1. Bagging significa bootstrap aggregation. Combina múltiples aprendices para reducir la varianza de las estimaciones. Por ejemplo, Random Forest entrena M árboles de decisión: puedes entrenar M árboles distintos sobre subconjuntos aleatorios de los datos y votar para la predicción final. Métodos de bagging: Random Forest y Extra Trees.

  2. Los algoritmos de boosting parten de clasificadores de baja precisión para crear un clasificador de alta precisión. Un clasificador de baja precisión (o débil) ofrece una exactitud ligeramente mejor que lanzar una moneda. Un clasificador de alta precisión (o fuerte) presenta una tasa de error cercana a 0. El boosting puede centrarse en los casos que el modelo anterior predijo mal. Los algoritmos de boosting son menos propensos al sobreajuste. Los tres algoritmos siguientes gozan de gran popularidad en competiciones:

    • AdaBoost (Adaptive Boosting)
    • Gradient Tree Boosting
    • XGBoost
  3. Stacking (o stacked generalization) es una técnica de ensemble que combina las predicciones de múltiples modelos base en un nuevo conjunto de datos. Este nuevo conjunto se usa como entrada para otro clasificador final. A menudo también se denomina blending.

Enfoque de aprendizaje automático con ensembles

Según la disposición de los aprendices base, los métodos de ensemble pueden dividirse en dos grupos: en los ensembles en paralelo, los aprendices base se generan en paralelo (por ejemplo, Random Forest). En los ensembles secuenciales, los aprendices base se generan de forma secuencial (por ejemplo, AdaBoost).

Según el tipo de aprendices base, los ensembles pueden dividirse en dos grupos: el ensemble homogéneo usa el mismo tipo de aprendiz base en cada iteración. El ensemble heterogéneo usa distintos tipos de aprendices base en cada iteración.

Clasificador AdaBoost

AdaBoost, o Adaptive Boosting, es uno de los clasificadores de boosting propuesto por Yoav Freund y Robert Schapire en 1996. Combina múltiples clasificadores para aumentar la precisión. AdaBoost es un método iterativo: construye un clasificador fuerte combinando varios clasificadores con bajo rendimiento para lograr alta exactitud. La idea básica es ajustar los pesos de los clasificadores y de las muestras de entrenamiento en cada iteración para asegurar predicciones más precisas en observaciones inusuales. Cualquier algoritmo de machine learning puede usarse como clasificador base si acepta pesos en el conjunto de entrenamiento. AdaBoost debe cumplir dos condiciones:

  1. El clasificador debe entrenarse interactivamente sobre ejemplos ponderados.
  2. En cada iteración, intenta ajustar bien estos ejemplos minimizando el error de entrenamiento.

¿Cómo funciona el algoritmo AdaBoost?

Funciona en los siguientes pasos:

  1. Inicialmente, AdaBoost selecciona aleatoriamente un subconjunto de entrenamiento.
  2. Entrena el modelo de AdaBoost de forma iterativa eligiendo el conjunto de entrenamiento según las predicciones correctas de la iteración anterior.
  3. Asigna mayor peso a las observaciones mal clasificadas para que en la siguiente iteración tengan más probabilidad de ser clasificadas correctamente.
  4. También asigna un peso al clasificador entrenado en cada iteración según su precisión. Cuanto más preciso, mayor peso.
  5. Este proceso se repite hasta que los datos de entrenamiento se ajustan sin error o hasta alcanzar el número máximo de estimadores especificado.
  6. Para clasificar, realiza una "votación" entre todos los algoritmos de aprendizaje que has construido.
¿Cómo funciona el algoritmo AdaBoost?

Construir el modelo en Python

Importar las librerías necesarias

Primero, carguemos las librerías necesarias.

# Load libraries
from sklearn.ensemble import AdaBoostClassifier
from sklearn import datasets
# Import train_test_split function
from sklearn.model_selection import train_test_split
#Import scikit-learn metrics module for accuracy calculation
from sklearn import metrics

Cargar el dataset

Para la parte de construcción del modelo, puedes usar el conjunto IRIS, un problema de clasificación multiclase muy conocido. Este dataset incluye 4 características (longitud y anchura del sépalo, longitud y anchura del pétalo) y una variable objetivo (el tipo de flor). Hay tres clases: Setosa, Versicolour y Virginica. El dataset está disponible en la librería scikit-learn, o puedes descargarlo del repositorio UCI Machine Learning.

# Load data
iris = datasets.load_iris()
X = iris.data
y = iris.target

Dividir el dataset

Para entender el rendimiento del modelo, es buena práctica dividir el dataset en conjunto de entrenamiento y de prueba.

Vamos a dividirlo usando la función train_test_split(). Debes pasar 3 parámetros: características, objetivo y tamaño del conjunto de prueba.

# Split dataset into training set and test set
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3) # 70% training and 30% test

Construir el modelo AdaBoost

Creemos el modelo AdaBoost con Scikit-learn. AdaBoost utiliza por defecto DecisionTreeClassifier como clasificador base.

# Create adaboost classifer object
abc = AdaBoostClassifier(n_estimators=50,
                         learning_rate=1)
# Train Adaboost Classifer
model = abc.fit(X_train, y_train)

#Predict the response for test dataset
y_pred = model.predict(X_test)

"Los parámetros más importantes son base_estimator, n_estimators y learning_rate." (Adaboost Classifier, Chris Albon)

  • base_estimator: Es el aprendiz débil usado para entrenar el modelo. Usa DecisionTreeClassifier como aprendiz débil por defecto. También puedes especificar otros algoritmos.
  • n_estimators: Número de aprendices débiles que se entrenan de forma iterativa.
  • learning_rate: Contribuye a los pesos de los aprendices débiles. Por defecto es 1.

Evaluar el modelo

Calculemos qué tan bien el clasificador o modelo puede predecir el tipo de flor.

La exactitud se calcula comparando los valores reales del conjunto de prueba con los valores predichos.

# Model Accuracy, how often is the classifier correct?
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))
Accuracy: 0.8888888888888888

Has obtenido una precisión del 88,88%, una cifra muy razonable.

Para seguir evaluando, también puedes crear un modelo usando distintos estimadores base.

Usar distintos aprendices base

He usado SVC como estimador base. Puedes usar cualquier aprendiz de ML como estimador base si acepta pesos de muestra, como Decision Tree o Support Vector Classifier.

# Load libraries
from sklearn.ensemble import AdaBoostClassifier

# Import Support Vector Classifier
from sklearn.svm import SVC
#Import scikit-learn metrics module for accuracy calculation
from sklearn import metrics
svc=SVC(probability=True, kernel='linear')

# Create adaboost classifer object
abc =AdaBoostClassifier(n_estimators=50, base_estimator=svc,learning_rate=1)

# Train Adaboost Classifer
model = abc.fit(X_train, y_train)

#Predict the response for test dataset
y_pred = model.predict(X_test)


# Model Accuracy, how often is the classifier correct?
print("Accuracy:",metrics.accuracy_score(y_test, y_pred))
Accuracy: 0.9555555555555556

En este caso, la tasa de acierto es del 95,56%, una precisión muy buena.

Aquí, el estimador base SVC logra mejor precisión que el estimador base Decision Tree.

Pros

AdaBoost es fácil de implementar. Corrige iterativamente los errores del clasificador débil y mejora la precisión combinando aprendices débiles. Puedes usar muchos clasificadores base con AdaBoost. No suele ser propenso al sobreajuste. Esto se observa empíricamente, aunque no hay una razón teórica definitiva.

Contras

AdaBoost es sensible al ruido en los datos. Se ve muy afectado por los valores atípicos porque intenta ajustar cada punto a la perfección. Además, es más lento que XGBoost.

Conclusión

¡Enhorabuena, has llegado al final de este tutorial!

En este tutorial has aprendido los enfoques de aprendizaje con ensembles, el algoritmo AdaBoost, cómo funciona, cómo construir y evaluar el modelo con Python y la librería scikit-learn. También hemos comentado sus pros y contras.

Estaré encantado de leer tus comentarios o dudas. Puedes dejar una pregunta en los comentarios e intentaré responder lo antes posible.

Si quieres seguir aprendiendo sobre machine learning en Python, echa un vistazo a los cursos de DataCamp Extreme Gradient Boosting with XGBoost y Python Machine Learning: Scikit-Learn Tutorial.

Temas
Python

Cursos de Python

Curso

Introducción a Python

4 h
7M
Domina los fundamentos del análisis de datos con Python en cuatro horas y descubre sus paquetes más usados.
Ver detallesRight Arrow
Iniciar Curso
Ver másRight Arrow
Relacionado

Tutorial

Tutorial sobre el uso de XGBoost en Python

Descubre la potencia de XGBoost, uno de los marcos de machine learning más populares entre los científicos de datos, con este tutorial paso a paso en Python.

Tutorial

Tutorial de clasificación mediante árboles de decisión en Python

En este tutorial, aprenderás sobre la clasificación mediante árboles de decisión, las medidas de selección de atributos y cómo crear y optimizar un clasificador de árboles de decisión utilizando el paquete Scikit-learn de Python.
Avinash Navlani's photo

Avinash Navlani

12 min

Tutorial

Tutorial sobre clasificación bayesiana ingenua con Scikit-learn

Aprende a crear y evaluar un clasificador Naive Bayes utilizando el paquete Scikit-learn de Python.
Abid Ali Awan's photo

Abid Ali Awan

13 min

Tutorial

Tutorial del Optimizador Adam: Intuición e implementación en Python

Comprender y aplicar el optimizador Adam en Python. Aprende la intuición, las matemáticas y las aplicaciones prácticas del aprendizaje automático con PyTorch

Tutorial

Clasificación de textos en Python

Descubra qué es la clasificación de textos, cómo funciona y casos de uso con éxito. Explore ejemplos de principio a fin sobre cómo crear un canal de preprocesamiento de texto seguido de un modelo de clasificación de texto en Python.
Moez Ali's photo

Moez Ali

12 min

Tutorial

Tutorial de Python sobre conjuntos y teoría de conjuntos

Aprende sobre los conjuntos en Python: qué son, cómo crearlos, cuándo usarlos, funciones incorporadas y su relación con las operaciones de la teoría de conjuntos.
DataCamp Team's photo

DataCamp Team

13 min

Ver MásVer Más