Agregación Bootstrap (Bagging) en Python

La Agregación Bootstrap, comúnmente conocida como Bagging (Bootstrap Aggregating), es una técnica de machine learning en conjunto (ensemble learning) que se utiliza para mejorar la precisión y la estabilidad de los modelos de predicción. La idea detrás de Bagging es entrenar múltiples modelos, cada uno en una muestra aleatoria con reemplazo (bootstrap) del conjunto de datos original, y luego combinar las predicciones de estos modelos para obtener una predicción final más robusta y generalizada.

En Python, puedes implementar Bagging utilizando la biblioteca scikit-learn, que proporciona una clase llamada BaggingClassifier para aplicar esta técnica a diferentes clasificadores. También existe BaggingRegressor para problemas de regresión.


Ejemplo de Bagging con clasificación

A continuación, te mostraré un ejemplo simple de cómo utilizar Bagging con el clasificador de árboles de decisión (DecisionTreeClassifier) en Python:

# Ejemplo de Agregación Bootstrap (Bagging) en Python
# Utilizando el clasificador DecisionTreeClassifier

# Importar bibliotecas necesarias
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeClassifier
from sklearn.ensemble import BaggingClassifier
from sklearn.metrics import accuracy_score

# Cargar el conjunto de datos de ejemplo (iris dataset)
iris = load_iris()
X, y = iris.data, iris.target

# Dividir el conjunto de datos en entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Crear el clasificador base (árbol de decisión)
base_classifier = DecisionTreeClassifier()

# Crear el clasificador Bagging utilizando el clasificador base
bagging_classifier = BaggingClassifier(base_classifier, n_estimators=10, random_state=42)

# Entrenar el clasificador Bagging
bagging_classifier.fit(X_train, y_train)

# Realizar predicciones en el conjunto de prueba
y_pred = bagging_classifier.predict(X_test)

# Calcular la precisión del clasificador Bagging
accuracy = accuracy_score(y_test, y_pred)
print("Precisión del clasificador Bagging:", accuracy)

En este ejemplo, cargamos el conjunto de datos de iris, dividimos los datos en conjuntos de entrenamiento y prueba, y creamos un clasificador de árboles de decisión (base_classifier). Luego, creamos un clasificador Bagging (bagging_classifier) utilizando el clasificador base y especificando el número de estimadores (10 en este caso).

Finalmente, entrenamos el clasificador Bagging con los datos de entrenamiento y hacemos predicciones en el conjunto de prueba para calcular su precisión.

Este es solo un ejemplo básico de cómo utilizar Bagging en Python con scikit-learn. Puedes experimentar con diferentes clasificadores base y ajustar los parámetros para obtener un mejor rendimiento en tus propios problemas de aprendizaje automático.


Ejemplo de Bagging para Regresión

En este código, se muestra un ejemplo de cómo aplicar Bagging a un problema de regresión en Python utilizando la biblioteca scikit-learn. Se importan las bibliotecas necesarias, se carga el conjunto de datos de Boston Housing, se divide en conjuntos de entrenamiento y prueba, se crea el regresor base (árbol de decisión), y se crea y entrena el regresor Bagging con 10 estimadores.

Finalmente, se realizan predicciones en el conjunto de prueba y se calcula el error cuadrático medio (MSE) del regresor Bagging utilizando la métrica mean_squared_error.

# Ejemplo de Bagging para Regresión en Python

# Importar bibliotecas necesarias
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
from sklearn.tree import DecisionTreeRegressor
from sklearn.ensemble import BaggingRegressor
from sklearn.metrics import mean_squared_error

# Cargar el conjunto de datos de ejemplo (boston housing dataset)
boston = load_boston()
X, y = boston.data, boston.target

# Dividir el conjunto de datos en entrenamiento y prueba
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# Crear el regresor base (árbol de decisión)
base_regressor = DecisionTreeRegressor()

# Crear el regresor Bagging utilizando el regresor base
bagging_regressor = BaggingRegressor(base_regressor, n_estimators=10, random_state=42)

# Entrenar el regresor Bagging
bagging_regressor.fit(X_train, y_train)

# Realizar predicciones en el conjunto de prueba
y_pred = bagging_regressor.predict(X_test)

# Calcular el error cuadrático medio del regresor Bagging
mse = mean_squared_error(y_test, y_pred)
print("Error cuadrático medio del regresor Bagging (Regresión):", mse)

En ambos casos, para clasificación y para regresión, se utilizan conjuntos de datos de ejemplo (iris dataset para clasificación y boston housing dataset para regresión). Se crea un clasificador o regresor base (árbol de decisión) y luego se utiliza la clase BaggingClassifier o BaggingRegressor para aplicar la técnica de Agregación Bootstrap con 10 estimadores. Luego, se entrenan los modelos, se hacen predicciones y se evalúan utilizando métricas apropiadas (precisión para clasificación y error cuadrático medio para regresión).

Estos ejemplos son solo una introducción a la aplicación de Bagging en Python. Puedes experimentar con diferentes clasificadores o regresores base, así como ajustar los parámetros para obtener el mejor rendimiento en tus propios problemas de aprendizaje automático.