Capítulo 8: AutoML y Ingeniería de Características Automatizada
8.2 Introducción a las herramientas de características y bibliotecas de AutoML
En los últimos años, los avances en la automatización del aprendizaje automático han dado lugar al desarrollo de herramientas y bibliotecas potentes que simplifican los procesos de ingeniería de características y modelado. Las herramientas de características y las bibliotecas de AutoML permiten a los científicos de datos y analistas automatizar tareas esenciales como la limpieza de datos, la transformación, la selección de características e incluso el entrenamiento de modelos. Esta automatización facilita la extracción de información valiosa a partir de conjuntos de datos complejos, permitiendo una experimentación más rápida y reduciendo el potencial de errores humanos.
En esta sección, exploraremos algunas de las herramientas de características y bibliotecas de AutoML más utilizadas, como Featuretools, Auto-sklearn, TPOT y MLBox. Estas herramientas pueden simplificar la ingeniería de características y la construcción de modelos, y cada una tiene características únicas que la hacen adecuada para tipos específicos de proyectos.
8.2.1 Featuretools: Automatización de la ingeniería de características con Deep Feature Synthesis
Featuretools se destaca como una biblioteca poderosa dedicada a la automatización del proceso de ingeniería de características. A diferencia de los métodos manuales tradicionales, Featuretools emplea una técnica sofisticada llamada síntesis profunda de características (deep feature synthesis) para generar características complejas en múltiples tablas o dataframes. Este enfoque es particularmente valioso cuando se trabaja con bases de datos relacionales o datos de series temporales, donde las relaciones entre diferentes entidades de datos pueden proporcionar información significativa.
El método de síntesis profunda de características en Featuretools opera recorriendo las relaciones definidas entre diferentes tablas en un conjunto de datos. Aplica automáticamente varias funciones de transformación y agregación a lo largo de estos caminos, creando nuevas características que capturan patrones y dependencias intrincados dentro de los datos. Por ejemplo, en un conjunto de datos de ventas minoristas, podría generar características como "monto promedio de compra por cliente en los últimos 30 días" o "número de productos únicos comprados por cada cliente", sin necesidad de codificar manualmente estos cálculos.
Este enfoque automatizado ofrece varias ventajas:
- Eficiencia: Featuretools simplifica significativamente el proceso de ingeniería de características, reduciendo drásticamente el tiempo y el esfuerzo requeridos. Esto permite a los científicos de datos dedicar más tiempo y recursos a otros aspectos críticos del flujo de trabajo de aprendizaje automático, como la interpretación de modelos, el ajuste fino y las estrategias de implementación. Al automatizar tareas repetitivas, permite iteraciones más rápidas y experimentación, lo que potencialmente lleva a conocimientos más rápidos y modelos más robustos.
- Exhaustividad: El enfoque sistemático de exploración de características de la herramienta es una ventaja clave. Al examinar exhaustivamente todas las combinaciones posibles de características, Featuretools puede descubrir patrones y relaciones intrincadas dentro de los datos que podrían no ser obvios o fáciles de pasar por alto para los analistas humanos. Esta exploración exhaustiva a menudo conduce al descubrimiento de características altamente predictivas que pueden mejorar significativamente el rendimiento del modelo.
- Escalabilidad: Una de las capacidades destacadas de Featuretools es su habilidad para manejar conjuntos de datos complejos y a gran escala con múltiples tablas relacionadas. Esto es particularmente valioso para aplicaciones a nivel empresarial, donde los datos a menudo se distribuyen entre varios sistemas y bases de datos interconectados. La escalabilidad de la herramienta garantiza que, a medida que los volúmenes de datos crecen y se vuelven más complejos, el proceso de ingeniería de características siga siendo eficiente y efectivo, permitiendo a las organizaciones aprovechar todo su ecosistema de datos para tareas de aprendizaje automático.
- Consistencia: La naturaleza automatizada de Featuretools asegura un enfoque estandarizado para la creación de características en diferentes proyectos y entre miembros del equipo. Esta consistencia es crucial para mantener la calidad y la reproducibilidad de los modelos de aprendizaje automático, especialmente en entornos colaborativos. Ayuda a eliminar discrepancias que podrían surgir de los diferentes enfoques de los analistas, asegurando que la ingeniería de características siga las mejores prácticas de manera consistente. Esta estandarización también facilita el mantenimiento del modelo, las actualizaciones y la transferencia de conocimientos dentro de los equipos de ciencia de datos.
Además, la consistencia proporcionada por Featuretools contribuye a una mejor documentación y trazabilidad del proceso de ingeniería de características. Esto es particularmente importante para industrias con requisitos regulatorios estrictos, donde la capacidad de explicar y justificar las entradas del modelo es crucial. El enfoque sistemático de la herramienta facilita el seguimiento del origen y la lógica detrás de cada característica generada, mejorando la transparencia e interpretabilidad del flujo de trabajo de aprendizaje automático.
Al aprovechar Featuretools, los científicos de datos pueden mejorar significativamente su capacidad para extraer características significativas de conjuntos de datos complejos y de múltiples tablas, mejorando potencialmente el desempeño e interpretabilidad de sus modelos de aprendizaje automático.
Cómo funciona Featuretools
Featuretools opera utilizando un conjunto de entidades (EntitySet), que es una colección de dataframes relacionados. Esta estructura permite a la herramienta comprender y aprovechar las relaciones entre diferentes tablas de datos. Al definir estas relaciones, Featuretools puede realizar una generación sofisticada de características mediante diversas operaciones, principalmente agregación y transformación.
El poder de Featuretools radica en su capacidad para crear automáticamente características complejas y significativas en conjuntos de datos relacionados. Por ejemplo, en un escenario minorista con tablas separadas de clientes y transacciones, Featuretools puede generar características detalladas a nivel de cliente. Estas podrían incluir métricas como el promedio de monto por transacción por cliente, la frecuencia de compras o el gasto total en un período de tiempo específico.
Este proceso automatizado de generación de características va más allá de simples agregaciones. Featuretools puede crear características basadas en el tiempo (por ejemplo, "número de transacciones en los últimos 30 días"), aplicar transformaciones matemáticas e incluso generar características que abarcan múltiples tablas relacionadas. Por ejemplo, podría crear una característica como "porcentaje de transacciones de alto valor en comparación con el promedio del cliente", que requiere comprender tanto el historial del cliente como los patrones generales de transacciones.
Al automatizar estas complejas tareas de ingeniería de características, Featuretools reduce significativamente el esfuerzo manual requerido en la preparación de datos, permitiendo que los científicos de datos se concentren en el desarrollo y la interpretación de modelos. Esta capacidad es particularmente valiosa al trabajar con conjuntos de datos grandes y complejos, donde la ingeniería manual de características sería un proceso que consume mucho tiempo y podría pasar por alto patrones potencialmente importantes.
Funciones clave de Featuretools
- EntitySet: Este componente fundamental de Featuretools gestiona los dataframes relacionados, estableciendo la estructura para la síntesis profunda de características (Deep Feature Synthesis). Permite a los usuarios definir relaciones entre diferentes tablas, creando una representación coherente de estructuras de datos complejas. Esto es especialmente útil cuando se trabaja con bases de datos relacionales o conjuntos de datos que abarcan múltiples tablas.
- Deep Feature Synthesis (DFS): En el núcleo de la funcionalidad de Featuretools, DFS es un algoritmo avanzado que aplica diversas funciones de agregación y transformación en las columnas para generar nuevas características. Recorre las relaciones definidas en el EntitySet, creando características que capturan interacciones y patrones complejos dentro de los datos. DFS puede producir características que abarcan múltiples tablas, revelando conocimientos que serían difíciles de discernir manualmente.
- Feature Primitives: Son los bloques básicos de construcción de la ingeniería de características en Featuretools. Los primitives son funciones predefinidas como promedio, suma, moda, conteo y operaciones más complejas. Sirven como base para la generación automática de características, permitiendo crear una amplia variedad de tipos de características. Los usuarios también pueden definir primitives personalizados para adaptar el proceso de generación de características a conocimientos o requisitos específicos del dominio.
- Ingeniería de características basada en el tiempo: Featuretools sobresale en la creación de características basadas en el tiempo, que son cruciales para muchas tareas de modelado predictivo. Puede generar automáticamente características como "tiempo desde el último evento", "valor promedio en los últimos N días" o "suma acumulativa hasta este punto", capturando dinámicas temporales en los datos.
- Selección y reducción de características: Para manejar el gran número de características generadas, Featuretools proporciona métodos para la selección de características y la reducción de dimensionalidad. Estas herramientas ayudan a identificar las características más relevantes, reducir el ruido y mejorar el rendimiento y la interpretabilidad del modelo.
Ejemplo: Ingeniería de características con Featuretools
Para ilustrar el poder de Featuretools, exploremos un ejemplo práctico utilizando dos conjuntos de datos interconectados: una tabla de clientes y una tabla de transacciones. Este escenario es común en muchas aplicaciones comerciales, donde comprender el comportamiento del cliente a través de su historial de transacciones es crucial para la toma de decisiones y el modelado predictivo.
En este ejemplo, aprovecharemos la síntesis profunda de características para generar automáticamente características que capturen patrones intrincados en el comportamiento de transacción de los clientes. Este proceso demostrará cómo Featuretools puede descubrir información valiosa que sería desafiante o llevaría mucho tiempo derivar manualmente.
Las características que crearemos irán más allá de las simples agregaciones. Podrían incluir:
- Métricas de recencia: ¿Cuán reciente fue la última transacción de cada cliente?
- Métricas de frecuencia: ¿Con qué frecuencia realiza transacciones cada cliente?
- Métricas de valor monetario: ¿Cuál es el promedio o el valor total de las transacciones de cada cliente?
- Indicadores de tendencia: ¿Los montos de las transacciones de un cliente están aumentando o disminuyendo con el tiempo?
Al automatizar la creación de estas características complejas, Featuretools permite a los científicos de datos generar rápidamente un conjunto rico de predictores que pueden mejorar significativamente el rendimiento de los modelos de aprendizaje automático, como la predicción de abandono de clientes o campañas de marketing personalizadas.
- Definir y agregar dataframes al EntitySet:
import featuretools as ft
import pandas as pd
# Sample customers data
customers_df = pd.DataFrame({
'customer_id': [1, 2, 3],
'signup_date': pd.to_datetime(['2022-01-01', '2022-02-01', '2022-03-01'])
})
# Sample transactions data
transactions_df = pd.DataFrame({
'transaction_id': [1, 2, 3, 4, 5],
'customer_id': [1, 2, 1, 3, 2],
'amount': [100, 200, 50, 300, 120],
'transaction_date': pd.to_datetime(['2022-01-10', '2022-02-15', '2022-01-20', '2022-03-10', '2022-02-25'])
})
# Create an EntitySet and add dataframes
es = ft.EntitySet(id="customer_data")
es = es.add_dataframe(dataframe_name="customers", dataframe=customers_df, index="customer_id")
es = es.add_dataframe(dataframe_name="transactions", dataframe=transactions_df, index="transaction_id",
time_index="transaction_date")
# Define relationship between dataframes
es = es.add_relationship("customers", "customer_id", "transactions", "customer_id") - Generar características mediante Deep Feature Synthesis:
# Generate features with aggregation primitives like mean and sum
feature_matrix, feature_defs = ft.dfs(entityset=es, target_dataframe_name="customers", agg_primitives=["mean", "sum", "count"])
# View the feature matrix
print(feature_matrix.head())
En este ejemplo, Featuretools demuestra su capacidad al generar automáticamente características sofisticadas que ofrecen profundos conocimientos sobre el comportamiento del cliente. Las características creadas, como transactions.amount.mean
y transactions.amount.sum
, representan el gasto promedio y total de cada cliente, respectivamente. Estas características, generadas automáticamente, van más allá de las simples agregaciones y pueden capturar patrones complejos en los datos.
Por ejemplo, transactions.amount.mean
proporciona una visión rápida del comportamiento típico de gasto de un cliente, útil para identificar clientes de alto valor o detectar actividades inusuales. Por otro lado, transactions.amount.sum
ofrece una visión integral del gasto total de un cliente, valiosa para cálculos de programas de fidelización o evaluación de riesgos.
Featuretools también puede crear características más complejas, como agregaciones basadas en el tiempo (por ejemplo, gasto promedio en los últimos 30 días) o características que abarcan varias tablas relacionadas (por ejemplo, la proporción del gasto de un cliente en comparación con el promedio en su ciudad). Estas características intrincadas, generadas sin codificación manual, pueden mejorar significativamente el poder predictivo de los modelos de aprendizaje automático y proporcionar información empresarial valiosa.
Al automatizar este proceso, Featuretools no solo ahorra tiempo, sino que también descubre patrones que podrían pasarse por alto en la ingeniería manual de características. Esta capacidad es especialmente valiosa al trabajar con grandes conjuntos de datos complejos, donde el espacio potencial de características es vasto y difícil de explorar manualmente.
8.2.2 Auto-sklearn: Automatización del pipeline completo de aprendizaje automático
Auto-sklearn es una avanzada biblioteca de AutoML que revoluciona el flujo de trabajo de aprendizaje automático al automatizar cada paso, desde la ingeniería de características hasta la selección de modelos y el ajuste de hiperparámetros. Basada en la robusta biblioteca Scikit-Learn, Auto-sklearn ofrece una solución integral para una amplia gama de desafíos de aprendizaje automático.
Una de las características destacadas de Auto-sklearn es su capacidad para generar automáticamente transformaciones de características. Esta funcionalidad es crucial para descubrir patrones ocultos en los datos, lo que puede mejorar significativamente el rendimiento del modelo. La biblioteca emplea algoritmos sofisticados para identificar las características más relevantes y crear nuevas mediante diversas transformaciones, un proceso que tradicionalmente requiere un tiempo y experiencia considerables.
Además de la ingeniería de características, Auto-sklearn sobresale en la selección de modelos. Puede evaluar una amplia variedad de algoritmos de aprendizaje automático, desde modelos lineales simples hasta complejos métodos de ensamblaje, para determinar el más adecuado para un conjunto de datos específico. Este proceso automatizado ahorra a los científicos de datos innumerables horas de prueba y error, al tiempo que descubre combinaciones de modelos que podrían pasarse por alto en una exploración manual.
El ajuste de hiperparámetros de Auto-sklearn también es impresionante. Utiliza técnicas avanzadas de optimización para ajustar los parámetros del modelo, una tarea que puede ser excepcionalmente intensiva en tiempo y recursos computacionales cuando se realiza manualmente. Este ajuste automatizado a menudo da como resultado modelos que superan a aquellos configurados por expertos humanos.
Lo que diferencia a Auto-sklearn es su capacidad para optimizar simultáneamente la ingeniería de características y los parámetros del modelo. Este enfoque holístico de optimización puede llevar a mejoras sinérgicas en el rendimiento del modelo, lo que lo hace particularmente valioso para conjuntos de datos complejos donde las interacciones entre las características y la arquitectura del modelo no son inmediatamente evidentes.
Al automatizar estos aspectos críticos del pipeline de aprendizaje automático, Auto-sklearn no solo acelera el proceso de desarrollo, sino que también democratiza el acceso a técnicas avanzadas de aprendizaje automático. Permite a los científicos de datos enfocarse en tareas de alto nivel, como la formulación de problemas y la interpretación de resultados, mientras la biblioteca maneja las complejidades del desarrollo del modelo.
Características clave de Auto-sklearn
- Preprocesamiento automático de datos: Auto-sklearn maneja diversos tipos y formatos de datos. Aplica métodos de escalado apropiados (por ejemplo, estandarización, normalización) a las características numéricas, realiza codificación one-hot para variables categóricas y gestiona datos faltantes mediante técnicas de imputación. Este preprocesamiento integral garantiza que los datos estén óptimamente preparados para una amplia gama de algoritmos de aprendizaje automático.
- Selección de modelos y ajuste de hiperparámetros: Usando aprendizaje meta y optimización bayesiana, Auto-sklearn explora eficientemente el espacio de posibles modelos y configuraciones. El aprendizaje meta utiliza conocimientos de tareas previas para identificar rápidamente algoritmos prometedores, mientras que la optimización bayesiana explora sistemáticamente el espacio de hiperparámetros para encontrar configuraciones óptimas.
- Modelos ensamblados: Auto-sklearn construye modelos ensamblados combinando múltiples modelos de alto rendimiento, a menudo de diferentes familias de algoritmos. Este enfoque mejora la precisión general y la estabilidad del modelo, haciéndolo particularmente efectivo para conjuntos de datos complejos con patrones diversos.
- Gestión de tiempo y recursos: Auto-sklearn permite a los usuarios establecer límites de tiempo para el proceso de optimización, lo que lo hace adecuado tanto para prototipos rápidos como para desarrollos extensos. Asigna eficientemente los recursos computacionales, equilibrando la exploración de diferentes modelos y la explotación de configuraciones prometedoras.
- Interpretabilidad y transparencia: A pesar de su naturaleza automatizada, Auto-sklearn proporciona información sobre su proceso de toma de decisiones. Los usuarios pueden examinar los modelos seleccionados, sus hiperparámetros y la composición del modelo final ensamblado. Esta transparencia es crucial para comprender el comportamiento del modelo y cumplir con los requisitos regulatorios en ciertas industrias.
Ejemplo: Usando Auto-sklearn para la construcción automatizada de modelos
- Instalar Auto-sklearn:
pip install auto-sklearn
- Cargar datos y entrenar con Auto-sklearn:
import autosklearn.classification
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score
# Load a sample dataset
data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)
# Initialize and fit Auto-sklearn classifier
automl = autosklearn.classification.AutoSklearnClassifier(time_left_for_this_task=300, per_run_time_limit=30)
automl.fit(X_train, y_train)
# Make predictions and evaluate
y_pred = automl.predict(X_test)
print("Auto-sklearn Accuracy:", accuracy_score(y_test, y_pred))Este código demuestra cómo usar Auto-sklearn, una biblioteca de aprendizaje automático automatizado, para construir y evaluar un modelo de clasificación. A continuación, un desglose del código:
- Primero, se importan las bibliotecas necesarias: Auto-sklearn para aprendizaje automático automatizado,
train_test_split
para dividir los datos,load_iris
para un conjunto de datos de muestra yaccuracy_score
para la evaluación. - El código carga el conjunto de datos Iris, un estándar común en aprendizaje automático.
- Divide los datos en conjuntos de entrenamiento y prueba, con un 80% para entrenamiento y un 20% para prueba.
- Se inicializa un clasificador de Auto-sklearn con un límite de tiempo de 300 segundos para la tarea completa y 30 segundos por ejecución.
- Luego, se entrena el clasificador con los datos de entrenamiento usando el método
fit()
. - Después del entrenamiento, el modelo realiza predicciones sobre el conjunto de prueba.
- Finalmente, calcula e imprime la precisión del modelo utilizando la función
accuracy_score
.
Este código muestra cómo Auto-sklearn puede manejar automáticamente toda la tubería de aprendizaje automático, incluyendo selección del modelo, ajuste de hiperparámetros y preprocesamiento de características, con mínima intervención manual.
8.2.3 TPOT: Aprendizaje Automático Automatizado para Ciencia de Datos
TPOT (Tree-based Pipeline Optimization Tool) es una herramienta innovadora de AutoML de código abierto que utiliza programación genética para optimizar tuberías de aprendizaje automático. Al emplear algoritmos evolutivos, TPOT explora inteligentemente el vasto espacio de posibles soluciones de aprendizaje automático, incluyendo preprocesamiento de características, selección de modelos y ajuste de hiperparámetros.
El enfoque de programación genética utilizado por TPOT imita el proceso de selección natural. Comienza con una población de tuberías aleatorias de aprendizaje automático y las evoluciona iterativamente a través de múltiples generaciones. En cada generación, se seleccionan las tuberías con mejor desempeño y se combinan para crear nuevas tuberías potencialmente mejores. Este proceso continúa hasta alcanzar un número especificado de generaciones o un umbral de rendimiento.
La búsqueda exhaustiva de TPOT abarca miles de combinaciones potenciales, incluyendo:
- Transformaciones de características: TPOT explora diversas técnicas de preprocesamiento de datos para optimizar las características de entrada. Esto incluye:
- Métodos de escalado como estandarización y normalización para garantizar que todas las características estén en una escala similar.
- Estrategias de codificación para variables categóricas, como codificación one-hot o por etiquetas.
- Creación de características polinomiales para capturar relaciones no lineales en los datos.
- Técnicas de reducción dimensional como PCA o métodos de selección de características.
- Combinaciones de modelos: TPOT investiga un conjunto diverso de algoritmos de aprendizaje automático, incluyendo, entre otros:
- Árboles de decisión para modelos interpretables.
- Bosques aleatorios para aprendizaje en conjunto robusto.
- Máquinas de soporte vectorial para manejar espacios de alta dimensionalidad.
- Métodos de boosting como XGBoost o LightGBM para alto rendimiento.
- Redes neuronales para reconocimiento de patrones complejos.
- Modelos lineales para soluciones más simples e interpretables.
- Configuraciones de hiperparámetros: TPOT ajusta parámetros específicos del modelo para optimizar el rendimiento, considerando:
- Tasas de aprendizaje y fortalezas de regularización para métodos basados en gradientes.
- Profundidad de árboles y número de estimadores para métodos en conjunto.
- Opciones de kernel y parámetros de regularización para SVMs.
- Funciones de activación y configuraciones de capas para redes neuronales.
- Estrategias de validación cruzada para asegurar estimaciones robustas de rendimiento.
Mediante la exploración de este vasto espacio de posibilidades, TPOT puede descubrir tuberías de aprendizaje automático altamente optimizadas, adaptadas a las características específicas del conjunto de datos. Este enfoque automatizado a menudo conduce a soluciones que superan a los modelos creados manualmente, especialmente en dominios complejos.
Esta exhaustiva exploración hace que TPOT sea particularmente valioso para tareas complejas que requieren ingeniería extensiva de características y experimentación con modelos. Puede descubrir relaciones intrincadas en los datos e identificar configuraciones óptimas de tuberías que podrían pasar desapercibidas para científicos de datos humanos o herramientas de AutoML más simples.
Además, la capacidad de TPOT para generar tuberías completas, en lugar de solo modelos individuales, proporciona un enfoque más holístico a la automatización del aprendizaje automático. Esto puede llevar a soluciones más robustas y generalizables, especialmente para conjuntos de datos con estructuras complejas o patrones ocultos.
- Primero, se importan las bibliotecas necesarias: Auto-sklearn para aprendizaje automático automatizado,
Características clave de TPOT
- Optimización de Tuberías: TPOT sobresale en la optimización de toda la tubería de aprendizaje automático, desde el preprocesamiento de características hasta la selección de modelos. Este enfoque integral garantiza que cada paso del proceso esté ajustado para trabajar en armonía con los demás, lo que potencialmente lleva a un rendimiento general superior.
- Programación Genética: TPOT utiliza programación genética para evolucionar tuberías, refinando iterativamente las transformaciones de características y las elecciones de modelos. Este enfoque evolutivo permite a TPOT explorar un vasto espacio de soluciones de manera eficiente, a menudo descubriendo combinaciones innovadoras que los expertos humanos podrían pasar por alto.
- Flexibilidad: La compatibilidad de TPOT con los estimadores de Scikit-Learn lo hace altamente versátil y fácil de integrar en flujos de trabajo existentes. Esta interoperabilidad permite a los científicos de datos aprovechar las capacidades de automatización de TPOT mientras mantienen la flexibilidad para incorporar componentes personalizados cuando sea necesario.
- Ingeniería de Características Automatizada: TPOT puede crear y seleccionar automáticamente características relevantes, reduciendo la necesidad de ingeniería de características manual. Esta capacidad puede descubrir relaciones complejas en los datos que podrían no ser inmediatamente evidentes para los analistas humanos.
- Ajuste de Hiperparámetros: TPOT realiza una optimización exhaustiva de hiperparámetros en diversos modelos, asegurando que cada algoritmo esté configurado para un rendimiento óptimo en el conjunto de datos dado.
- Resultados Interpretables: A pesar de su proceso de optimización complejo, TPOT proporciona resultados interpretables generando código Python para la mejor tubería encontrada. Esto permite a los usuarios entender y refinar aún más las soluciones automatizadas si lo desean.
Ejemplo: Construcción de una Tubería de Aprendizaje Automático con TPOT
- Instalar TPOT:
pip install tpot
- Usar TPOT para construir y optimizar una tubería:
from tpot import TPOTClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_digits
from sklearn.metrics import accuracy_score, classification_report
import numpy as np
import matplotlib.pyplot as plt
# Load sample dataset
data = load_digits()
X, y = data.data, data.target
# Split the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Initialize TPOT classifier
tpot = TPOTClassifier(
generations=10,
population_size=50,
verbosity=2,
random_state=42,
config_dict='TPOT light',
cv=5,
n_jobs=-1
)
# Fit the TPOT classifier
tpot.fit(X_train, y_train)
# Make predictions
y_pred = tpot.predict(X_test)
# Evaluate the model
print("TPOT Accuracy:", accuracy_score(y_test, y_pred))
print("\nClassification Report:")
print(classification_report(y_test, y_pred))
# Export the optimized pipeline code
tpot.export("optimized_pipeline.py")
# Visualize sample predictions
fig, axes = plt.subplots(2, 5, figsize=(15, 6))
for i, ax in enumerate(axes.flatten()):
ax.imshow(X_test[i].reshape(8, 8), cmap='gray')
ax.set_title(f"Pred: {y_pred[i]}, True: {y_test[i]}")
ax.axis('off')
plt.tight_layout()
plt.show()Desglose del Código:
- Importación y Carga de Datos:
- Se importan las bibliotecas necesarias: TPOT para aprendizaje automático automatizado, scikit-learn para división de datos y métricas, numpy para operaciones numéricas y matplotlib para visualización.
- El conjunto de datos
digits
se carga utilizando la funciónload_digits
de scikit-learn, proporcionando un problema clásico de clasificación.
- Preparación de Datos:
- El conjunto de datos se divide en conjuntos de entrenamiento (80%) y prueba (20%) utilizando
train_test_split
. - Se usa un
random_state
fijo para asegurar la reproducibilidad de la división.
- Inicialización del Clasificador TPOT:
- Se crea un
TPOTClassifier
con los siguientes parámetros:generations=10
: Número de iteraciones para ejecutar el algoritmo de programación genética.population_size=50
: Cantidad de individuos a retener en la población genética.verbosity=2
: Proporciona información detallada sobre el proceso de optimización.random_state=42
: Asegura la reproducibilidad de los resultados.config_dict='TPOT light'
: Utiliza un espacio de búsqueda reducido para obtener resultados más rápidos.cv=5
: Realiza validación cruzada de 5 pliegues durante el proceso de optimización.n_jobs=-1
: Utiliza todos los núcleos de CPU disponibles para procesamiento paralelo.
- Entrenamiento del Modelo:
- Se llama al método
fit
del clasificador TPOT, iniciando el proceso de programación genética para encontrar la mejor tubería.
- Predicción y Evaluación:
- Se realizan predicciones sobre el conjunto de prueba utilizando la tubería optimizada.
- El rendimiento del modelo se evalúa con
accuracy_score
yclassification_report
, proporcionando una visión integral del desempeño del modelo en todas las clases.
- Exportación de la Tubería Optimizada:
- La mejor tubería encontrada por TPOT se exporta a un archivo Python llamado
optimized_pipeline.py
. - Esto permite replicar fácilmente el modelo y ajustarlo aún más.
- Visualización:
- Se traza una cuadrícula de 10 imágenes de dígitos del conjunto de prueba.
- Cada imagen se muestra junto con sus etiquetas predichas y verdaderas, proporcionando una representación visual del desempeño del modelo.
Este ejemplo demuestra la capacidad de TPOT para simplificar la tubería de aprendizaje automático, desde la selección del modelo hasta el ajuste de hiperparámetros. No solo muestra cómo evaluar el rendimiento del modelo, sino que también ilustra los resultados de manera visual, ofreciendo una comprensión más rica del proceso automatizado.
8.2.4 MLBox: Una Herramienta Integral para la Preparación de Datos y Construcción de Modelos
MLBox es una biblioteca de AutoML integral que aborda toda la tubería de aprendizaje automático, desde la preparación de datos hasta el despliegue del modelo. Su enfoque holístico abarca limpieza de datos, selección de características y construcción de modelos, convirtiéndola en una herramienta versátil para científicos de datos y practicantes de aprendizaje automático.
Una de las características más destacadas de MLBox es su manejo robusto de desafíos comunes en los datos. Sobresale en la gestión de valores faltantes, empleando técnicas de imputación sofisticadas para garantizar la completitud de los datos. Además, MLBox ofrece estrategias avanzadas para abordar el desequilibrio de datos, un problema crítico en muchos conjuntos de datos reales que puede afectar significativamente el rendimiento del modelo. Estas capacidades hacen que MLBox sea particularmente valiosa para proyectos que lidian con datos desordenados, incompletos o desequilibrados.
El proceso de selección de características de la biblioteca también es impresionante. MLBox utiliza diversos algoritmos para identificar las características más relevantes, reduciendo la dimensionalidad y mejorando la eficiencia del modelo. Este proceso automatizado puede revelar patrones y relaciones importantes en los datos que podrían pasar desapercibidos en un análisis manual.
Además, la fase de construcción de modelos de MLBox incorpora una amplia gama de algoritmos y realiza ajuste de hiperparámetros automáticamente. Esto asegura que el modelo final no solo esté bien adaptado a las características específicas del conjunto de datos, sino que también esté optimizado para el rendimiento. La capacidad de la biblioteca para manejar tareas complejas de preprocesamiento y modelado con mínima intervención humana la convierte en una opción ideal para científicos de datos que buscan simplificar su flujo de trabajo y centrarse en análisis e interpretación de alto nivel.
Características Clave de MLBox:
- Preparación y Limpieza de Datos: MLBox sobresale en automatizar procesos de limpieza de datos, gestionando eficientemente valores faltantes y valores atípicos. Utiliza técnicas sofisticadas de imputación y métodos robustos de detección de valores atípicos, garantizando la calidad y completitud de los datos.
- Selección y Creación de Características: La biblioteca incorpora algoritmos avanzados para la selección de características y técnicas de transformación. Puede identificar automáticamente las características más relevantes, crear nuevas características significativas y realizar reducción de dimensionalidad.
- Construcción Automática de Modelos: MLBox implementa un enfoque integral para AutoML, explorando una amplia gama de algoritmos, ajustando hiperparámetros e incluso considerando métodos de ensamblado.
- Escalabilidad y Eficiencia: Diseñada para manejar conjuntos de datos a gran escala, MLBox incluye capacidades de computación distribuida.
- Interpretabilidad y Explicabilidad: MLBox proporciona herramientas para la interpretación de modelos, ayudando a los usuarios a entender las razones detrás de las predicciones.
Ejemplo: Uso de MLBox para Aprendizaje Automático Automatizado.
from mlbox.preprocessing import *
from mlbox.optimisation import *
from mlbox.prediction import *
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
# Load the Boston Housing dataset
boston = load_boston()
X, y = boston.data, boston.target
# Split the data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Create a dictionary with the paths to your train and test datasets
paths = {"train": X_train, "test": X_test}
# Create a Reader object
rd = Reader(sep=",")
# Read and preprocess the data
df = rd.train_test_split(paths, target_name="target")
# Define the preprocessing steps
prep = Preprocessor()
df = prep.fit_transform(df)
# Define the optimization process
opt = Optimiser(scoring="neg_mean_squared_error", n_folds=5)
# Find the best hyperparameters
best = opt.optimise(df["train"], df["test"])
# Make predictions using the best model
pred = Predictor()
predictions = pred.fit_predict(best, df)
print("Predictions:", predictions)
Desglose del Código:
- Importaciones y Carga de Datos:
- Importamos los módulos necesarios de MLBox y scikit-learn.
- El conjunto de datos Boston Housing se carga usando la función
load_boston
de scikit-learn.
- Preparación de Datos:
- El conjunto de datos se divide en un conjunto de entrenamiento (80%) y uno de prueba (20%) usando
train_test_split
. - Se crea un diccionario
paths
para almacenar las rutas de los conjuntos de entrenamiento y prueba.
- El conjunto de datos se divide en un conjunto de entrenamiento (80%) y uno de prueba (20%) usando
- Lectura y Preprocesamiento de Datos:
- Se crea un objeto
Reader
para leer los datos. - Se utiliza el método
train_test_split
para leer y dividir los datos. - Se crea un objeto
Preprocessor
y se aplica a los datos utilizandofit_transform
.
- Se crea un objeto
- Proceso de Optimización:
- Se crea un objeto
Optimiser
con el error cuadrático medio como métrica de evaluación y validación cruzada de 5 pliegues. - Se llama al método
optimise
para encontrar los mejores hiperparámetros y modelo.
- Se crea un objeto
- Predicción:
- Se crea un objeto
Predictor
para realizar predicciones usando el mejor modelo encontrado. - Se utiliza el método
fit_predict
para entrenar el modelo con todo el conjunto de datos y realizar predicciones.
- Se crea un objeto
- Resultados:
- Se imprimen las predicciones finales.
Este ejemplo demuestra la capacidad de MLBox para automatizar toda la tubería de aprendizaje automático, desde el preprocesamiento de datos hasta la optimización del modelo y la predicción, con una intervención manual mínima.
Las herramientas de ingeniería de características y las bibliotecas de AutoML como Featuretools, Auto-sklearn, TPOT y MLBox son recursos revolucionarios que simplifican el flujo de trabajo del aprendizaje automático. Estas herramientas avanzadas automatizan procesos críticos, incluida la ingeniería de características, la selección de modelos y la optimización de hiperparámetros. Al hacerlo, reducen significativamente el tiempo y el esfuerzo necesarios para las tareas manuales, permitiendo que los científicos de datos y los profesionales del aprendizaje automático se concentren en la resolución de problemas y estrategias de nivel superior.
La automatización que ofrecen estas herramientas va más allá de un simple ahorro de tiempo. A menudo conduce a un mejor rendimiento del modelo al explorar una gama más amplia de combinaciones de características y arquitecturas de modelos de lo que sería factible manualmente. Por ejemplo, Featuretools sobresale en la generación automática de características relevantes a partir de datos en bruto, descubriendo potencialmente relaciones complejas que los analistas humanos podrían pasar por alto. Auto-sklearn utiliza metaaprendizaje para seleccionar y configurar inteligentemente algoritmos de aprendizaje automático, logrando a menudo un rendimiento de vanguardia con una intervención humana mínima.
TPOT, como herramienta de AutoML basada en programación genética, puede evolucionar tuberías óptimas de aprendizaje automático, explorando combinaciones de pasos de preprocesamiento, métodos de selección de características y arquitecturas de modelos que un humano podría no considerar. MLBox, con su enfoque integral en toda la tubería de aprendizaje automático, ofrece soluciones robustas para el preprocesamiento de datos, la selección de características y la construcción de modelos, lo que la hace particularmente valiosa para trabajar con conjuntos de datos desordenados, incompletos o desequilibrados.
Estas herramientas no solo democratizan el aprendizaje automático al hacer que las técnicas avanzadas sean más accesibles para no expertos, sino que también amplían los límites de lo que es posible en términos de rendimiento y eficiencia de los modelos. A medida que el campo de AutoML sigue evolucionando, podemos esperar herramientas aún más sofisticadas que automatizarán y optimizarán aún más el proceso de aprendizaje automático, lo que potencialmente conducirá a avances en diversos dominios de inteligencia artificial y ciencia de datos.
8.2 Introducción a las herramientas de características y bibliotecas de AutoML
En los últimos años, los avances en la automatización del aprendizaje automático han dado lugar al desarrollo de herramientas y bibliotecas potentes que simplifican los procesos de ingeniería de características y modelado. Las herramientas de características y las bibliotecas de AutoML permiten a los científicos de datos y analistas automatizar tareas esenciales como la limpieza de datos, la transformación, la selección de características e incluso el entrenamiento de modelos. Esta automatización facilita la extracción de información valiosa a partir de conjuntos de datos complejos, permitiendo una experimentación más rápida y reduciendo el potencial de errores humanos.
En esta sección, exploraremos algunas de las herramientas de características y bibliotecas de AutoML más utilizadas, como Featuretools, Auto-sklearn, TPOT y MLBox. Estas herramientas pueden simplificar la ingeniería de características y la construcción de modelos, y cada una tiene características únicas que la hacen adecuada para tipos específicos de proyectos.
8.2.1 Featuretools: Automatización de la ingeniería de características con Deep Feature Synthesis
Featuretools se destaca como una biblioteca poderosa dedicada a la automatización del proceso de ingeniería de características. A diferencia de los métodos manuales tradicionales, Featuretools emplea una técnica sofisticada llamada síntesis profunda de características (deep feature synthesis) para generar características complejas en múltiples tablas o dataframes. Este enfoque es particularmente valioso cuando se trabaja con bases de datos relacionales o datos de series temporales, donde las relaciones entre diferentes entidades de datos pueden proporcionar información significativa.
El método de síntesis profunda de características en Featuretools opera recorriendo las relaciones definidas entre diferentes tablas en un conjunto de datos. Aplica automáticamente varias funciones de transformación y agregación a lo largo de estos caminos, creando nuevas características que capturan patrones y dependencias intrincados dentro de los datos. Por ejemplo, en un conjunto de datos de ventas minoristas, podría generar características como "monto promedio de compra por cliente en los últimos 30 días" o "número de productos únicos comprados por cada cliente", sin necesidad de codificar manualmente estos cálculos.
Este enfoque automatizado ofrece varias ventajas:
- Eficiencia: Featuretools simplifica significativamente el proceso de ingeniería de características, reduciendo drásticamente el tiempo y el esfuerzo requeridos. Esto permite a los científicos de datos dedicar más tiempo y recursos a otros aspectos críticos del flujo de trabajo de aprendizaje automático, como la interpretación de modelos, el ajuste fino y las estrategias de implementación. Al automatizar tareas repetitivas, permite iteraciones más rápidas y experimentación, lo que potencialmente lleva a conocimientos más rápidos y modelos más robustos.
- Exhaustividad: El enfoque sistemático de exploración de características de la herramienta es una ventaja clave. Al examinar exhaustivamente todas las combinaciones posibles de características, Featuretools puede descubrir patrones y relaciones intrincadas dentro de los datos que podrían no ser obvios o fáciles de pasar por alto para los analistas humanos. Esta exploración exhaustiva a menudo conduce al descubrimiento de características altamente predictivas que pueden mejorar significativamente el rendimiento del modelo.
- Escalabilidad: Una de las capacidades destacadas de Featuretools es su habilidad para manejar conjuntos de datos complejos y a gran escala con múltiples tablas relacionadas. Esto es particularmente valioso para aplicaciones a nivel empresarial, donde los datos a menudo se distribuyen entre varios sistemas y bases de datos interconectados. La escalabilidad de la herramienta garantiza que, a medida que los volúmenes de datos crecen y se vuelven más complejos, el proceso de ingeniería de características siga siendo eficiente y efectivo, permitiendo a las organizaciones aprovechar todo su ecosistema de datos para tareas de aprendizaje automático.
- Consistencia: La naturaleza automatizada de Featuretools asegura un enfoque estandarizado para la creación de características en diferentes proyectos y entre miembros del equipo. Esta consistencia es crucial para mantener la calidad y la reproducibilidad de los modelos de aprendizaje automático, especialmente en entornos colaborativos. Ayuda a eliminar discrepancias que podrían surgir de los diferentes enfoques de los analistas, asegurando que la ingeniería de características siga las mejores prácticas de manera consistente. Esta estandarización también facilita el mantenimiento del modelo, las actualizaciones y la transferencia de conocimientos dentro de los equipos de ciencia de datos.
Además, la consistencia proporcionada por Featuretools contribuye a una mejor documentación y trazabilidad del proceso de ingeniería de características. Esto es particularmente importante para industrias con requisitos regulatorios estrictos, donde la capacidad de explicar y justificar las entradas del modelo es crucial. El enfoque sistemático de la herramienta facilita el seguimiento del origen y la lógica detrás de cada característica generada, mejorando la transparencia e interpretabilidad del flujo de trabajo de aprendizaje automático.
Al aprovechar Featuretools, los científicos de datos pueden mejorar significativamente su capacidad para extraer características significativas de conjuntos de datos complejos y de múltiples tablas, mejorando potencialmente el desempeño e interpretabilidad de sus modelos de aprendizaje automático.
Cómo funciona Featuretools
Featuretools opera utilizando un conjunto de entidades (EntitySet), que es una colección de dataframes relacionados. Esta estructura permite a la herramienta comprender y aprovechar las relaciones entre diferentes tablas de datos. Al definir estas relaciones, Featuretools puede realizar una generación sofisticada de características mediante diversas operaciones, principalmente agregación y transformación.
El poder de Featuretools radica en su capacidad para crear automáticamente características complejas y significativas en conjuntos de datos relacionados. Por ejemplo, en un escenario minorista con tablas separadas de clientes y transacciones, Featuretools puede generar características detalladas a nivel de cliente. Estas podrían incluir métricas como el promedio de monto por transacción por cliente, la frecuencia de compras o el gasto total en un período de tiempo específico.
Este proceso automatizado de generación de características va más allá de simples agregaciones. Featuretools puede crear características basadas en el tiempo (por ejemplo, "número de transacciones en los últimos 30 días"), aplicar transformaciones matemáticas e incluso generar características que abarcan múltiples tablas relacionadas. Por ejemplo, podría crear una característica como "porcentaje de transacciones de alto valor en comparación con el promedio del cliente", que requiere comprender tanto el historial del cliente como los patrones generales de transacciones.
Al automatizar estas complejas tareas de ingeniería de características, Featuretools reduce significativamente el esfuerzo manual requerido en la preparación de datos, permitiendo que los científicos de datos se concentren en el desarrollo y la interpretación de modelos. Esta capacidad es particularmente valiosa al trabajar con conjuntos de datos grandes y complejos, donde la ingeniería manual de características sería un proceso que consume mucho tiempo y podría pasar por alto patrones potencialmente importantes.
Funciones clave de Featuretools
- EntitySet: Este componente fundamental de Featuretools gestiona los dataframes relacionados, estableciendo la estructura para la síntesis profunda de características (Deep Feature Synthesis). Permite a los usuarios definir relaciones entre diferentes tablas, creando una representación coherente de estructuras de datos complejas. Esto es especialmente útil cuando se trabaja con bases de datos relacionales o conjuntos de datos que abarcan múltiples tablas.
- Deep Feature Synthesis (DFS): En el núcleo de la funcionalidad de Featuretools, DFS es un algoritmo avanzado que aplica diversas funciones de agregación y transformación en las columnas para generar nuevas características. Recorre las relaciones definidas en el EntitySet, creando características que capturan interacciones y patrones complejos dentro de los datos. DFS puede producir características que abarcan múltiples tablas, revelando conocimientos que serían difíciles de discernir manualmente.
- Feature Primitives: Son los bloques básicos de construcción de la ingeniería de características en Featuretools. Los primitives son funciones predefinidas como promedio, suma, moda, conteo y operaciones más complejas. Sirven como base para la generación automática de características, permitiendo crear una amplia variedad de tipos de características. Los usuarios también pueden definir primitives personalizados para adaptar el proceso de generación de características a conocimientos o requisitos específicos del dominio.
- Ingeniería de características basada en el tiempo: Featuretools sobresale en la creación de características basadas en el tiempo, que son cruciales para muchas tareas de modelado predictivo. Puede generar automáticamente características como "tiempo desde el último evento", "valor promedio en los últimos N días" o "suma acumulativa hasta este punto", capturando dinámicas temporales en los datos.
- Selección y reducción de características: Para manejar el gran número de características generadas, Featuretools proporciona métodos para la selección de características y la reducción de dimensionalidad. Estas herramientas ayudan a identificar las características más relevantes, reducir el ruido y mejorar el rendimiento y la interpretabilidad del modelo.
Ejemplo: Ingeniería de características con Featuretools
Para ilustrar el poder de Featuretools, exploremos un ejemplo práctico utilizando dos conjuntos de datos interconectados: una tabla de clientes y una tabla de transacciones. Este escenario es común en muchas aplicaciones comerciales, donde comprender el comportamiento del cliente a través de su historial de transacciones es crucial para la toma de decisiones y el modelado predictivo.
En este ejemplo, aprovecharemos la síntesis profunda de características para generar automáticamente características que capturen patrones intrincados en el comportamiento de transacción de los clientes. Este proceso demostrará cómo Featuretools puede descubrir información valiosa que sería desafiante o llevaría mucho tiempo derivar manualmente.
Las características que crearemos irán más allá de las simples agregaciones. Podrían incluir:
- Métricas de recencia: ¿Cuán reciente fue la última transacción de cada cliente?
- Métricas de frecuencia: ¿Con qué frecuencia realiza transacciones cada cliente?
- Métricas de valor monetario: ¿Cuál es el promedio o el valor total de las transacciones de cada cliente?
- Indicadores de tendencia: ¿Los montos de las transacciones de un cliente están aumentando o disminuyendo con el tiempo?
Al automatizar la creación de estas características complejas, Featuretools permite a los científicos de datos generar rápidamente un conjunto rico de predictores que pueden mejorar significativamente el rendimiento de los modelos de aprendizaje automático, como la predicción de abandono de clientes o campañas de marketing personalizadas.
- Definir y agregar dataframes al EntitySet:
import featuretools as ft
import pandas as pd
# Sample customers data
customers_df = pd.DataFrame({
'customer_id': [1, 2, 3],
'signup_date': pd.to_datetime(['2022-01-01', '2022-02-01', '2022-03-01'])
})
# Sample transactions data
transactions_df = pd.DataFrame({
'transaction_id': [1, 2, 3, 4, 5],
'customer_id': [1, 2, 1, 3, 2],
'amount': [100, 200, 50, 300, 120],
'transaction_date': pd.to_datetime(['2022-01-10', '2022-02-15', '2022-01-20', '2022-03-10', '2022-02-25'])
})
# Create an EntitySet and add dataframes
es = ft.EntitySet(id="customer_data")
es = es.add_dataframe(dataframe_name="customers", dataframe=customers_df, index="customer_id")
es = es.add_dataframe(dataframe_name="transactions", dataframe=transactions_df, index="transaction_id",
time_index="transaction_date")
# Define relationship between dataframes
es = es.add_relationship("customers", "customer_id", "transactions", "customer_id") - Generar características mediante Deep Feature Synthesis:
# Generate features with aggregation primitives like mean and sum
feature_matrix, feature_defs = ft.dfs(entityset=es, target_dataframe_name="customers", agg_primitives=["mean", "sum", "count"])
# View the feature matrix
print(feature_matrix.head())
En este ejemplo, Featuretools demuestra su capacidad al generar automáticamente características sofisticadas que ofrecen profundos conocimientos sobre el comportamiento del cliente. Las características creadas, como transactions.amount.mean
y transactions.amount.sum
, representan el gasto promedio y total de cada cliente, respectivamente. Estas características, generadas automáticamente, van más allá de las simples agregaciones y pueden capturar patrones complejos en los datos.
Por ejemplo, transactions.amount.mean
proporciona una visión rápida del comportamiento típico de gasto de un cliente, útil para identificar clientes de alto valor o detectar actividades inusuales. Por otro lado, transactions.amount.sum
ofrece una visión integral del gasto total de un cliente, valiosa para cálculos de programas de fidelización o evaluación de riesgos.
Featuretools también puede crear características más complejas, como agregaciones basadas en el tiempo (por ejemplo, gasto promedio en los últimos 30 días) o características que abarcan varias tablas relacionadas (por ejemplo, la proporción del gasto de un cliente en comparación con el promedio en su ciudad). Estas características intrincadas, generadas sin codificación manual, pueden mejorar significativamente el poder predictivo de los modelos de aprendizaje automático y proporcionar información empresarial valiosa.
Al automatizar este proceso, Featuretools no solo ahorra tiempo, sino que también descubre patrones que podrían pasarse por alto en la ingeniería manual de características. Esta capacidad es especialmente valiosa al trabajar con grandes conjuntos de datos complejos, donde el espacio potencial de características es vasto y difícil de explorar manualmente.
8.2.2 Auto-sklearn: Automatización del pipeline completo de aprendizaje automático
Auto-sklearn es una avanzada biblioteca de AutoML que revoluciona el flujo de trabajo de aprendizaje automático al automatizar cada paso, desde la ingeniería de características hasta la selección de modelos y el ajuste de hiperparámetros. Basada en la robusta biblioteca Scikit-Learn, Auto-sklearn ofrece una solución integral para una amplia gama de desafíos de aprendizaje automático.
Una de las características destacadas de Auto-sklearn es su capacidad para generar automáticamente transformaciones de características. Esta funcionalidad es crucial para descubrir patrones ocultos en los datos, lo que puede mejorar significativamente el rendimiento del modelo. La biblioteca emplea algoritmos sofisticados para identificar las características más relevantes y crear nuevas mediante diversas transformaciones, un proceso que tradicionalmente requiere un tiempo y experiencia considerables.
Además de la ingeniería de características, Auto-sklearn sobresale en la selección de modelos. Puede evaluar una amplia variedad de algoritmos de aprendizaje automático, desde modelos lineales simples hasta complejos métodos de ensamblaje, para determinar el más adecuado para un conjunto de datos específico. Este proceso automatizado ahorra a los científicos de datos innumerables horas de prueba y error, al tiempo que descubre combinaciones de modelos que podrían pasarse por alto en una exploración manual.
El ajuste de hiperparámetros de Auto-sklearn también es impresionante. Utiliza técnicas avanzadas de optimización para ajustar los parámetros del modelo, una tarea que puede ser excepcionalmente intensiva en tiempo y recursos computacionales cuando se realiza manualmente. Este ajuste automatizado a menudo da como resultado modelos que superan a aquellos configurados por expertos humanos.
Lo que diferencia a Auto-sklearn es su capacidad para optimizar simultáneamente la ingeniería de características y los parámetros del modelo. Este enfoque holístico de optimización puede llevar a mejoras sinérgicas en el rendimiento del modelo, lo que lo hace particularmente valioso para conjuntos de datos complejos donde las interacciones entre las características y la arquitectura del modelo no son inmediatamente evidentes.
Al automatizar estos aspectos críticos del pipeline de aprendizaje automático, Auto-sklearn no solo acelera el proceso de desarrollo, sino que también democratiza el acceso a técnicas avanzadas de aprendizaje automático. Permite a los científicos de datos enfocarse en tareas de alto nivel, como la formulación de problemas y la interpretación de resultados, mientras la biblioteca maneja las complejidades del desarrollo del modelo.
Características clave de Auto-sklearn
- Preprocesamiento automático de datos: Auto-sklearn maneja diversos tipos y formatos de datos. Aplica métodos de escalado apropiados (por ejemplo, estandarización, normalización) a las características numéricas, realiza codificación one-hot para variables categóricas y gestiona datos faltantes mediante técnicas de imputación. Este preprocesamiento integral garantiza que los datos estén óptimamente preparados para una amplia gama de algoritmos de aprendizaje automático.
- Selección de modelos y ajuste de hiperparámetros: Usando aprendizaje meta y optimización bayesiana, Auto-sklearn explora eficientemente el espacio de posibles modelos y configuraciones. El aprendizaje meta utiliza conocimientos de tareas previas para identificar rápidamente algoritmos prometedores, mientras que la optimización bayesiana explora sistemáticamente el espacio de hiperparámetros para encontrar configuraciones óptimas.
- Modelos ensamblados: Auto-sklearn construye modelos ensamblados combinando múltiples modelos de alto rendimiento, a menudo de diferentes familias de algoritmos. Este enfoque mejora la precisión general y la estabilidad del modelo, haciéndolo particularmente efectivo para conjuntos de datos complejos con patrones diversos.
- Gestión de tiempo y recursos: Auto-sklearn permite a los usuarios establecer límites de tiempo para el proceso de optimización, lo que lo hace adecuado tanto para prototipos rápidos como para desarrollos extensos. Asigna eficientemente los recursos computacionales, equilibrando la exploración de diferentes modelos y la explotación de configuraciones prometedoras.
- Interpretabilidad y transparencia: A pesar de su naturaleza automatizada, Auto-sklearn proporciona información sobre su proceso de toma de decisiones. Los usuarios pueden examinar los modelos seleccionados, sus hiperparámetros y la composición del modelo final ensamblado. Esta transparencia es crucial para comprender el comportamiento del modelo y cumplir con los requisitos regulatorios en ciertas industrias.
Ejemplo: Usando Auto-sklearn para la construcción automatizada de modelos
- Instalar Auto-sklearn:
pip install auto-sklearn
- Cargar datos y entrenar con Auto-sklearn:
import autosklearn.classification
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score
# Load a sample dataset
data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)
# Initialize and fit Auto-sklearn classifier
automl = autosklearn.classification.AutoSklearnClassifier(time_left_for_this_task=300, per_run_time_limit=30)
automl.fit(X_train, y_train)
# Make predictions and evaluate
y_pred = automl.predict(X_test)
print("Auto-sklearn Accuracy:", accuracy_score(y_test, y_pred))Este código demuestra cómo usar Auto-sklearn, una biblioteca de aprendizaje automático automatizado, para construir y evaluar un modelo de clasificación. A continuación, un desglose del código:
- Primero, se importan las bibliotecas necesarias: Auto-sklearn para aprendizaje automático automatizado,
train_test_split
para dividir los datos,load_iris
para un conjunto de datos de muestra yaccuracy_score
para la evaluación. - El código carga el conjunto de datos Iris, un estándar común en aprendizaje automático.
- Divide los datos en conjuntos de entrenamiento y prueba, con un 80% para entrenamiento y un 20% para prueba.
- Se inicializa un clasificador de Auto-sklearn con un límite de tiempo de 300 segundos para la tarea completa y 30 segundos por ejecución.
- Luego, se entrena el clasificador con los datos de entrenamiento usando el método
fit()
. - Después del entrenamiento, el modelo realiza predicciones sobre el conjunto de prueba.
- Finalmente, calcula e imprime la precisión del modelo utilizando la función
accuracy_score
.
Este código muestra cómo Auto-sklearn puede manejar automáticamente toda la tubería de aprendizaje automático, incluyendo selección del modelo, ajuste de hiperparámetros y preprocesamiento de características, con mínima intervención manual.
8.2.3 TPOT: Aprendizaje Automático Automatizado para Ciencia de Datos
TPOT (Tree-based Pipeline Optimization Tool) es una herramienta innovadora de AutoML de código abierto que utiliza programación genética para optimizar tuberías de aprendizaje automático. Al emplear algoritmos evolutivos, TPOT explora inteligentemente el vasto espacio de posibles soluciones de aprendizaje automático, incluyendo preprocesamiento de características, selección de modelos y ajuste de hiperparámetros.
El enfoque de programación genética utilizado por TPOT imita el proceso de selección natural. Comienza con una población de tuberías aleatorias de aprendizaje automático y las evoluciona iterativamente a través de múltiples generaciones. En cada generación, se seleccionan las tuberías con mejor desempeño y se combinan para crear nuevas tuberías potencialmente mejores. Este proceso continúa hasta alcanzar un número especificado de generaciones o un umbral de rendimiento.
La búsqueda exhaustiva de TPOT abarca miles de combinaciones potenciales, incluyendo:
- Transformaciones de características: TPOT explora diversas técnicas de preprocesamiento de datos para optimizar las características de entrada. Esto incluye:
- Métodos de escalado como estandarización y normalización para garantizar que todas las características estén en una escala similar.
- Estrategias de codificación para variables categóricas, como codificación one-hot o por etiquetas.
- Creación de características polinomiales para capturar relaciones no lineales en los datos.
- Técnicas de reducción dimensional como PCA o métodos de selección de características.
- Combinaciones de modelos: TPOT investiga un conjunto diverso de algoritmos de aprendizaje automático, incluyendo, entre otros:
- Árboles de decisión para modelos interpretables.
- Bosques aleatorios para aprendizaje en conjunto robusto.
- Máquinas de soporte vectorial para manejar espacios de alta dimensionalidad.
- Métodos de boosting como XGBoost o LightGBM para alto rendimiento.
- Redes neuronales para reconocimiento de patrones complejos.
- Modelos lineales para soluciones más simples e interpretables.
- Configuraciones de hiperparámetros: TPOT ajusta parámetros específicos del modelo para optimizar el rendimiento, considerando:
- Tasas de aprendizaje y fortalezas de regularización para métodos basados en gradientes.
- Profundidad de árboles y número de estimadores para métodos en conjunto.
- Opciones de kernel y parámetros de regularización para SVMs.
- Funciones de activación y configuraciones de capas para redes neuronales.
- Estrategias de validación cruzada para asegurar estimaciones robustas de rendimiento.
Mediante la exploración de este vasto espacio de posibilidades, TPOT puede descubrir tuberías de aprendizaje automático altamente optimizadas, adaptadas a las características específicas del conjunto de datos. Este enfoque automatizado a menudo conduce a soluciones que superan a los modelos creados manualmente, especialmente en dominios complejos.
Esta exhaustiva exploración hace que TPOT sea particularmente valioso para tareas complejas que requieren ingeniería extensiva de características y experimentación con modelos. Puede descubrir relaciones intrincadas en los datos e identificar configuraciones óptimas de tuberías que podrían pasar desapercibidas para científicos de datos humanos o herramientas de AutoML más simples.
Además, la capacidad de TPOT para generar tuberías completas, en lugar de solo modelos individuales, proporciona un enfoque más holístico a la automatización del aprendizaje automático. Esto puede llevar a soluciones más robustas y generalizables, especialmente para conjuntos de datos con estructuras complejas o patrones ocultos.
- Primero, se importan las bibliotecas necesarias: Auto-sklearn para aprendizaje automático automatizado,
Características clave de TPOT
- Optimización de Tuberías: TPOT sobresale en la optimización de toda la tubería de aprendizaje automático, desde el preprocesamiento de características hasta la selección de modelos. Este enfoque integral garantiza que cada paso del proceso esté ajustado para trabajar en armonía con los demás, lo que potencialmente lleva a un rendimiento general superior.
- Programación Genética: TPOT utiliza programación genética para evolucionar tuberías, refinando iterativamente las transformaciones de características y las elecciones de modelos. Este enfoque evolutivo permite a TPOT explorar un vasto espacio de soluciones de manera eficiente, a menudo descubriendo combinaciones innovadoras que los expertos humanos podrían pasar por alto.
- Flexibilidad: La compatibilidad de TPOT con los estimadores de Scikit-Learn lo hace altamente versátil y fácil de integrar en flujos de trabajo existentes. Esta interoperabilidad permite a los científicos de datos aprovechar las capacidades de automatización de TPOT mientras mantienen la flexibilidad para incorporar componentes personalizados cuando sea necesario.
- Ingeniería de Características Automatizada: TPOT puede crear y seleccionar automáticamente características relevantes, reduciendo la necesidad de ingeniería de características manual. Esta capacidad puede descubrir relaciones complejas en los datos que podrían no ser inmediatamente evidentes para los analistas humanos.
- Ajuste de Hiperparámetros: TPOT realiza una optimización exhaustiva de hiperparámetros en diversos modelos, asegurando que cada algoritmo esté configurado para un rendimiento óptimo en el conjunto de datos dado.
- Resultados Interpretables: A pesar de su proceso de optimización complejo, TPOT proporciona resultados interpretables generando código Python para la mejor tubería encontrada. Esto permite a los usuarios entender y refinar aún más las soluciones automatizadas si lo desean.
Ejemplo: Construcción de una Tubería de Aprendizaje Automático con TPOT
- Instalar TPOT:
pip install tpot
- Usar TPOT para construir y optimizar una tubería:
from tpot import TPOTClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_digits
from sklearn.metrics import accuracy_score, classification_report
import numpy as np
import matplotlib.pyplot as plt
# Load sample dataset
data = load_digits()
X, y = data.data, data.target
# Split the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Initialize TPOT classifier
tpot = TPOTClassifier(
generations=10,
population_size=50,
verbosity=2,
random_state=42,
config_dict='TPOT light',
cv=5,
n_jobs=-1
)
# Fit the TPOT classifier
tpot.fit(X_train, y_train)
# Make predictions
y_pred = tpot.predict(X_test)
# Evaluate the model
print("TPOT Accuracy:", accuracy_score(y_test, y_pred))
print("\nClassification Report:")
print(classification_report(y_test, y_pred))
# Export the optimized pipeline code
tpot.export("optimized_pipeline.py")
# Visualize sample predictions
fig, axes = plt.subplots(2, 5, figsize=(15, 6))
for i, ax in enumerate(axes.flatten()):
ax.imshow(X_test[i].reshape(8, 8), cmap='gray')
ax.set_title(f"Pred: {y_pred[i]}, True: {y_test[i]}")
ax.axis('off')
plt.tight_layout()
plt.show()Desglose del Código:
- Importación y Carga de Datos:
- Se importan las bibliotecas necesarias: TPOT para aprendizaje automático automatizado, scikit-learn para división de datos y métricas, numpy para operaciones numéricas y matplotlib para visualización.
- El conjunto de datos
digits
se carga utilizando la funciónload_digits
de scikit-learn, proporcionando un problema clásico de clasificación.
- Preparación de Datos:
- El conjunto de datos se divide en conjuntos de entrenamiento (80%) y prueba (20%) utilizando
train_test_split
. - Se usa un
random_state
fijo para asegurar la reproducibilidad de la división.
- Inicialización del Clasificador TPOT:
- Se crea un
TPOTClassifier
con los siguientes parámetros:generations=10
: Número de iteraciones para ejecutar el algoritmo de programación genética.population_size=50
: Cantidad de individuos a retener en la población genética.verbosity=2
: Proporciona información detallada sobre el proceso de optimización.random_state=42
: Asegura la reproducibilidad de los resultados.config_dict='TPOT light'
: Utiliza un espacio de búsqueda reducido para obtener resultados más rápidos.cv=5
: Realiza validación cruzada de 5 pliegues durante el proceso de optimización.n_jobs=-1
: Utiliza todos los núcleos de CPU disponibles para procesamiento paralelo.
- Entrenamiento del Modelo:
- Se llama al método
fit
del clasificador TPOT, iniciando el proceso de programación genética para encontrar la mejor tubería.
- Predicción y Evaluación:
- Se realizan predicciones sobre el conjunto de prueba utilizando la tubería optimizada.
- El rendimiento del modelo se evalúa con
accuracy_score
yclassification_report
, proporcionando una visión integral del desempeño del modelo en todas las clases.
- Exportación de la Tubería Optimizada:
- La mejor tubería encontrada por TPOT se exporta a un archivo Python llamado
optimized_pipeline.py
. - Esto permite replicar fácilmente el modelo y ajustarlo aún más.
- Visualización:
- Se traza una cuadrícula de 10 imágenes de dígitos del conjunto de prueba.
- Cada imagen se muestra junto con sus etiquetas predichas y verdaderas, proporcionando una representación visual del desempeño del modelo.
Este ejemplo demuestra la capacidad de TPOT para simplificar la tubería de aprendizaje automático, desde la selección del modelo hasta el ajuste de hiperparámetros. No solo muestra cómo evaluar el rendimiento del modelo, sino que también ilustra los resultados de manera visual, ofreciendo una comprensión más rica del proceso automatizado.
8.2.4 MLBox: Una Herramienta Integral para la Preparación de Datos y Construcción de Modelos
MLBox es una biblioteca de AutoML integral que aborda toda la tubería de aprendizaje automático, desde la preparación de datos hasta el despliegue del modelo. Su enfoque holístico abarca limpieza de datos, selección de características y construcción de modelos, convirtiéndola en una herramienta versátil para científicos de datos y practicantes de aprendizaje automático.
Una de las características más destacadas de MLBox es su manejo robusto de desafíos comunes en los datos. Sobresale en la gestión de valores faltantes, empleando técnicas de imputación sofisticadas para garantizar la completitud de los datos. Además, MLBox ofrece estrategias avanzadas para abordar el desequilibrio de datos, un problema crítico en muchos conjuntos de datos reales que puede afectar significativamente el rendimiento del modelo. Estas capacidades hacen que MLBox sea particularmente valiosa para proyectos que lidian con datos desordenados, incompletos o desequilibrados.
El proceso de selección de características de la biblioteca también es impresionante. MLBox utiliza diversos algoritmos para identificar las características más relevantes, reduciendo la dimensionalidad y mejorando la eficiencia del modelo. Este proceso automatizado puede revelar patrones y relaciones importantes en los datos que podrían pasar desapercibidos en un análisis manual.
Además, la fase de construcción de modelos de MLBox incorpora una amplia gama de algoritmos y realiza ajuste de hiperparámetros automáticamente. Esto asegura que el modelo final no solo esté bien adaptado a las características específicas del conjunto de datos, sino que también esté optimizado para el rendimiento. La capacidad de la biblioteca para manejar tareas complejas de preprocesamiento y modelado con mínima intervención humana la convierte en una opción ideal para científicos de datos que buscan simplificar su flujo de trabajo y centrarse en análisis e interpretación de alto nivel.
Características Clave de MLBox:
- Preparación y Limpieza de Datos: MLBox sobresale en automatizar procesos de limpieza de datos, gestionando eficientemente valores faltantes y valores atípicos. Utiliza técnicas sofisticadas de imputación y métodos robustos de detección de valores atípicos, garantizando la calidad y completitud de los datos.
- Selección y Creación de Características: La biblioteca incorpora algoritmos avanzados para la selección de características y técnicas de transformación. Puede identificar automáticamente las características más relevantes, crear nuevas características significativas y realizar reducción de dimensionalidad.
- Construcción Automática de Modelos: MLBox implementa un enfoque integral para AutoML, explorando una amplia gama de algoritmos, ajustando hiperparámetros e incluso considerando métodos de ensamblado.
- Escalabilidad y Eficiencia: Diseñada para manejar conjuntos de datos a gran escala, MLBox incluye capacidades de computación distribuida.
- Interpretabilidad y Explicabilidad: MLBox proporciona herramientas para la interpretación de modelos, ayudando a los usuarios a entender las razones detrás de las predicciones.
Ejemplo: Uso de MLBox para Aprendizaje Automático Automatizado.
from mlbox.preprocessing import *
from mlbox.optimisation import *
from mlbox.prediction import *
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
# Load the Boston Housing dataset
boston = load_boston()
X, y = boston.data, boston.target
# Split the data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Create a dictionary with the paths to your train and test datasets
paths = {"train": X_train, "test": X_test}
# Create a Reader object
rd = Reader(sep=",")
# Read and preprocess the data
df = rd.train_test_split(paths, target_name="target")
# Define the preprocessing steps
prep = Preprocessor()
df = prep.fit_transform(df)
# Define the optimization process
opt = Optimiser(scoring="neg_mean_squared_error", n_folds=5)
# Find the best hyperparameters
best = opt.optimise(df["train"], df["test"])
# Make predictions using the best model
pred = Predictor()
predictions = pred.fit_predict(best, df)
print("Predictions:", predictions)
Desglose del Código:
- Importaciones y Carga de Datos:
- Importamos los módulos necesarios de MLBox y scikit-learn.
- El conjunto de datos Boston Housing se carga usando la función
load_boston
de scikit-learn.
- Preparación de Datos:
- El conjunto de datos se divide en un conjunto de entrenamiento (80%) y uno de prueba (20%) usando
train_test_split
. - Se crea un diccionario
paths
para almacenar las rutas de los conjuntos de entrenamiento y prueba.
- El conjunto de datos se divide en un conjunto de entrenamiento (80%) y uno de prueba (20%) usando
- Lectura y Preprocesamiento de Datos:
- Se crea un objeto
Reader
para leer los datos. - Se utiliza el método
train_test_split
para leer y dividir los datos. - Se crea un objeto
Preprocessor
y se aplica a los datos utilizandofit_transform
.
- Se crea un objeto
- Proceso de Optimización:
- Se crea un objeto
Optimiser
con el error cuadrático medio como métrica de evaluación y validación cruzada de 5 pliegues. - Se llama al método
optimise
para encontrar los mejores hiperparámetros y modelo.
- Se crea un objeto
- Predicción:
- Se crea un objeto
Predictor
para realizar predicciones usando el mejor modelo encontrado. - Se utiliza el método
fit_predict
para entrenar el modelo con todo el conjunto de datos y realizar predicciones.
- Se crea un objeto
- Resultados:
- Se imprimen las predicciones finales.
Este ejemplo demuestra la capacidad de MLBox para automatizar toda la tubería de aprendizaje automático, desde el preprocesamiento de datos hasta la optimización del modelo y la predicción, con una intervención manual mínima.
Las herramientas de ingeniería de características y las bibliotecas de AutoML como Featuretools, Auto-sklearn, TPOT y MLBox son recursos revolucionarios que simplifican el flujo de trabajo del aprendizaje automático. Estas herramientas avanzadas automatizan procesos críticos, incluida la ingeniería de características, la selección de modelos y la optimización de hiperparámetros. Al hacerlo, reducen significativamente el tiempo y el esfuerzo necesarios para las tareas manuales, permitiendo que los científicos de datos y los profesionales del aprendizaje automático se concentren en la resolución de problemas y estrategias de nivel superior.
La automatización que ofrecen estas herramientas va más allá de un simple ahorro de tiempo. A menudo conduce a un mejor rendimiento del modelo al explorar una gama más amplia de combinaciones de características y arquitecturas de modelos de lo que sería factible manualmente. Por ejemplo, Featuretools sobresale en la generación automática de características relevantes a partir de datos en bruto, descubriendo potencialmente relaciones complejas que los analistas humanos podrían pasar por alto. Auto-sklearn utiliza metaaprendizaje para seleccionar y configurar inteligentemente algoritmos de aprendizaje automático, logrando a menudo un rendimiento de vanguardia con una intervención humana mínima.
TPOT, como herramienta de AutoML basada en programación genética, puede evolucionar tuberías óptimas de aprendizaje automático, explorando combinaciones de pasos de preprocesamiento, métodos de selección de características y arquitecturas de modelos que un humano podría no considerar. MLBox, con su enfoque integral en toda la tubería de aprendizaje automático, ofrece soluciones robustas para el preprocesamiento de datos, la selección de características y la construcción de modelos, lo que la hace particularmente valiosa para trabajar con conjuntos de datos desordenados, incompletos o desequilibrados.
Estas herramientas no solo democratizan el aprendizaje automático al hacer que las técnicas avanzadas sean más accesibles para no expertos, sino que también amplían los límites de lo que es posible en términos de rendimiento y eficiencia de los modelos. A medida que el campo de AutoML sigue evolucionando, podemos esperar herramientas aún más sofisticadas que automatizarán y optimizarán aún más el proceso de aprendizaje automático, lo que potencialmente conducirá a avances en diversos dominios de inteligencia artificial y ciencia de datos.
8.2 Introducción a las herramientas de características y bibliotecas de AutoML
En los últimos años, los avances en la automatización del aprendizaje automático han dado lugar al desarrollo de herramientas y bibliotecas potentes que simplifican los procesos de ingeniería de características y modelado. Las herramientas de características y las bibliotecas de AutoML permiten a los científicos de datos y analistas automatizar tareas esenciales como la limpieza de datos, la transformación, la selección de características e incluso el entrenamiento de modelos. Esta automatización facilita la extracción de información valiosa a partir de conjuntos de datos complejos, permitiendo una experimentación más rápida y reduciendo el potencial de errores humanos.
En esta sección, exploraremos algunas de las herramientas de características y bibliotecas de AutoML más utilizadas, como Featuretools, Auto-sklearn, TPOT y MLBox. Estas herramientas pueden simplificar la ingeniería de características y la construcción de modelos, y cada una tiene características únicas que la hacen adecuada para tipos específicos de proyectos.
8.2.1 Featuretools: Automatización de la ingeniería de características con Deep Feature Synthesis
Featuretools se destaca como una biblioteca poderosa dedicada a la automatización del proceso de ingeniería de características. A diferencia de los métodos manuales tradicionales, Featuretools emplea una técnica sofisticada llamada síntesis profunda de características (deep feature synthesis) para generar características complejas en múltiples tablas o dataframes. Este enfoque es particularmente valioso cuando se trabaja con bases de datos relacionales o datos de series temporales, donde las relaciones entre diferentes entidades de datos pueden proporcionar información significativa.
El método de síntesis profunda de características en Featuretools opera recorriendo las relaciones definidas entre diferentes tablas en un conjunto de datos. Aplica automáticamente varias funciones de transformación y agregación a lo largo de estos caminos, creando nuevas características que capturan patrones y dependencias intrincados dentro de los datos. Por ejemplo, en un conjunto de datos de ventas minoristas, podría generar características como "monto promedio de compra por cliente en los últimos 30 días" o "número de productos únicos comprados por cada cliente", sin necesidad de codificar manualmente estos cálculos.
Este enfoque automatizado ofrece varias ventajas:
- Eficiencia: Featuretools simplifica significativamente el proceso de ingeniería de características, reduciendo drásticamente el tiempo y el esfuerzo requeridos. Esto permite a los científicos de datos dedicar más tiempo y recursos a otros aspectos críticos del flujo de trabajo de aprendizaje automático, como la interpretación de modelos, el ajuste fino y las estrategias de implementación. Al automatizar tareas repetitivas, permite iteraciones más rápidas y experimentación, lo que potencialmente lleva a conocimientos más rápidos y modelos más robustos.
- Exhaustividad: El enfoque sistemático de exploración de características de la herramienta es una ventaja clave. Al examinar exhaustivamente todas las combinaciones posibles de características, Featuretools puede descubrir patrones y relaciones intrincadas dentro de los datos que podrían no ser obvios o fáciles de pasar por alto para los analistas humanos. Esta exploración exhaustiva a menudo conduce al descubrimiento de características altamente predictivas que pueden mejorar significativamente el rendimiento del modelo.
- Escalabilidad: Una de las capacidades destacadas de Featuretools es su habilidad para manejar conjuntos de datos complejos y a gran escala con múltiples tablas relacionadas. Esto es particularmente valioso para aplicaciones a nivel empresarial, donde los datos a menudo se distribuyen entre varios sistemas y bases de datos interconectados. La escalabilidad de la herramienta garantiza que, a medida que los volúmenes de datos crecen y se vuelven más complejos, el proceso de ingeniería de características siga siendo eficiente y efectivo, permitiendo a las organizaciones aprovechar todo su ecosistema de datos para tareas de aprendizaje automático.
- Consistencia: La naturaleza automatizada de Featuretools asegura un enfoque estandarizado para la creación de características en diferentes proyectos y entre miembros del equipo. Esta consistencia es crucial para mantener la calidad y la reproducibilidad de los modelos de aprendizaje automático, especialmente en entornos colaborativos. Ayuda a eliminar discrepancias que podrían surgir de los diferentes enfoques de los analistas, asegurando que la ingeniería de características siga las mejores prácticas de manera consistente. Esta estandarización también facilita el mantenimiento del modelo, las actualizaciones y la transferencia de conocimientos dentro de los equipos de ciencia de datos.
Además, la consistencia proporcionada por Featuretools contribuye a una mejor documentación y trazabilidad del proceso de ingeniería de características. Esto es particularmente importante para industrias con requisitos regulatorios estrictos, donde la capacidad de explicar y justificar las entradas del modelo es crucial. El enfoque sistemático de la herramienta facilita el seguimiento del origen y la lógica detrás de cada característica generada, mejorando la transparencia e interpretabilidad del flujo de trabajo de aprendizaje automático.
Al aprovechar Featuretools, los científicos de datos pueden mejorar significativamente su capacidad para extraer características significativas de conjuntos de datos complejos y de múltiples tablas, mejorando potencialmente el desempeño e interpretabilidad de sus modelos de aprendizaje automático.
Cómo funciona Featuretools
Featuretools opera utilizando un conjunto de entidades (EntitySet), que es una colección de dataframes relacionados. Esta estructura permite a la herramienta comprender y aprovechar las relaciones entre diferentes tablas de datos. Al definir estas relaciones, Featuretools puede realizar una generación sofisticada de características mediante diversas operaciones, principalmente agregación y transformación.
El poder de Featuretools radica en su capacidad para crear automáticamente características complejas y significativas en conjuntos de datos relacionados. Por ejemplo, en un escenario minorista con tablas separadas de clientes y transacciones, Featuretools puede generar características detalladas a nivel de cliente. Estas podrían incluir métricas como el promedio de monto por transacción por cliente, la frecuencia de compras o el gasto total en un período de tiempo específico.
Este proceso automatizado de generación de características va más allá de simples agregaciones. Featuretools puede crear características basadas en el tiempo (por ejemplo, "número de transacciones en los últimos 30 días"), aplicar transformaciones matemáticas e incluso generar características que abarcan múltiples tablas relacionadas. Por ejemplo, podría crear una característica como "porcentaje de transacciones de alto valor en comparación con el promedio del cliente", que requiere comprender tanto el historial del cliente como los patrones generales de transacciones.
Al automatizar estas complejas tareas de ingeniería de características, Featuretools reduce significativamente el esfuerzo manual requerido en la preparación de datos, permitiendo que los científicos de datos se concentren en el desarrollo y la interpretación de modelos. Esta capacidad es particularmente valiosa al trabajar con conjuntos de datos grandes y complejos, donde la ingeniería manual de características sería un proceso que consume mucho tiempo y podría pasar por alto patrones potencialmente importantes.
Funciones clave de Featuretools
- EntitySet: Este componente fundamental de Featuretools gestiona los dataframes relacionados, estableciendo la estructura para la síntesis profunda de características (Deep Feature Synthesis). Permite a los usuarios definir relaciones entre diferentes tablas, creando una representación coherente de estructuras de datos complejas. Esto es especialmente útil cuando se trabaja con bases de datos relacionales o conjuntos de datos que abarcan múltiples tablas.
- Deep Feature Synthesis (DFS): En el núcleo de la funcionalidad de Featuretools, DFS es un algoritmo avanzado que aplica diversas funciones de agregación y transformación en las columnas para generar nuevas características. Recorre las relaciones definidas en el EntitySet, creando características que capturan interacciones y patrones complejos dentro de los datos. DFS puede producir características que abarcan múltiples tablas, revelando conocimientos que serían difíciles de discernir manualmente.
- Feature Primitives: Son los bloques básicos de construcción de la ingeniería de características en Featuretools. Los primitives son funciones predefinidas como promedio, suma, moda, conteo y operaciones más complejas. Sirven como base para la generación automática de características, permitiendo crear una amplia variedad de tipos de características. Los usuarios también pueden definir primitives personalizados para adaptar el proceso de generación de características a conocimientos o requisitos específicos del dominio.
- Ingeniería de características basada en el tiempo: Featuretools sobresale en la creación de características basadas en el tiempo, que son cruciales para muchas tareas de modelado predictivo. Puede generar automáticamente características como "tiempo desde el último evento", "valor promedio en los últimos N días" o "suma acumulativa hasta este punto", capturando dinámicas temporales en los datos.
- Selección y reducción de características: Para manejar el gran número de características generadas, Featuretools proporciona métodos para la selección de características y la reducción de dimensionalidad. Estas herramientas ayudan a identificar las características más relevantes, reducir el ruido y mejorar el rendimiento y la interpretabilidad del modelo.
Ejemplo: Ingeniería de características con Featuretools
Para ilustrar el poder de Featuretools, exploremos un ejemplo práctico utilizando dos conjuntos de datos interconectados: una tabla de clientes y una tabla de transacciones. Este escenario es común en muchas aplicaciones comerciales, donde comprender el comportamiento del cliente a través de su historial de transacciones es crucial para la toma de decisiones y el modelado predictivo.
En este ejemplo, aprovecharemos la síntesis profunda de características para generar automáticamente características que capturen patrones intrincados en el comportamiento de transacción de los clientes. Este proceso demostrará cómo Featuretools puede descubrir información valiosa que sería desafiante o llevaría mucho tiempo derivar manualmente.
Las características que crearemos irán más allá de las simples agregaciones. Podrían incluir:
- Métricas de recencia: ¿Cuán reciente fue la última transacción de cada cliente?
- Métricas de frecuencia: ¿Con qué frecuencia realiza transacciones cada cliente?
- Métricas de valor monetario: ¿Cuál es el promedio o el valor total de las transacciones de cada cliente?
- Indicadores de tendencia: ¿Los montos de las transacciones de un cliente están aumentando o disminuyendo con el tiempo?
Al automatizar la creación de estas características complejas, Featuretools permite a los científicos de datos generar rápidamente un conjunto rico de predictores que pueden mejorar significativamente el rendimiento de los modelos de aprendizaje automático, como la predicción de abandono de clientes o campañas de marketing personalizadas.
- Definir y agregar dataframes al EntitySet:
import featuretools as ft
import pandas as pd
# Sample customers data
customers_df = pd.DataFrame({
'customer_id': [1, 2, 3],
'signup_date': pd.to_datetime(['2022-01-01', '2022-02-01', '2022-03-01'])
})
# Sample transactions data
transactions_df = pd.DataFrame({
'transaction_id': [1, 2, 3, 4, 5],
'customer_id': [1, 2, 1, 3, 2],
'amount': [100, 200, 50, 300, 120],
'transaction_date': pd.to_datetime(['2022-01-10', '2022-02-15', '2022-01-20', '2022-03-10', '2022-02-25'])
})
# Create an EntitySet and add dataframes
es = ft.EntitySet(id="customer_data")
es = es.add_dataframe(dataframe_name="customers", dataframe=customers_df, index="customer_id")
es = es.add_dataframe(dataframe_name="transactions", dataframe=transactions_df, index="transaction_id",
time_index="transaction_date")
# Define relationship between dataframes
es = es.add_relationship("customers", "customer_id", "transactions", "customer_id") - Generar características mediante Deep Feature Synthesis:
# Generate features with aggregation primitives like mean and sum
feature_matrix, feature_defs = ft.dfs(entityset=es, target_dataframe_name="customers", agg_primitives=["mean", "sum", "count"])
# View the feature matrix
print(feature_matrix.head())
En este ejemplo, Featuretools demuestra su capacidad al generar automáticamente características sofisticadas que ofrecen profundos conocimientos sobre el comportamiento del cliente. Las características creadas, como transactions.amount.mean
y transactions.amount.sum
, representan el gasto promedio y total de cada cliente, respectivamente. Estas características, generadas automáticamente, van más allá de las simples agregaciones y pueden capturar patrones complejos en los datos.
Por ejemplo, transactions.amount.mean
proporciona una visión rápida del comportamiento típico de gasto de un cliente, útil para identificar clientes de alto valor o detectar actividades inusuales. Por otro lado, transactions.amount.sum
ofrece una visión integral del gasto total de un cliente, valiosa para cálculos de programas de fidelización o evaluación de riesgos.
Featuretools también puede crear características más complejas, como agregaciones basadas en el tiempo (por ejemplo, gasto promedio en los últimos 30 días) o características que abarcan varias tablas relacionadas (por ejemplo, la proporción del gasto de un cliente en comparación con el promedio en su ciudad). Estas características intrincadas, generadas sin codificación manual, pueden mejorar significativamente el poder predictivo de los modelos de aprendizaje automático y proporcionar información empresarial valiosa.
Al automatizar este proceso, Featuretools no solo ahorra tiempo, sino que también descubre patrones que podrían pasarse por alto en la ingeniería manual de características. Esta capacidad es especialmente valiosa al trabajar con grandes conjuntos de datos complejos, donde el espacio potencial de características es vasto y difícil de explorar manualmente.
8.2.2 Auto-sklearn: Automatización del pipeline completo de aprendizaje automático
Auto-sklearn es una avanzada biblioteca de AutoML que revoluciona el flujo de trabajo de aprendizaje automático al automatizar cada paso, desde la ingeniería de características hasta la selección de modelos y el ajuste de hiperparámetros. Basada en la robusta biblioteca Scikit-Learn, Auto-sklearn ofrece una solución integral para una amplia gama de desafíos de aprendizaje automático.
Una de las características destacadas de Auto-sklearn es su capacidad para generar automáticamente transformaciones de características. Esta funcionalidad es crucial para descubrir patrones ocultos en los datos, lo que puede mejorar significativamente el rendimiento del modelo. La biblioteca emplea algoritmos sofisticados para identificar las características más relevantes y crear nuevas mediante diversas transformaciones, un proceso que tradicionalmente requiere un tiempo y experiencia considerables.
Además de la ingeniería de características, Auto-sklearn sobresale en la selección de modelos. Puede evaluar una amplia variedad de algoritmos de aprendizaje automático, desde modelos lineales simples hasta complejos métodos de ensamblaje, para determinar el más adecuado para un conjunto de datos específico. Este proceso automatizado ahorra a los científicos de datos innumerables horas de prueba y error, al tiempo que descubre combinaciones de modelos que podrían pasarse por alto en una exploración manual.
El ajuste de hiperparámetros de Auto-sklearn también es impresionante. Utiliza técnicas avanzadas de optimización para ajustar los parámetros del modelo, una tarea que puede ser excepcionalmente intensiva en tiempo y recursos computacionales cuando se realiza manualmente. Este ajuste automatizado a menudo da como resultado modelos que superan a aquellos configurados por expertos humanos.
Lo que diferencia a Auto-sklearn es su capacidad para optimizar simultáneamente la ingeniería de características y los parámetros del modelo. Este enfoque holístico de optimización puede llevar a mejoras sinérgicas en el rendimiento del modelo, lo que lo hace particularmente valioso para conjuntos de datos complejos donde las interacciones entre las características y la arquitectura del modelo no son inmediatamente evidentes.
Al automatizar estos aspectos críticos del pipeline de aprendizaje automático, Auto-sklearn no solo acelera el proceso de desarrollo, sino que también democratiza el acceso a técnicas avanzadas de aprendizaje automático. Permite a los científicos de datos enfocarse en tareas de alto nivel, como la formulación de problemas y la interpretación de resultados, mientras la biblioteca maneja las complejidades del desarrollo del modelo.
Características clave de Auto-sklearn
- Preprocesamiento automático de datos: Auto-sklearn maneja diversos tipos y formatos de datos. Aplica métodos de escalado apropiados (por ejemplo, estandarización, normalización) a las características numéricas, realiza codificación one-hot para variables categóricas y gestiona datos faltantes mediante técnicas de imputación. Este preprocesamiento integral garantiza que los datos estén óptimamente preparados para una amplia gama de algoritmos de aprendizaje automático.
- Selección de modelos y ajuste de hiperparámetros: Usando aprendizaje meta y optimización bayesiana, Auto-sklearn explora eficientemente el espacio de posibles modelos y configuraciones. El aprendizaje meta utiliza conocimientos de tareas previas para identificar rápidamente algoritmos prometedores, mientras que la optimización bayesiana explora sistemáticamente el espacio de hiperparámetros para encontrar configuraciones óptimas.
- Modelos ensamblados: Auto-sklearn construye modelos ensamblados combinando múltiples modelos de alto rendimiento, a menudo de diferentes familias de algoritmos. Este enfoque mejora la precisión general y la estabilidad del modelo, haciéndolo particularmente efectivo para conjuntos de datos complejos con patrones diversos.
- Gestión de tiempo y recursos: Auto-sklearn permite a los usuarios establecer límites de tiempo para el proceso de optimización, lo que lo hace adecuado tanto para prototipos rápidos como para desarrollos extensos. Asigna eficientemente los recursos computacionales, equilibrando la exploración de diferentes modelos y la explotación de configuraciones prometedoras.
- Interpretabilidad y transparencia: A pesar de su naturaleza automatizada, Auto-sklearn proporciona información sobre su proceso de toma de decisiones. Los usuarios pueden examinar los modelos seleccionados, sus hiperparámetros y la composición del modelo final ensamblado. Esta transparencia es crucial para comprender el comportamiento del modelo y cumplir con los requisitos regulatorios en ciertas industrias.
Ejemplo: Usando Auto-sklearn para la construcción automatizada de modelos
- Instalar Auto-sklearn:
pip install auto-sklearn
- Cargar datos y entrenar con Auto-sklearn:
import autosklearn.classification
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score
# Load a sample dataset
data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)
# Initialize and fit Auto-sklearn classifier
automl = autosklearn.classification.AutoSklearnClassifier(time_left_for_this_task=300, per_run_time_limit=30)
automl.fit(X_train, y_train)
# Make predictions and evaluate
y_pred = automl.predict(X_test)
print("Auto-sklearn Accuracy:", accuracy_score(y_test, y_pred))Este código demuestra cómo usar Auto-sklearn, una biblioteca de aprendizaje automático automatizado, para construir y evaluar un modelo de clasificación. A continuación, un desglose del código:
- Primero, se importan las bibliotecas necesarias: Auto-sklearn para aprendizaje automático automatizado,
train_test_split
para dividir los datos,load_iris
para un conjunto de datos de muestra yaccuracy_score
para la evaluación. - El código carga el conjunto de datos Iris, un estándar común en aprendizaje automático.
- Divide los datos en conjuntos de entrenamiento y prueba, con un 80% para entrenamiento y un 20% para prueba.
- Se inicializa un clasificador de Auto-sklearn con un límite de tiempo de 300 segundos para la tarea completa y 30 segundos por ejecución.
- Luego, se entrena el clasificador con los datos de entrenamiento usando el método
fit()
. - Después del entrenamiento, el modelo realiza predicciones sobre el conjunto de prueba.
- Finalmente, calcula e imprime la precisión del modelo utilizando la función
accuracy_score
.
Este código muestra cómo Auto-sklearn puede manejar automáticamente toda la tubería de aprendizaje automático, incluyendo selección del modelo, ajuste de hiperparámetros y preprocesamiento de características, con mínima intervención manual.
8.2.3 TPOT: Aprendizaje Automático Automatizado para Ciencia de Datos
TPOT (Tree-based Pipeline Optimization Tool) es una herramienta innovadora de AutoML de código abierto que utiliza programación genética para optimizar tuberías de aprendizaje automático. Al emplear algoritmos evolutivos, TPOT explora inteligentemente el vasto espacio de posibles soluciones de aprendizaje automático, incluyendo preprocesamiento de características, selección de modelos y ajuste de hiperparámetros.
El enfoque de programación genética utilizado por TPOT imita el proceso de selección natural. Comienza con una población de tuberías aleatorias de aprendizaje automático y las evoluciona iterativamente a través de múltiples generaciones. En cada generación, se seleccionan las tuberías con mejor desempeño y se combinan para crear nuevas tuberías potencialmente mejores. Este proceso continúa hasta alcanzar un número especificado de generaciones o un umbral de rendimiento.
La búsqueda exhaustiva de TPOT abarca miles de combinaciones potenciales, incluyendo:
- Transformaciones de características: TPOT explora diversas técnicas de preprocesamiento de datos para optimizar las características de entrada. Esto incluye:
- Métodos de escalado como estandarización y normalización para garantizar que todas las características estén en una escala similar.
- Estrategias de codificación para variables categóricas, como codificación one-hot o por etiquetas.
- Creación de características polinomiales para capturar relaciones no lineales en los datos.
- Técnicas de reducción dimensional como PCA o métodos de selección de características.
- Combinaciones de modelos: TPOT investiga un conjunto diverso de algoritmos de aprendizaje automático, incluyendo, entre otros:
- Árboles de decisión para modelos interpretables.
- Bosques aleatorios para aprendizaje en conjunto robusto.
- Máquinas de soporte vectorial para manejar espacios de alta dimensionalidad.
- Métodos de boosting como XGBoost o LightGBM para alto rendimiento.
- Redes neuronales para reconocimiento de patrones complejos.
- Modelos lineales para soluciones más simples e interpretables.
- Configuraciones de hiperparámetros: TPOT ajusta parámetros específicos del modelo para optimizar el rendimiento, considerando:
- Tasas de aprendizaje y fortalezas de regularización para métodos basados en gradientes.
- Profundidad de árboles y número de estimadores para métodos en conjunto.
- Opciones de kernel y parámetros de regularización para SVMs.
- Funciones de activación y configuraciones de capas para redes neuronales.
- Estrategias de validación cruzada para asegurar estimaciones robustas de rendimiento.
Mediante la exploración de este vasto espacio de posibilidades, TPOT puede descubrir tuberías de aprendizaje automático altamente optimizadas, adaptadas a las características específicas del conjunto de datos. Este enfoque automatizado a menudo conduce a soluciones que superan a los modelos creados manualmente, especialmente en dominios complejos.
Esta exhaustiva exploración hace que TPOT sea particularmente valioso para tareas complejas que requieren ingeniería extensiva de características y experimentación con modelos. Puede descubrir relaciones intrincadas en los datos e identificar configuraciones óptimas de tuberías que podrían pasar desapercibidas para científicos de datos humanos o herramientas de AutoML más simples.
Además, la capacidad de TPOT para generar tuberías completas, en lugar de solo modelos individuales, proporciona un enfoque más holístico a la automatización del aprendizaje automático. Esto puede llevar a soluciones más robustas y generalizables, especialmente para conjuntos de datos con estructuras complejas o patrones ocultos.
- Primero, se importan las bibliotecas necesarias: Auto-sklearn para aprendizaje automático automatizado,
Características clave de TPOT
- Optimización de Tuberías: TPOT sobresale en la optimización de toda la tubería de aprendizaje automático, desde el preprocesamiento de características hasta la selección de modelos. Este enfoque integral garantiza que cada paso del proceso esté ajustado para trabajar en armonía con los demás, lo que potencialmente lleva a un rendimiento general superior.
- Programación Genética: TPOT utiliza programación genética para evolucionar tuberías, refinando iterativamente las transformaciones de características y las elecciones de modelos. Este enfoque evolutivo permite a TPOT explorar un vasto espacio de soluciones de manera eficiente, a menudo descubriendo combinaciones innovadoras que los expertos humanos podrían pasar por alto.
- Flexibilidad: La compatibilidad de TPOT con los estimadores de Scikit-Learn lo hace altamente versátil y fácil de integrar en flujos de trabajo existentes. Esta interoperabilidad permite a los científicos de datos aprovechar las capacidades de automatización de TPOT mientras mantienen la flexibilidad para incorporar componentes personalizados cuando sea necesario.
- Ingeniería de Características Automatizada: TPOT puede crear y seleccionar automáticamente características relevantes, reduciendo la necesidad de ingeniería de características manual. Esta capacidad puede descubrir relaciones complejas en los datos que podrían no ser inmediatamente evidentes para los analistas humanos.
- Ajuste de Hiperparámetros: TPOT realiza una optimización exhaustiva de hiperparámetros en diversos modelos, asegurando que cada algoritmo esté configurado para un rendimiento óptimo en el conjunto de datos dado.
- Resultados Interpretables: A pesar de su proceso de optimización complejo, TPOT proporciona resultados interpretables generando código Python para la mejor tubería encontrada. Esto permite a los usuarios entender y refinar aún más las soluciones automatizadas si lo desean.
Ejemplo: Construcción de una Tubería de Aprendizaje Automático con TPOT
- Instalar TPOT:
pip install tpot
- Usar TPOT para construir y optimizar una tubería:
from tpot import TPOTClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_digits
from sklearn.metrics import accuracy_score, classification_report
import numpy as np
import matplotlib.pyplot as plt
# Load sample dataset
data = load_digits()
X, y = data.data, data.target
# Split the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Initialize TPOT classifier
tpot = TPOTClassifier(
generations=10,
population_size=50,
verbosity=2,
random_state=42,
config_dict='TPOT light',
cv=5,
n_jobs=-1
)
# Fit the TPOT classifier
tpot.fit(X_train, y_train)
# Make predictions
y_pred = tpot.predict(X_test)
# Evaluate the model
print("TPOT Accuracy:", accuracy_score(y_test, y_pred))
print("\nClassification Report:")
print(classification_report(y_test, y_pred))
# Export the optimized pipeline code
tpot.export("optimized_pipeline.py")
# Visualize sample predictions
fig, axes = plt.subplots(2, 5, figsize=(15, 6))
for i, ax in enumerate(axes.flatten()):
ax.imshow(X_test[i].reshape(8, 8), cmap='gray')
ax.set_title(f"Pred: {y_pred[i]}, True: {y_test[i]}")
ax.axis('off')
plt.tight_layout()
plt.show()Desglose del Código:
- Importación y Carga de Datos:
- Se importan las bibliotecas necesarias: TPOT para aprendizaje automático automatizado, scikit-learn para división de datos y métricas, numpy para operaciones numéricas y matplotlib para visualización.
- El conjunto de datos
digits
se carga utilizando la funciónload_digits
de scikit-learn, proporcionando un problema clásico de clasificación.
- Preparación de Datos:
- El conjunto de datos se divide en conjuntos de entrenamiento (80%) y prueba (20%) utilizando
train_test_split
. - Se usa un
random_state
fijo para asegurar la reproducibilidad de la división.
- Inicialización del Clasificador TPOT:
- Se crea un
TPOTClassifier
con los siguientes parámetros:generations=10
: Número de iteraciones para ejecutar el algoritmo de programación genética.population_size=50
: Cantidad de individuos a retener en la población genética.verbosity=2
: Proporciona información detallada sobre el proceso de optimización.random_state=42
: Asegura la reproducibilidad de los resultados.config_dict='TPOT light'
: Utiliza un espacio de búsqueda reducido para obtener resultados más rápidos.cv=5
: Realiza validación cruzada de 5 pliegues durante el proceso de optimización.n_jobs=-1
: Utiliza todos los núcleos de CPU disponibles para procesamiento paralelo.
- Entrenamiento del Modelo:
- Se llama al método
fit
del clasificador TPOT, iniciando el proceso de programación genética para encontrar la mejor tubería.
- Predicción y Evaluación:
- Se realizan predicciones sobre el conjunto de prueba utilizando la tubería optimizada.
- El rendimiento del modelo se evalúa con
accuracy_score
yclassification_report
, proporcionando una visión integral del desempeño del modelo en todas las clases.
- Exportación de la Tubería Optimizada:
- La mejor tubería encontrada por TPOT se exporta a un archivo Python llamado
optimized_pipeline.py
. - Esto permite replicar fácilmente el modelo y ajustarlo aún más.
- Visualización:
- Se traza una cuadrícula de 10 imágenes de dígitos del conjunto de prueba.
- Cada imagen se muestra junto con sus etiquetas predichas y verdaderas, proporcionando una representación visual del desempeño del modelo.
Este ejemplo demuestra la capacidad de TPOT para simplificar la tubería de aprendizaje automático, desde la selección del modelo hasta el ajuste de hiperparámetros. No solo muestra cómo evaluar el rendimiento del modelo, sino que también ilustra los resultados de manera visual, ofreciendo una comprensión más rica del proceso automatizado.
8.2.4 MLBox: Una Herramienta Integral para la Preparación de Datos y Construcción de Modelos
MLBox es una biblioteca de AutoML integral que aborda toda la tubería de aprendizaje automático, desde la preparación de datos hasta el despliegue del modelo. Su enfoque holístico abarca limpieza de datos, selección de características y construcción de modelos, convirtiéndola en una herramienta versátil para científicos de datos y practicantes de aprendizaje automático.
Una de las características más destacadas de MLBox es su manejo robusto de desafíos comunes en los datos. Sobresale en la gestión de valores faltantes, empleando técnicas de imputación sofisticadas para garantizar la completitud de los datos. Además, MLBox ofrece estrategias avanzadas para abordar el desequilibrio de datos, un problema crítico en muchos conjuntos de datos reales que puede afectar significativamente el rendimiento del modelo. Estas capacidades hacen que MLBox sea particularmente valiosa para proyectos que lidian con datos desordenados, incompletos o desequilibrados.
El proceso de selección de características de la biblioteca también es impresionante. MLBox utiliza diversos algoritmos para identificar las características más relevantes, reduciendo la dimensionalidad y mejorando la eficiencia del modelo. Este proceso automatizado puede revelar patrones y relaciones importantes en los datos que podrían pasar desapercibidos en un análisis manual.
Además, la fase de construcción de modelos de MLBox incorpora una amplia gama de algoritmos y realiza ajuste de hiperparámetros automáticamente. Esto asegura que el modelo final no solo esté bien adaptado a las características específicas del conjunto de datos, sino que también esté optimizado para el rendimiento. La capacidad de la biblioteca para manejar tareas complejas de preprocesamiento y modelado con mínima intervención humana la convierte en una opción ideal para científicos de datos que buscan simplificar su flujo de trabajo y centrarse en análisis e interpretación de alto nivel.
Características Clave de MLBox:
- Preparación y Limpieza de Datos: MLBox sobresale en automatizar procesos de limpieza de datos, gestionando eficientemente valores faltantes y valores atípicos. Utiliza técnicas sofisticadas de imputación y métodos robustos de detección de valores atípicos, garantizando la calidad y completitud de los datos.
- Selección y Creación de Características: La biblioteca incorpora algoritmos avanzados para la selección de características y técnicas de transformación. Puede identificar automáticamente las características más relevantes, crear nuevas características significativas y realizar reducción de dimensionalidad.
- Construcción Automática de Modelos: MLBox implementa un enfoque integral para AutoML, explorando una amplia gama de algoritmos, ajustando hiperparámetros e incluso considerando métodos de ensamblado.
- Escalabilidad y Eficiencia: Diseñada para manejar conjuntos de datos a gran escala, MLBox incluye capacidades de computación distribuida.
- Interpretabilidad y Explicabilidad: MLBox proporciona herramientas para la interpretación de modelos, ayudando a los usuarios a entender las razones detrás de las predicciones.
Ejemplo: Uso de MLBox para Aprendizaje Automático Automatizado.
from mlbox.preprocessing import *
from mlbox.optimisation import *
from mlbox.prediction import *
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
# Load the Boston Housing dataset
boston = load_boston()
X, y = boston.data, boston.target
# Split the data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Create a dictionary with the paths to your train and test datasets
paths = {"train": X_train, "test": X_test}
# Create a Reader object
rd = Reader(sep=",")
# Read and preprocess the data
df = rd.train_test_split(paths, target_name="target")
# Define the preprocessing steps
prep = Preprocessor()
df = prep.fit_transform(df)
# Define the optimization process
opt = Optimiser(scoring="neg_mean_squared_error", n_folds=5)
# Find the best hyperparameters
best = opt.optimise(df["train"], df["test"])
# Make predictions using the best model
pred = Predictor()
predictions = pred.fit_predict(best, df)
print("Predictions:", predictions)
Desglose del Código:
- Importaciones y Carga de Datos:
- Importamos los módulos necesarios de MLBox y scikit-learn.
- El conjunto de datos Boston Housing se carga usando la función
load_boston
de scikit-learn.
- Preparación de Datos:
- El conjunto de datos se divide en un conjunto de entrenamiento (80%) y uno de prueba (20%) usando
train_test_split
. - Se crea un diccionario
paths
para almacenar las rutas de los conjuntos de entrenamiento y prueba.
- El conjunto de datos se divide en un conjunto de entrenamiento (80%) y uno de prueba (20%) usando
- Lectura y Preprocesamiento de Datos:
- Se crea un objeto
Reader
para leer los datos. - Se utiliza el método
train_test_split
para leer y dividir los datos. - Se crea un objeto
Preprocessor
y se aplica a los datos utilizandofit_transform
.
- Se crea un objeto
- Proceso de Optimización:
- Se crea un objeto
Optimiser
con el error cuadrático medio como métrica de evaluación y validación cruzada de 5 pliegues. - Se llama al método
optimise
para encontrar los mejores hiperparámetros y modelo.
- Se crea un objeto
- Predicción:
- Se crea un objeto
Predictor
para realizar predicciones usando el mejor modelo encontrado. - Se utiliza el método
fit_predict
para entrenar el modelo con todo el conjunto de datos y realizar predicciones.
- Se crea un objeto
- Resultados:
- Se imprimen las predicciones finales.
Este ejemplo demuestra la capacidad de MLBox para automatizar toda la tubería de aprendizaje automático, desde el preprocesamiento de datos hasta la optimización del modelo y la predicción, con una intervención manual mínima.
Las herramientas de ingeniería de características y las bibliotecas de AutoML como Featuretools, Auto-sklearn, TPOT y MLBox son recursos revolucionarios que simplifican el flujo de trabajo del aprendizaje automático. Estas herramientas avanzadas automatizan procesos críticos, incluida la ingeniería de características, la selección de modelos y la optimización de hiperparámetros. Al hacerlo, reducen significativamente el tiempo y el esfuerzo necesarios para las tareas manuales, permitiendo que los científicos de datos y los profesionales del aprendizaje automático se concentren en la resolución de problemas y estrategias de nivel superior.
La automatización que ofrecen estas herramientas va más allá de un simple ahorro de tiempo. A menudo conduce a un mejor rendimiento del modelo al explorar una gama más amplia de combinaciones de características y arquitecturas de modelos de lo que sería factible manualmente. Por ejemplo, Featuretools sobresale en la generación automática de características relevantes a partir de datos en bruto, descubriendo potencialmente relaciones complejas que los analistas humanos podrían pasar por alto. Auto-sklearn utiliza metaaprendizaje para seleccionar y configurar inteligentemente algoritmos de aprendizaje automático, logrando a menudo un rendimiento de vanguardia con una intervención humana mínima.
TPOT, como herramienta de AutoML basada en programación genética, puede evolucionar tuberías óptimas de aprendizaje automático, explorando combinaciones de pasos de preprocesamiento, métodos de selección de características y arquitecturas de modelos que un humano podría no considerar. MLBox, con su enfoque integral en toda la tubería de aprendizaje automático, ofrece soluciones robustas para el preprocesamiento de datos, la selección de características y la construcción de modelos, lo que la hace particularmente valiosa para trabajar con conjuntos de datos desordenados, incompletos o desequilibrados.
Estas herramientas no solo democratizan el aprendizaje automático al hacer que las técnicas avanzadas sean más accesibles para no expertos, sino que también amplían los límites de lo que es posible en términos de rendimiento y eficiencia de los modelos. A medida que el campo de AutoML sigue evolucionando, podemos esperar herramientas aún más sofisticadas que automatizarán y optimizarán aún más el proceso de aprendizaje automático, lo que potencialmente conducirá a avances en diversos dominios de inteligencia artificial y ciencia de datos.
8.2 Introducción a las herramientas de características y bibliotecas de AutoML
En los últimos años, los avances en la automatización del aprendizaje automático han dado lugar al desarrollo de herramientas y bibliotecas potentes que simplifican los procesos de ingeniería de características y modelado. Las herramientas de características y las bibliotecas de AutoML permiten a los científicos de datos y analistas automatizar tareas esenciales como la limpieza de datos, la transformación, la selección de características e incluso el entrenamiento de modelos. Esta automatización facilita la extracción de información valiosa a partir de conjuntos de datos complejos, permitiendo una experimentación más rápida y reduciendo el potencial de errores humanos.
En esta sección, exploraremos algunas de las herramientas de características y bibliotecas de AutoML más utilizadas, como Featuretools, Auto-sklearn, TPOT y MLBox. Estas herramientas pueden simplificar la ingeniería de características y la construcción de modelos, y cada una tiene características únicas que la hacen adecuada para tipos específicos de proyectos.
8.2.1 Featuretools: Automatización de la ingeniería de características con Deep Feature Synthesis
Featuretools se destaca como una biblioteca poderosa dedicada a la automatización del proceso de ingeniería de características. A diferencia de los métodos manuales tradicionales, Featuretools emplea una técnica sofisticada llamada síntesis profunda de características (deep feature synthesis) para generar características complejas en múltiples tablas o dataframes. Este enfoque es particularmente valioso cuando se trabaja con bases de datos relacionales o datos de series temporales, donde las relaciones entre diferentes entidades de datos pueden proporcionar información significativa.
El método de síntesis profunda de características en Featuretools opera recorriendo las relaciones definidas entre diferentes tablas en un conjunto de datos. Aplica automáticamente varias funciones de transformación y agregación a lo largo de estos caminos, creando nuevas características que capturan patrones y dependencias intrincados dentro de los datos. Por ejemplo, en un conjunto de datos de ventas minoristas, podría generar características como "monto promedio de compra por cliente en los últimos 30 días" o "número de productos únicos comprados por cada cliente", sin necesidad de codificar manualmente estos cálculos.
Este enfoque automatizado ofrece varias ventajas:
- Eficiencia: Featuretools simplifica significativamente el proceso de ingeniería de características, reduciendo drásticamente el tiempo y el esfuerzo requeridos. Esto permite a los científicos de datos dedicar más tiempo y recursos a otros aspectos críticos del flujo de trabajo de aprendizaje automático, como la interpretación de modelos, el ajuste fino y las estrategias de implementación. Al automatizar tareas repetitivas, permite iteraciones más rápidas y experimentación, lo que potencialmente lleva a conocimientos más rápidos y modelos más robustos.
- Exhaustividad: El enfoque sistemático de exploración de características de la herramienta es una ventaja clave. Al examinar exhaustivamente todas las combinaciones posibles de características, Featuretools puede descubrir patrones y relaciones intrincadas dentro de los datos que podrían no ser obvios o fáciles de pasar por alto para los analistas humanos. Esta exploración exhaustiva a menudo conduce al descubrimiento de características altamente predictivas que pueden mejorar significativamente el rendimiento del modelo.
- Escalabilidad: Una de las capacidades destacadas de Featuretools es su habilidad para manejar conjuntos de datos complejos y a gran escala con múltiples tablas relacionadas. Esto es particularmente valioso para aplicaciones a nivel empresarial, donde los datos a menudo se distribuyen entre varios sistemas y bases de datos interconectados. La escalabilidad de la herramienta garantiza que, a medida que los volúmenes de datos crecen y se vuelven más complejos, el proceso de ingeniería de características siga siendo eficiente y efectivo, permitiendo a las organizaciones aprovechar todo su ecosistema de datos para tareas de aprendizaje automático.
- Consistencia: La naturaleza automatizada de Featuretools asegura un enfoque estandarizado para la creación de características en diferentes proyectos y entre miembros del equipo. Esta consistencia es crucial para mantener la calidad y la reproducibilidad de los modelos de aprendizaje automático, especialmente en entornos colaborativos. Ayuda a eliminar discrepancias que podrían surgir de los diferentes enfoques de los analistas, asegurando que la ingeniería de características siga las mejores prácticas de manera consistente. Esta estandarización también facilita el mantenimiento del modelo, las actualizaciones y la transferencia de conocimientos dentro de los equipos de ciencia de datos.
Además, la consistencia proporcionada por Featuretools contribuye a una mejor documentación y trazabilidad del proceso de ingeniería de características. Esto es particularmente importante para industrias con requisitos regulatorios estrictos, donde la capacidad de explicar y justificar las entradas del modelo es crucial. El enfoque sistemático de la herramienta facilita el seguimiento del origen y la lógica detrás de cada característica generada, mejorando la transparencia e interpretabilidad del flujo de trabajo de aprendizaje automático.
Al aprovechar Featuretools, los científicos de datos pueden mejorar significativamente su capacidad para extraer características significativas de conjuntos de datos complejos y de múltiples tablas, mejorando potencialmente el desempeño e interpretabilidad de sus modelos de aprendizaje automático.
Cómo funciona Featuretools
Featuretools opera utilizando un conjunto de entidades (EntitySet), que es una colección de dataframes relacionados. Esta estructura permite a la herramienta comprender y aprovechar las relaciones entre diferentes tablas de datos. Al definir estas relaciones, Featuretools puede realizar una generación sofisticada de características mediante diversas operaciones, principalmente agregación y transformación.
El poder de Featuretools radica en su capacidad para crear automáticamente características complejas y significativas en conjuntos de datos relacionados. Por ejemplo, en un escenario minorista con tablas separadas de clientes y transacciones, Featuretools puede generar características detalladas a nivel de cliente. Estas podrían incluir métricas como el promedio de monto por transacción por cliente, la frecuencia de compras o el gasto total en un período de tiempo específico.
Este proceso automatizado de generación de características va más allá de simples agregaciones. Featuretools puede crear características basadas en el tiempo (por ejemplo, "número de transacciones en los últimos 30 días"), aplicar transformaciones matemáticas e incluso generar características que abarcan múltiples tablas relacionadas. Por ejemplo, podría crear una característica como "porcentaje de transacciones de alto valor en comparación con el promedio del cliente", que requiere comprender tanto el historial del cliente como los patrones generales de transacciones.
Al automatizar estas complejas tareas de ingeniería de características, Featuretools reduce significativamente el esfuerzo manual requerido en la preparación de datos, permitiendo que los científicos de datos se concentren en el desarrollo y la interpretación de modelos. Esta capacidad es particularmente valiosa al trabajar con conjuntos de datos grandes y complejos, donde la ingeniería manual de características sería un proceso que consume mucho tiempo y podría pasar por alto patrones potencialmente importantes.
Funciones clave de Featuretools
- EntitySet: Este componente fundamental de Featuretools gestiona los dataframes relacionados, estableciendo la estructura para la síntesis profunda de características (Deep Feature Synthesis). Permite a los usuarios definir relaciones entre diferentes tablas, creando una representación coherente de estructuras de datos complejas. Esto es especialmente útil cuando se trabaja con bases de datos relacionales o conjuntos de datos que abarcan múltiples tablas.
- Deep Feature Synthesis (DFS): En el núcleo de la funcionalidad de Featuretools, DFS es un algoritmo avanzado que aplica diversas funciones de agregación y transformación en las columnas para generar nuevas características. Recorre las relaciones definidas en el EntitySet, creando características que capturan interacciones y patrones complejos dentro de los datos. DFS puede producir características que abarcan múltiples tablas, revelando conocimientos que serían difíciles de discernir manualmente.
- Feature Primitives: Son los bloques básicos de construcción de la ingeniería de características en Featuretools. Los primitives son funciones predefinidas como promedio, suma, moda, conteo y operaciones más complejas. Sirven como base para la generación automática de características, permitiendo crear una amplia variedad de tipos de características. Los usuarios también pueden definir primitives personalizados para adaptar el proceso de generación de características a conocimientos o requisitos específicos del dominio.
- Ingeniería de características basada en el tiempo: Featuretools sobresale en la creación de características basadas en el tiempo, que son cruciales para muchas tareas de modelado predictivo. Puede generar automáticamente características como "tiempo desde el último evento", "valor promedio en los últimos N días" o "suma acumulativa hasta este punto", capturando dinámicas temporales en los datos.
- Selección y reducción de características: Para manejar el gran número de características generadas, Featuretools proporciona métodos para la selección de características y la reducción de dimensionalidad. Estas herramientas ayudan a identificar las características más relevantes, reducir el ruido y mejorar el rendimiento y la interpretabilidad del modelo.
Ejemplo: Ingeniería de características con Featuretools
Para ilustrar el poder de Featuretools, exploremos un ejemplo práctico utilizando dos conjuntos de datos interconectados: una tabla de clientes y una tabla de transacciones. Este escenario es común en muchas aplicaciones comerciales, donde comprender el comportamiento del cliente a través de su historial de transacciones es crucial para la toma de decisiones y el modelado predictivo.
En este ejemplo, aprovecharemos la síntesis profunda de características para generar automáticamente características que capturen patrones intrincados en el comportamiento de transacción de los clientes. Este proceso demostrará cómo Featuretools puede descubrir información valiosa que sería desafiante o llevaría mucho tiempo derivar manualmente.
Las características que crearemos irán más allá de las simples agregaciones. Podrían incluir:
- Métricas de recencia: ¿Cuán reciente fue la última transacción de cada cliente?
- Métricas de frecuencia: ¿Con qué frecuencia realiza transacciones cada cliente?
- Métricas de valor monetario: ¿Cuál es el promedio o el valor total de las transacciones de cada cliente?
- Indicadores de tendencia: ¿Los montos de las transacciones de un cliente están aumentando o disminuyendo con el tiempo?
Al automatizar la creación de estas características complejas, Featuretools permite a los científicos de datos generar rápidamente un conjunto rico de predictores que pueden mejorar significativamente el rendimiento de los modelos de aprendizaje automático, como la predicción de abandono de clientes o campañas de marketing personalizadas.
- Definir y agregar dataframes al EntitySet:
import featuretools as ft
import pandas as pd
# Sample customers data
customers_df = pd.DataFrame({
'customer_id': [1, 2, 3],
'signup_date': pd.to_datetime(['2022-01-01', '2022-02-01', '2022-03-01'])
})
# Sample transactions data
transactions_df = pd.DataFrame({
'transaction_id': [1, 2, 3, 4, 5],
'customer_id': [1, 2, 1, 3, 2],
'amount': [100, 200, 50, 300, 120],
'transaction_date': pd.to_datetime(['2022-01-10', '2022-02-15', '2022-01-20', '2022-03-10', '2022-02-25'])
})
# Create an EntitySet and add dataframes
es = ft.EntitySet(id="customer_data")
es = es.add_dataframe(dataframe_name="customers", dataframe=customers_df, index="customer_id")
es = es.add_dataframe(dataframe_name="transactions", dataframe=transactions_df, index="transaction_id",
time_index="transaction_date")
# Define relationship between dataframes
es = es.add_relationship("customers", "customer_id", "transactions", "customer_id") - Generar características mediante Deep Feature Synthesis:
# Generate features with aggregation primitives like mean and sum
feature_matrix, feature_defs = ft.dfs(entityset=es, target_dataframe_name="customers", agg_primitives=["mean", "sum", "count"])
# View the feature matrix
print(feature_matrix.head())
En este ejemplo, Featuretools demuestra su capacidad al generar automáticamente características sofisticadas que ofrecen profundos conocimientos sobre el comportamiento del cliente. Las características creadas, como transactions.amount.mean
y transactions.amount.sum
, representan el gasto promedio y total de cada cliente, respectivamente. Estas características, generadas automáticamente, van más allá de las simples agregaciones y pueden capturar patrones complejos en los datos.
Por ejemplo, transactions.amount.mean
proporciona una visión rápida del comportamiento típico de gasto de un cliente, útil para identificar clientes de alto valor o detectar actividades inusuales. Por otro lado, transactions.amount.sum
ofrece una visión integral del gasto total de un cliente, valiosa para cálculos de programas de fidelización o evaluación de riesgos.
Featuretools también puede crear características más complejas, como agregaciones basadas en el tiempo (por ejemplo, gasto promedio en los últimos 30 días) o características que abarcan varias tablas relacionadas (por ejemplo, la proporción del gasto de un cliente en comparación con el promedio en su ciudad). Estas características intrincadas, generadas sin codificación manual, pueden mejorar significativamente el poder predictivo de los modelos de aprendizaje automático y proporcionar información empresarial valiosa.
Al automatizar este proceso, Featuretools no solo ahorra tiempo, sino que también descubre patrones que podrían pasarse por alto en la ingeniería manual de características. Esta capacidad es especialmente valiosa al trabajar con grandes conjuntos de datos complejos, donde el espacio potencial de características es vasto y difícil de explorar manualmente.
8.2.2 Auto-sklearn: Automatización del pipeline completo de aprendizaje automático
Auto-sklearn es una avanzada biblioteca de AutoML que revoluciona el flujo de trabajo de aprendizaje automático al automatizar cada paso, desde la ingeniería de características hasta la selección de modelos y el ajuste de hiperparámetros. Basada en la robusta biblioteca Scikit-Learn, Auto-sklearn ofrece una solución integral para una amplia gama de desafíos de aprendizaje automático.
Una de las características destacadas de Auto-sklearn es su capacidad para generar automáticamente transformaciones de características. Esta funcionalidad es crucial para descubrir patrones ocultos en los datos, lo que puede mejorar significativamente el rendimiento del modelo. La biblioteca emplea algoritmos sofisticados para identificar las características más relevantes y crear nuevas mediante diversas transformaciones, un proceso que tradicionalmente requiere un tiempo y experiencia considerables.
Además de la ingeniería de características, Auto-sklearn sobresale en la selección de modelos. Puede evaluar una amplia variedad de algoritmos de aprendizaje automático, desde modelos lineales simples hasta complejos métodos de ensamblaje, para determinar el más adecuado para un conjunto de datos específico. Este proceso automatizado ahorra a los científicos de datos innumerables horas de prueba y error, al tiempo que descubre combinaciones de modelos que podrían pasarse por alto en una exploración manual.
El ajuste de hiperparámetros de Auto-sklearn también es impresionante. Utiliza técnicas avanzadas de optimización para ajustar los parámetros del modelo, una tarea que puede ser excepcionalmente intensiva en tiempo y recursos computacionales cuando se realiza manualmente. Este ajuste automatizado a menudo da como resultado modelos que superan a aquellos configurados por expertos humanos.
Lo que diferencia a Auto-sklearn es su capacidad para optimizar simultáneamente la ingeniería de características y los parámetros del modelo. Este enfoque holístico de optimización puede llevar a mejoras sinérgicas en el rendimiento del modelo, lo que lo hace particularmente valioso para conjuntos de datos complejos donde las interacciones entre las características y la arquitectura del modelo no son inmediatamente evidentes.
Al automatizar estos aspectos críticos del pipeline de aprendizaje automático, Auto-sklearn no solo acelera el proceso de desarrollo, sino que también democratiza el acceso a técnicas avanzadas de aprendizaje automático. Permite a los científicos de datos enfocarse en tareas de alto nivel, como la formulación de problemas y la interpretación de resultados, mientras la biblioteca maneja las complejidades del desarrollo del modelo.
Características clave de Auto-sklearn
- Preprocesamiento automático de datos: Auto-sklearn maneja diversos tipos y formatos de datos. Aplica métodos de escalado apropiados (por ejemplo, estandarización, normalización) a las características numéricas, realiza codificación one-hot para variables categóricas y gestiona datos faltantes mediante técnicas de imputación. Este preprocesamiento integral garantiza que los datos estén óptimamente preparados para una amplia gama de algoritmos de aprendizaje automático.
- Selección de modelos y ajuste de hiperparámetros: Usando aprendizaje meta y optimización bayesiana, Auto-sklearn explora eficientemente el espacio de posibles modelos y configuraciones. El aprendizaje meta utiliza conocimientos de tareas previas para identificar rápidamente algoritmos prometedores, mientras que la optimización bayesiana explora sistemáticamente el espacio de hiperparámetros para encontrar configuraciones óptimas.
- Modelos ensamblados: Auto-sklearn construye modelos ensamblados combinando múltiples modelos de alto rendimiento, a menudo de diferentes familias de algoritmos. Este enfoque mejora la precisión general y la estabilidad del modelo, haciéndolo particularmente efectivo para conjuntos de datos complejos con patrones diversos.
- Gestión de tiempo y recursos: Auto-sklearn permite a los usuarios establecer límites de tiempo para el proceso de optimización, lo que lo hace adecuado tanto para prototipos rápidos como para desarrollos extensos. Asigna eficientemente los recursos computacionales, equilibrando la exploración de diferentes modelos y la explotación de configuraciones prometedoras.
- Interpretabilidad y transparencia: A pesar de su naturaleza automatizada, Auto-sklearn proporciona información sobre su proceso de toma de decisiones. Los usuarios pueden examinar los modelos seleccionados, sus hiperparámetros y la composición del modelo final ensamblado. Esta transparencia es crucial para comprender el comportamiento del modelo y cumplir con los requisitos regulatorios en ciertas industrias.
Ejemplo: Usando Auto-sklearn para la construcción automatizada de modelos
- Instalar Auto-sklearn:
pip install auto-sklearn
- Cargar datos y entrenar con Auto-sklearn:
import autosklearn.classification
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_iris
from sklearn.metrics import accuracy_score
# Load a sample dataset
data = load_iris()
X_train, X_test, y_train, y_test = train_test_split(data.data, data.target, test_size=0.2, random_state=42)
# Initialize and fit Auto-sklearn classifier
automl = autosklearn.classification.AutoSklearnClassifier(time_left_for_this_task=300, per_run_time_limit=30)
automl.fit(X_train, y_train)
# Make predictions and evaluate
y_pred = automl.predict(X_test)
print("Auto-sklearn Accuracy:", accuracy_score(y_test, y_pred))Este código demuestra cómo usar Auto-sklearn, una biblioteca de aprendizaje automático automatizado, para construir y evaluar un modelo de clasificación. A continuación, un desglose del código:
- Primero, se importan las bibliotecas necesarias: Auto-sklearn para aprendizaje automático automatizado,
train_test_split
para dividir los datos,load_iris
para un conjunto de datos de muestra yaccuracy_score
para la evaluación. - El código carga el conjunto de datos Iris, un estándar común en aprendizaje automático.
- Divide los datos en conjuntos de entrenamiento y prueba, con un 80% para entrenamiento y un 20% para prueba.
- Se inicializa un clasificador de Auto-sklearn con un límite de tiempo de 300 segundos para la tarea completa y 30 segundos por ejecución.
- Luego, se entrena el clasificador con los datos de entrenamiento usando el método
fit()
. - Después del entrenamiento, el modelo realiza predicciones sobre el conjunto de prueba.
- Finalmente, calcula e imprime la precisión del modelo utilizando la función
accuracy_score
.
Este código muestra cómo Auto-sklearn puede manejar automáticamente toda la tubería de aprendizaje automático, incluyendo selección del modelo, ajuste de hiperparámetros y preprocesamiento de características, con mínima intervención manual.
8.2.3 TPOT: Aprendizaje Automático Automatizado para Ciencia de Datos
TPOT (Tree-based Pipeline Optimization Tool) es una herramienta innovadora de AutoML de código abierto que utiliza programación genética para optimizar tuberías de aprendizaje automático. Al emplear algoritmos evolutivos, TPOT explora inteligentemente el vasto espacio de posibles soluciones de aprendizaje automático, incluyendo preprocesamiento de características, selección de modelos y ajuste de hiperparámetros.
El enfoque de programación genética utilizado por TPOT imita el proceso de selección natural. Comienza con una población de tuberías aleatorias de aprendizaje automático y las evoluciona iterativamente a través de múltiples generaciones. En cada generación, se seleccionan las tuberías con mejor desempeño y se combinan para crear nuevas tuberías potencialmente mejores. Este proceso continúa hasta alcanzar un número especificado de generaciones o un umbral de rendimiento.
La búsqueda exhaustiva de TPOT abarca miles de combinaciones potenciales, incluyendo:
- Transformaciones de características: TPOT explora diversas técnicas de preprocesamiento de datos para optimizar las características de entrada. Esto incluye:
- Métodos de escalado como estandarización y normalización para garantizar que todas las características estén en una escala similar.
- Estrategias de codificación para variables categóricas, como codificación one-hot o por etiquetas.
- Creación de características polinomiales para capturar relaciones no lineales en los datos.
- Técnicas de reducción dimensional como PCA o métodos de selección de características.
- Combinaciones de modelos: TPOT investiga un conjunto diverso de algoritmos de aprendizaje automático, incluyendo, entre otros:
- Árboles de decisión para modelos interpretables.
- Bosques aleatorios para aprendizaje en conjunto robusto.
- Máquinas de soporte vectorial para manejar espacios de alta dimensionalidad.
- Métodos de boosting como XGBoost o LightGBM para alto rendimiento.
- Redes neuronales para reconocimiento de patrones complejos.
- Modelos lineales para soluciones más simples e interpretables.
- Configuraciones de hiperparámetros: TPOT ajusta parámetros específicos del modelo para optimizar el rendimiento, considerando:
- Tasas de aprendizaje y fortalezas de regularización para métodos basados en gradientes.
- Profundidad de árboles y número de estimadores para métodos en conjunto.
- Opciones de kernel y parámetros de regularización para SVMs.
- Funciones de activación y configuraciones de capas para redes neuronales.
- Estrategias de validación cruzada para asegurar estimaciones robustas de rendimiento.
Mediante la exploración de este vasto espacio de posibilidades, TPOT puede descubrir tuberías de aprendizaje automático altamente optimizadas, adaptadas a las características específicas del conjunto de datos. Este enfoque automatizado a menudo conduce a soluciones que superan a los modelos creados manualmente, especialmente en dominios complejos.
Esta exhaustiva exploración hace que TPOT sea particularmente valioso para tareas complejas que requieren ingeniería extensiva de características y experimentación con modelos. Puede descubrir relaciones intrincadas en los datos e identificar configuraciones óptimas de tuberías que podrían pasar desapercibidas para científicos de datos humanos o herramientas de AutoML más simples.
Además, la capacidad de TPOT para generar tuberías completas, en lugar de solo modelos individuales, proporciona un enfoque más holístico a la automatización del aprendizaje automático. Esto puede llevar a soluciones más robustas y generalizables, especialmente para conjuntos de datos con estructuras complejas o patrones ocultos.
- Primero, se importan las bibliotecas necesarias: Auto-sklearn para aprendizaje automático automatizado,
Características clave de TPOT
- Optimización de Tuberías: TPOT sobresale en la optimización de toda la tubería de aprendizaje automático, desde el preprocesamiento de características hasta la selección de modelos. Este enfoque integral garantiza que cada paso del proceso esté ajustado para trabajar en armonía con los demás, lo que potencialmente lleva a un rendimiento general superior.
- Programación Genética: TPOT utiliza programación genética para evolucionar tuberías, refinando iterativamente las transformaciones de características y las elecciones de modelos. Este enfoque evolutivo permite a TPOT explorar un vasto espacio de soluciones de manera eficiente, a menudo descubriendo combinaciones innovadoras que los expertos humanos podrían pasar por alto.
- Flexibilidad: La compatibilidad de TPOT con los estimadores de Scikit-Learn lo hace altamente versátil y fácil de integrar en flujos de trabajo existentes. Esta interoperabilidad permite a los científicos de datos aprovechar las capacidades de automatización de TPOT mientras mantienen la flexibilidad para incorporar componentes personalizados cuando sea necesario.
- Ingeniería de Características Automatizada: TPOT puede crear y seleccionar automáticamente características relevantes, reduciendo la necesidad de ingeniería de características manual. Esta capacidad puede descubrir relaciones complejas en los datos que podrían no ser inmediatamente evidentes para los analistas humanos.
- Ajuste de Hiperparámetros: TPOT realiza una optimización exhaustiva de hiperparámetros en diversos modelos, asegurando que cada algoritmo esté configurado para un rendimiento óptimo en el conjunto de datos dado.
- Resultados Interpretables: A pesar de su proceso de optimización complejo, TPOT proporciona resultados interpretables generando código Python para la mejor tubería encontrada. Esto permite a los usuarios entender y refinar aún más las soluciones automatizadas si lo desean.
Ejemplo: Construcción de una Tubería de Aprendizaje Automático con TPOT
- Instalar TPOT:
pip install tpot
- Usar TPOT para construir y optimizar una tubería:
from tpot import TPOTClassifier
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_digits
from sklearn.metrics import accuracy_score, classification_report
import numpy as np
import matplotlib.pyplot as plt
# Load sample dataset
data = load_digits()
X, y = data.data, data.target
# Split the data into training and testing sets
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Initialize TPOT classifier
tpot = TPOTClassifier(
generations=10,
population_size=50,
verbosity=2,
random_state=42,
config_dict='TPOT light',
cv=5,
n_jobs=-1
)
# Fit the TPOT classifier
tpot.fit(X_train, y_train)
# Make predictions
y_pred = tpot.predict(X_test)
# Evaluate the model
print("TPOT Accuracy:", accuracy_score(y_test, y_pred))
print("\nClassification Report:")
print(classification_report(y_test, y_pred))
# Export the optimized pipeline code
tpot.export("optimized_pipeline.py")
# Visualize sample predictions
fig, axes = plt.subplots(2, 5, figsize=(15, 6))
for i, ax in enumerate(axes.flatten()):
ax.imshow(X_test[i].reshape(8, 8), cmap='gray')
ax.set_title(f"Pred: {y_pred[i]}, True: {y_test[i]}")
ax.axis('off')
plt.tight_layout()
plt.show()Desglose del Código:
- Importación y Carga de Datos:
- Se importan las bibliotecas necesarias: TPOT para aprendizaje automático automatizado, scikit-learn para división de datos y métricas, numpy para operaciones numéricas y matplotlib para visualización.
- El conjunto de datos
digits
se carga utilizando la funciónload_digits
de scikit-learn, proporcionando un problema clásico de clasificación.
- Preparación de Datos:
- El conjunto de datos se divide en conjuntos de entrenamiento (80%) y prueba (20%) utilizando
train_test_split
. - Se usa un
random_state
fijo para asegurar la reproducibilidad de la división.
- Inicialización del Clasificador TPOT:
- Se crea un
TPOTClassifier
con los siguientes parámetros:generations=10
: Número de iteraciones para ejecutar el algoritmo de programación genética.population_size=50
: Cantidad de individuos a retener en la población genética.verbosity=2
: Proporciona información detallada sobre el proceso de optimización.random_state=42
: Asegura la reproducibilidad de los resultados.config_dict='TPOT light'
: Utiliza un espacio de búsqueda reducido para obtener resultados más rápidos.cv=5
: Realiza validación cruzada de 5 pliegues durante el proceso de optimización.n_jobs=-1
: Utiliza todos los núcleos de CPU disponibles para procesamiento paralelo.
- Entrenamiento del Modelo:
- Se llama al método
fit
del clasificador TPOT, iniciando el proceso de programación genética para encontrar la mejor tubería.
- Predicción y Evaluación:
- Se realizan predicciones sobre el conjunto de prueba utilizando la tubería optimizada.
- El rendimiento del modelo se evalúa con
accuracy_score
yclassification_report
, proporcionando una visión integral del desempeño del modelo en todas las clases.
- Exportación de la Tubería Optimizada:
- La mejor tubería encontrada por TPOT se exporta a un archivo Python llamado
optimized_pipeline.py
. - Esto permite replicar fácilmente el modelo y ajustarlo aún más.
- Visualización:
- Se traza una cuadrícula de 10 imágenes de dígitos del conjunto de prueba.
- Cada imagen se muestra junto con sus etiquetas predichas y verdaderas, proporcionando una representación visual del desempeño del modelo.
Este ejemplo demuestra la capacidad de TPOT para simplificar la tubería de aprendizaje automático, desde la selección del modelo hasta el ajuste de hiperparámetros. No solo muestra cómo evaluar el rendimiento del modelo, sino que también ilustra los resultados de manera visual, ofreciendo una comprensión más rica del proceso automatizado.
8.2.4 MLBox: Una Herramienta Integral para la Preparación de Datos y Construcción de Modelos
MLBox es una biblioteca de AutoML integral que aborda toda la tubería de aprendizaje automático, desde la preparación de datos hasta el despliegue del modelo. Su enfoque holístico abarca limpieza de datos, selección de características y construcción de modelos, convirtiéndola en una herramienta versátil para científicos de datos y practicantes de aprendizaje automático.
Una de las características más destacadas de MLBox es su manejo robusto de desafíos comunes en los datos. Sobresale en la gestión de valores faltantes, empleando técnicas de imputación sofisticadas para garantizar la completitud de los datos. Además, MLBox ofrece estrategias avanzadas para abordar el desequilibrio de datos, un problema crítico en muchos conjuntos de datos reales que puede afectar significativamente el rendimiento del modelo. Estas capacidades hacen que MLBox sea particularmente valiosa para proyectos que lidian con datos desordenados, incompletos o desequilibrados.
El proceso de selección de características de la biblioteca también es impresionante. MLBox utiliza diversos algoritmos para identificar las características más relevantes, reduciendo la dimensionalidad y mejorando la eficiencia del modelo. Este proceso automatizado puede revelar patrones y relaciones importantes en los datos que podrían pasar desapercibidos en un análisis manual.
Además, la fase de construcción de modelos de MLBox incorpora una amplia gama de algoritmos y realiza ajuste de hiperparámetros automáticamente. Esto asegura que el modelo final no solo esté bien adaptado a las características específicas del conjunto de datos, sino que también esté optimizado para el rendimiento. La capacidad de la biblioteca para manejar tareas complejas de preprocesamiento y modelado con mínima intervención humana la convierte en una opción ideal para científicos de datos que buscan simplificar su flujo de trabajo y centrarse en análisis e interpretación de alto nivel.
Características Clave de MLBox:
- Preparación y Limpieza de Datos: MLBox sobresale en automatizar procesos de limpieza de datos, gestionando eficientemente valores faltantes y valores atípicos. Utiliza técnicas sofisticadas de imputación y métodos robustos de detección de valores atípicos, garantizando la calidad y completitud de los datos.
- Selección y Creación de Características: La biblioteca incorpora algoritmos avanzados para la selección de características y técnicas de transformación. Puede identificar automáticamente las características más relevantes, crear nuevas características significativas y realizar reducción de dimensionalidad.
- Construcción Automática de Modelos: MLBox implementa un enfoque integral para AutoML, explorando una amplia gama de algoritmos, ajustando hiperparámetros e incluso considerando métodos de ensamblado.
- Escalabilidad y Eficiencia: Diseñada para manejar conjuntos de datos a gran escala, MLBox incluye capacidades de computación distribuida.
- Interpretabilidad y Explicabilidad: MLBox proporciona herramientas para la interpretación de modelos, ayudando a los usuarios a entender las razones detrás de las predicciones.
Ejemplo: Uso de MLBox para Aprendizaje Automático Automatizado.
from mlbox.preprocessing import *
from mlbox.optimisation import *
from mlbox.prediction import *
from sklearn.datasets import load_boston
from sklearn.model_selection import train_test_split
# Load the Boston Housing dataset
boston = load_boston()
X, y = boston.data, boston.target
# Split the data
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)
# Create a dictionary with the paths to your train and test datasets
paths = {"train": X_train, "test": X_test}
# Create a Reader object
rd = Reader(sep=",")
# Read and preprocess the data
df = rd.train_test_split(paths, target_name="target")
# Define the preprocessing steps
prep = Preprocessor()
df = prep.fit_transform(df)
# Define the optimization process
opt = Optimiser(scoring="neg_mean_squared_error", n_folds=5)
# Find the best hyperparameters
best = opt.optimise(df["train"], df["test"])
# Make predictions using the best model
pred = Predictor()
predictions = pred.fit_predict(best, df)
print("Predictions:", predictions)
Desglose del Código:
- Importaciones y Carga de Datos:
- Importamos los módulos necesarios de MLBox y scikit-learn.
- El conjunto de datos Boston Housing se carga usando la función
load_boston
de scikit-learn.
- Preparación de Datos:
- El conjunto de datos se divide en un conjunto de entrenamiento (80%) y uno de prueba (20%) usando
train_test_split
. - Se crea un diccionario
paths
para almacenar las rutas de los conjuntos de entrenamiento y prueba.
- El conjunto de datos se divide en un conjunto de entrenamiento (80%) y uno de prueba (20%) usando
- Lectura y Preprocesamiento de Datos:
- Se crea un objeto
Reader
para leer los datos. - Se utiliza el método
train_test_split
para leer y dividir los datos. - Se crea un objeto
Preprocessor
y se aplica a los datos utilizandofit_transform
.
- Se crea un objeto
- Proceso de Optimización:
- Se crea un objeto
Optimiser
con el error cuadrático medio como métrica de evaluación y validación cruzada de 5 pliegues. - Se llama al método
optimise
para encontrar los mejores hiperparámetros y modelo.
- Se crea un objeto
- Predicción:
- Se crea un objeto
Predictor
para realizar predicciones usando el mejor modelo encontrado. - Se utiliza el método
fit_predict
para entrenar el modelo con todo el conjunto de datos y realizar predicciones.
- Se crea un objeto
- Resultados:
- Se imprimen las predicciones finales.
Este ejemplo demuestra la capacidad de MLBox para automatizar toda la tubería de aprendizaje automático, desde el preprocesamiento de datos hasta la optimización del modelo y la predicción, con una intervención manual mínima.
Las herramientas de ingeniería de características y las bibliotecas de AutoML como Featuretools, Auto-sklearn, TPOT y MLBox son recursos revolucionarios que simplifican el flujo de trabajo del aprendizaje automático. Estas herramientas avanzadas automatizan procesos críticos, incluida la ingeniería de características, la selección de modelos y la optimización de hiperparámetros. Al hacerlo, reducen significativamente el tiempo y el esfuerzo necesarios para las tareas manuales, permitiendo que los científicos de datos y los profesionales del aprendizaje automático se concentren en la resolución de problemas y estrategias de nivel superior.
La automatización que ofrecen estas herramientas va más allá de un simple ahorro de tiempo. A menudo conduce a un mejor rendimiento del modelo al explorar una gama más amplia de combinaciones de características y arquitecturas de modelos de lo que sería factible manualmente. Por ejemplo, Featuretools sobresale en la generación automática de características relevantes a partir de datos en bruto, descubriendo potencialmente relaciones complejas que los analistas humanos podrían pasar por alto. Auto-sklearn utiliza metaaprendizaje para seleccionar y configurar inteligentemente algoritmos de aprendizaje automático, logrando a menudo un rendimiento de vanguardia con una intervención humana mínima.
TPOT, como herramienta de AutoML basada en programación genética, puede evolucionar tuberías óptimas de aprendizaje automático, explorando combinaciones de pasos de preprocesamiento, métodos de selección de características y arquitecturas de modelos que un humano podría no considerar. MLBox, con su enfoque integral en toda la tubería de aprendizaje automático, ofrece soluciones robustas para el preprocesamiento de datos, la selección de características y la construcción de modelos, lo que la hace particularmente valiosa para trabajar con conjuntos de datos desordenados, incompletos o desequilibrados.
Estas herramientas no solo democratizan el aprendizaje automático al hacer que las técnicas avanzadas sean más accesibles para no expertos, sino que también amplían los límites de lo que es posible en términos de rendimiento y eficiencia de los modelos. A medida que el campo de AutoML sigue evolucionando, podemos esperar herramientas aún más sofisticadas que automatizarán y optimizarán aún más el proceso de aprendizaje automático, lo que potencialmente conducirá a avances en diversos dominios de inteligencia artificial y ciencia de datos.