La importancia del preprocesamiento en el aprendizaje automático


Foto de DeepMind en Unsplash

Obviamente, los equipos de ML que desarrollan nuevos modelos o algoritmos esperan que el rendimiento del modelo en los datos de prueba sea óptimo.

Pero muchas veces simplemente no sucede.

Puede haber muchas razones, pero los principales culpables son:

  1. Falta de datos suficientes
  2. Datos de mala calidad
  3. sobreajuste
  4. Ajuste perfecto
  5. Elección incorrecta del algoritmo.
  6. Ajuste hiperparamétrico
  7. Sesgo de la base de datos

La lista anterior, sin embargo, no es exhaustiva.

En este artículo, analizaremos un proceso que puede resolver muchos de los problemas anteriores, y los equipos de ML tendrán mucho cuidado al hacerlo.

Es el preprocesamiento de datos.

Es ampliamente aceptado en la comunidad de aprendizaje automático que el preprocesamiento de datos es un paso importante en el flujo de trabajo de ML y puede mejorar el rendimiento del modelo.

Hay muchos estudios y artículos que han demostrado la importancia del preprocesamiento de datos en el aprendizaje automático, como:

“Un estudio realizado por Bezdek et al. (1984) mostró que el preprocesamiento de datos mejora la precisión de varios algoritmos de agrupamiento hasta en un 50 %.

“Un estudio de Chollet (2018) mostró que las técnicas de preprocesamiento de datos, como la normalización y el aumento de datos, pueden mejorar el rendimiento de los modelos de aprendizaje profundo”.

También vale la pena señalar que las técnicas de preprocesamiento son importantes no solo para mejorar el rendimiento del modelo, sino también para hacer que el modelo sea más interpretable y robusto.

Por ejemplo, el manejo de valores faltantes, la eliminación de valores atípicos y el escalado de datos pueden ayudar a prevenir el sobreajuste, lo que puede conducir a modelos que generalicen mejor los datos nuevos.

En cualquier caso, es importante tener en cuenta que las técnicas de preprocesamiento específicas y la cantidad de preprocesamiento requerida para una base de datos determinada dependerán de la naturaleza de los datos y los requisitos específicos del algoritmo.

También es importante recordar que, en algunos casos, el preprocesamiento de datos puede no ser necesario o incluso perjudicial para el rendimiento del modelo.

El preprocesamiento de datos antes de aplicarlos a un algoritmo de aprendizaje automático (ML) es un paso importante en el flujo de trabajo de ML.

Este paso ayuda a garantizar que los datos estén en un formato que el algoritmo pueda entender y que no tengan errores ni valores atípicos que puedan afectar negativamente el rendimiento del modelo.

En este artículo, discutiremos algunos de los beneficios del preprocesamiento de datos y brindaremos un ejemplo de código de cómo preprocesar datos utilizando la popular biblioteca de Python, Pandas.

Uno de los principales beneficios del preprocesamiento de datos es que ayuda a mejorar la precisión del modelo. Al limpiar y formatear los datos, podemos asegurarnos de que el algoritmo solo considere información relevante y que no se vea influenciado por ningún dato irrelevante o incorrecto.

Esto puede conducir a un modelo más preciso y robusto.

Otro beneficio del preprocesamiento de datos es que puede ayudar a reducir el tiempo y los recursos necesarios para entrenar un modelo. Al eliminar datos irrelevantes o redundantes, podemos reducir la cantidad de datos que el algoritmo necesita procesar, lo que puede reducir significativamente la cantidad de tiempo y recursos necesarios para construir el modelo.

El preprocesamiento de datos también puede ayudar a prevenir el sobreajuste. El sobreajuste ocurre cuando un modelo se entrena en un conjunto de datos que es demasiado específico y, como resultado, se desempeña bien en los datos de entrenamiento pero mal en datos nuevos e invisibles.

Al preprocesar los datos y eliminar información irrelevante o redundante, podemos ayudar a reducir el riesgo de sobreajuste y mejorar la capacidad del modelo para generalizar a nuevos datos.

El preprocesamiento de datos también puede mejorar la interpretabilidad del modelo. Al limpiar y formatear los datos, podemos facilitar la comprensión de las relaciones entre diferentes variables y cómo afectan las predicciones del modelo.

Esto puede ayudarnos a comprender mejor el comportamiento del modelo y tomar decisiones más informadas sobre cómo mejorarlo.

Por ejemplo:

Ahora veamos un ejemplo de preprocesamiento de datos usando Pandas. Utilizaremos una base de datos que contiene información sobre la calidad del vino. El conjunto de datos tiene varias características, como alcohol, cloruros, densidad, etc., y una variable objetivo, la calidad del vino.

import pandas as pd

# Load the data
data = pd.read_csv("winequality.csv")

# Check for missing values
print(data.isnull().sum())

# Drop rows with missing values
data = data.dropna()

# Check for duplicate rows
print(data.duplicated().sum())
# Drop duplicate rows
data = data.drop_duplicates()

# Check for outliers
Q1 = data.quantile(0.25)
Q3 = data.quantile(0.75)
IQR = Q3 - Q1
data = data[
    ~((data < (Q1 - 1.5 * IQR)) | (data > (Q3 + 1.5 * IQR))).any(axis=1)
]

# Scale the data
from sklearn.preprocessing import StandardScaler

scaler = StandardScaler()
data_scaled = scaler.fit_transform(data)

# Split the data into training and testing sets
from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(
    data_scaled, data["quality"], test_size=0.2, random_state=42
)

En este ejemplo, primero cargamos los datos usando la función read_csv de Pandas y luego verificamos si faltan valores usando la función isnull. Luego eliminamos las filas con valores faltantes usando la función dropna.

A continuación, buscamos filas duplicadas con la función duplicar y las eliminamos con la función drop_duplicate.

Luego probamos los valores atípicos utilizando el método de rango intercuartil (IQR), que calcula la diferencia entre el primer y el tercer cuartil. Cualquier punto de datos que se encuentre fuera de los límites de 1,5 veces el IQR se considera un valor atípico y se elimina de la base de datos.

Después de manejar los valores faltantes, las filas duplicadas y los valores atípicos, escalamos los datos usando la función StandardScaler de la biblioteca sklearn.preprocessing. El escalado de datos es importante porque ayuda a garantizar que todas las variables estén en la misma escala, lo cual es necesario para que la mayoría de los algoritmos de aprendizaje automático funcionen correctamente.

Finalmente, dividimos los datos en grupos de prueba y entrenamiento usando la función train_test_split de la biblioteca sklearn.model_selection. Este paso es necesario para evaluar el rendimiento del modelo en datos no vistos.

No preprocesar los datos antes de aplicarlos a un algoritmo de aprendizaje automático puede tener varias consecuencias negativas. Algunos de los principales problemas que pueden ocurrir son:

  1. Bajo rendimiento del modelo. Si los datos no se limpian y formatean correctamente, es posible que el algoritmo no pueda comprenderlos correctamente, lo que puede provocar un rendimiento deficiente del modelo. Esto puede deberse a valores faltantes, valores atípicos o datos incoherentes que no se han eliminado del conjunto de datos.
  2. Sobreajuste. Si la base de datos no se limpia y preprocesa, puede contener información irrelevante o redundante, lo que puede dar lugar a un sobreajuste. El sobreajuste ocurre cuando un modelo se entrena en un conjunto de datos que es demasiado específico y, como resultado, se desempeña bien en los datos de entrenamiento pero mal en datos nuevos e invisibles.
  3. Mayores tiempos de aprendizaje. el preprocesamiento de los datos puede resultar en tiempos de entrenamiento más prolongados porque el algoritmo puede procesar más datos de los necesarios, lo que puede llevar mucho tiempo.
  4. Dificultad para entender el modelo. Si los datos no se procesan previamente, puede ser difícil comprender las relaciones entre las diferentes variables y cómo afectan las predicciones del modelo. Esto puede dificultar la detección de errores del modelo o áreas de mejora.
  5. Resultados sesgados. Si los datos no se procesan previamente, pueden contener errores o sesgos que pueden conducir a resultados injustos o inexactos. Por ejemplo, si los datos contienen valores faltantes, el algoritmo puede estar trabajando con una muestra de datos sesgada, lo que puede conducir a conclusiones incorrectas.

En general, el preprocesamiento de datos puede conducir a modelos que son menos precisos, menos interpretables y más difíciles de trabajar. El preprocesamiento de datos es un paso importante en el flujo de trabajo de aprendizaje automático que no debe omitirse.

En conclusión, el preprocesamiento de datos antes de aplicarlos a un algoritmo de aprendizaje automático es un paso importante en el flujo de trabajo de ML. Ayuda a mejorar la precisión, reducir el tiempo y los recursos necesarios para entrenar un modelo, evitar el sobreajuste y mejorar la interpretabilidad del modelo.

El ejemplo de código anterior muestra cómo preprocesar datos usando la popular biblioteca de Python Pandas, pero hay muchas otras bibliotecas disponibles para el preprocesamiento de datos, como NumPy y Scikit-learn, que se pueden usar según las necesidades específicas de su proyecto.

sumit singh es un emprendedor en serie que trabaja hacia Data Centric AI. Fue cofundador de Labellerr, una plataforma de datos de aprendizaje de próxima generación. La plataforma de Labellerr permite a los equipos de AI-ML automatizar fácilmente su proceso de preparación de datos.

Source link