Una guía completa sobre ‘¿Cómo lidiar con conjuntos de datos dispersos?

Guía completa sobre cómo lidiar con conjuntos de datos dispersos

Introducción

¿Alguna vez has visto un conjunto de datos que contiene casi todos los valores nulos? Si es así, no estás solo. Uno de los problemas más frecuentes en el aprendizaje automático son los conjuntos de datos dispersos. Varios factores, como encuestas inadecuadas, datos de sensores con lecturas faltantes o texto con palabras faltantes, pueden llevar a su existencia.

Cuando se entrena con conjuntos de datos dispersos, nuestros modelos de aprendizaje automático pueden producir resultados con una precisión relativamente baja. Esto se debe a que los algoritmos de aprendizaje automático operan bajo el supuesto de que todos los datos están disponibles. Cuando faltan valores, es posible que el algoritmo no pueda determinar las correlaciones entre las características correctamente. La precisión del modelo aumentará si se entrena con un conjunto de datos grande sin valores faltantes. Por lo tanto, para llenar conjuntos de datos dispersos con valores aproximadamente correctos en lugar de aleatorios, debemos manejarlos con cuidado adicional.

En esta guía, cubriré la definición, las razones y las técnicas para tratar con conjuntos de datos dispersos.

Objetivos de aprendizaje

  1. Obtener una comprensión integral de los conjuntos de datos dispersos y sus implicaciones en el análisis de datos.
  2. Explorar diversas técnicas para manejar valores faltantes en conjuntos de datos dispersos, incluyendo imputación y enfoques avanzados.
  3. Descubrir la importancia del análisis exploratorio de datos (EDA) para descubrir ideas ocultas dentro de conjuntos de datos dispersos.
  4. Implementar soluciones prácticas para tratar con conjuntos de datos dispersos utilizando Python, incorporando conjuntos de datos del mundo real y ejemplos de código.

Este artículo fue publicado como parte del Data Science Blogathon.

¿Qué son los conjuntos de datos dispersos?

Un conjunto de datos con muchos valores faltantes se dice que es un conjunto de datos disperso. No hay un umbral específico o un porcentaje fijo que defina un conjunto de datos como disperso únicamente en función del porcentaje de valores faltantes. Sin embargo, se puede considerar relativamente disperso un conjunto de datos con un alto porcentaje de valores faltantes (comúnmente superior al 50% o más). Una proporción tan significativa de valores faltantes puede plantear desafíos en el análisis de datos y el aprendizaje automático.

Ejemplo

Imaginemos que tenemos un conjunto de datos con información sobre compras de consumidores en un minorista en línea. Supongamos que el conjunto de datos tiene 2000 filas (que representan a los consumidores) y diez columnas (que representan varios atributos como la categoría de producto, el monto de la compra y la demografía del cliente).

Para este ejemplo, supongamos que el 40% de las entradas del conjunto de datos están faltantes, lo que sugiere que para cada cliente, alrededor de 4 de cada 10 atributos tendrían valores faltantes. Es posible que los clientes no hayan ingresado estos valores o que haya habido dificultades técnicas con la recopilación de datos.

Aunque no hay criterios establecidos, el gran número de valores faltantes (40%) nos permite clasificar este conjunto de datos como altamente disperso. Una cantidad tan grande de datos faltantes puede afectar la confiabilidad y precisión de las tareas de análisis y modelado.

¿Por qué los conjuntos de datos dispersos son desafiantes?

Debido a la presencia de muchos valores faltantes, los conjuntos de datos dispersos plantean varias dificultades para el análisis de datos y el modelado. A continuación se presentan algunos factores que dificultan el trabajo con conjuntos de datos dispersos:

  • Falta de conocimientos: Debido a que falta mucha información en los conjuntos de datos dispersos, hay un problema de reducción de la información que conduce a la pérdida de ideas significativas que podrían ser útiles para el modelado.
  • Resultados sesgados: Si nuestro modelo produce resultados sesgados, representa una amenaza. Observamos principalmente resultados sesgados en conjuntos de datos dispersos debido a datos faltantes, lo que hace que el modelo dependa de categorías de características específicas.
  • Impacto masivo en la precisión del modelo: Los conjuntos de datos dispersos pueden afectar negativamente la precisión de un modelo de aprendizaje automático. Muchos algoritmos no entrenan el modelo a menos que se manejen todos los valores faltantes. Los valores faltantes pueden hacer que el modelo aprenda patrones incorrectos, lo que da resultados incorrectos.

Consideraciones con conjuntos de datos dispersos

Cuando se trabaja con conjuntos de datos dispersos, hay varias consideraciones a tener en cuenta. Estos factores pueden ayudar a guiar tu enfoque para manejar valores faltantes y mejorar la precisión de tus modelos. Veamos algunas consideraciones clave:

  • La pérdida de datos, como la que se experimenta cuando hay un mal funcionamiento de un disco complejo o un archivo está dañado, puede dar lugar a conjuntos de datos dispersos. Los modelos de aprendizaje automático pueden encontrar dificultades para entrenarse como resultado de datos faltantes o erróneos que pueden resultar.
  • La inconsistencia de datos, como cuando diversas fuentes de datos utilizan diferentes formatos o definiciones para los mismos datos, también puede resultar en conjuntos de datos dispersos. Debido a esto, fusionar datos de muchas fuentes puede ser desafiante, lo que resulta en resultados incorrectos o incompletos.
  • El sobreajuste es un problema que surge cuando un modelo de aprendizaje automático aprende demasiado bien los datos de entrenamiento y no puede generalizar a nuevos datos. Los conjuntos de datos dispersos pueden dificultar más la prevención del sobreajuste.
  • Entrenar modelos de aprendizaje automático en conjuntos de datos grandes puede ser desafiante ya que los conjuntos de datos dispersos pueden ser más costosos computacionalmente que los conjuntos de datos densos.
  • Puede ser más difícil comprender cómo funciona un modelo de aprendizaje automático cuando se trata de conjuntos de datos dispersos que con conjuntos de datos densos.

Técnicas de Preprocesamiento para Conjuntos de Datos Dispersos

El preprocesamiento es esencial para gestionar adecuadamente conjuntos de datos dispersos. Puede mejorar el rendimiento de los modelos de aprendizaje automático, mejorar la calidad de los datos y manejar valores faltantes mediante el uso de enfoques de preprocesamiento adecuados. Veamos algunos métodos esenciales para preparar conjuntos de datos dispersos:

Limpieza de Datos y Manejo de Valores Faltantes

La limpieza de datos y el manejo de valores faltantes es la primera etapa en el preprocesamiento de un conjunto de datos disperso. Los valores faltantes pueden ocurrir por varias razones, como errores en la entrada de datos o registros faltantes. Antes de comenzar cualquier otro procedimiento de preprocesamiento, es crucial localizar y manejar los valores faltantes.

Existen diversos métodos para manejar los valores faltantes. Una estrategia típica es eliminar simplemente las filas o columnas con datos en blanco. Sin embargo, esto puede resultar en pérdida de datos y disminuir la precisión del modelo. Reemplazar los valores faltantes con valores estimados se conoce como valores faltantes imputados. La media, la mediana y la moda son algunas de las técnicas de imputación disponibles.

Escala y Normalización de Características

Las características deben ser escaladas y normalizadas después de que los datos hayan sido limpiados y los valores faltantes hayan sido manejados. La escala puede ayudar a los algoritmos de aprendizaje automático a funcionar mejor al asegurarse de que todas las partes estén escaladas de manera igual. La normalización se logra al asegurarse de que todas las partes tengan una media de 0 y una desviación estándar de 1, lo cual ayuda a que los algoritmos de aprendizaje automático funcionen mejor.

Ingeniería de Características y Reducción de Dimensionalidad

La técnica de ingeniería de características implica construir nuevas características a partir de las existentes. Esto se puede hacer para mejorar la eficacia de los algoritmos de aprendizaje automático. La técnica de reducción de la cantidad de elementos en un conjunto de datos se conoce como reducción de dimensionalidad. Esto se puede hacer para mejorar la eficacia de los algoritmos de aprendizaje automático y facilitar la visualización de datos.

Existen numerosos métodos de reducción de dimensionalidad e ingeniería de características. Algunas estrategias típicas incluyen:

  • Selección de características: implica elegir un subconjunto de características importantes para la tarea actual.
  • Extracción de características: este proceso implica construir nuevas características a partir de las existentes.
  • Reducir la cantidad de características en un conjunto de datos se conoce como reducción de dimensionalidad.
import pandas as pd
import numpy as np
from sklearn.impute import KNNImputer
from sklearn.preprocessing import StandardScaler

def preprocess_sparse_dataset(data):
    missing_percentage = (data.isnull().sum() / len(data)) * 100
    threshold = 70  
    columns_to_drop = missing_percentage[missing_percentage > threshold].index
    data = data.drop(columns_to_drop, axis=1)
    
    missing_columns = data.columns[data.isnull().any()].tolist()
    
    # Imputar valores faltantes utilizando la imputación KNN
    imputer = KNNImputer(n_neighbors=5)  # Establecer el número de vecinos
    data[missing_columns] = imputer.fit_transform(data[missing_columns])
    
    # Escalar y normalizar características numéricas
    numerical_columns = data.select_dtypes(include=np.number).columns.tolist()
    scaler = StandardScaler()
    data[numerical_columns] = scaler.fit_transform(data[numerical_columns])
    
    return data

Manejo de Clases Desbalanceadas en Conjuntos de Datos Dispersos

Los conjuntos de datos dispersos frecuentemente encuentran el problema de una distribución de clases desbalanceada, donde una o más clases pueden estar desproporcionadamente sobrerepresentadas. Los algoritmos de aprendizaje automático pueden encontrar desafíos para predecir de manera efectiva la clase minoritaria debido a un sesgo a favor de la clase mayoritaria. Para abordar este problema, podemos utilizar varios métodos. Veamos lo siguiente:

Comprensión del Desbalance de Clases

Antes de adentrarnos en las estrategias de manejo, es esencial comprender los efectos de las clases desbalanceadas. En conjuntos de datos desbalanceados, el rendimiento del modelo puede mostrar un sesgo alto a favor de la clase mayoritaria, lo que lleva a una precisión de predicción deficiente para la clase minoritaria. Esto es especialmente problemático cuando la clase minoritaria es importante o representa un resultado significativo.

Técnicas para Abordar el Desbalance de Clases

  • Remuestreo de Datos: El remuestreo de datos implica equilibrar el conjunto de entrenamiento, ya sea mediante el sobremuestreo de la clase minoritaria, el submuestreo de la clase mayoritaria o una combinación de ambos. Las técnicas de sobremuestreo incluyen el sobremuestreo aleatorio, el sobremuestreo sintético de la clase minoritaria (SMOTE) y el muestreo sintético adaptativo (ADASYN). Tomek Links, NearMiss y Random Undersampling son ejemplos de métodos de submuestreo. Las técnicas de remuestreo están diseñadas para aumentar la representación de la clase minoritaria o disminuir la dominancia de la clase mayoritaria.
  • Ponderación de Clases: Muchos algoritmos de aprendizaje automático pueden asignar diferentes pesos a las clases para superar el desbalance de clases. Durante el entrenamiento del modelo, esto otorga mayor peso a la clase minoritaria y menor importancia a la clase mayoritaria. Permite que el modelo priorice la clase minoritaria y modifique el límite de decisión según sea necesario.
  • Aprendizaje Sensible al Costo: El aprendizaje sensible al costo implica asignar costos de clasificación errónea a diferentes clases durante el entrenamiento del modelo. El modelo se motiva a enfocarse más en la precisión de sus predicciones al clasificar erróneamente la clase minoritaria a un precio más alto. Para que esta estrategia funcione, es necesario comprender a fondo la matriz de costos relevante.
  • Métodos de Conjunto: Los métodos de conjunto combinan múltiples clasificadores para aumentar la precisión de las predicciones. Es posible construir un conjunto de modelos, cada uno entrenado en un subconjunto distinto de los datos, utilizando estrategias como bagging, boosting y stacking. Los enfoques de conjunto pueden mejorar la capacidad del modelo para identificar patrones tanto en las clases mayoritarias como en las minoritarias.
from imblearn.over_sampling import SMOTE
from imblearn.under_sampling import RandomUnderSampler
from sklearn.model_selection import train_test_split

def handle_imbalanced_classes(data):
    X = data.drop('MonthlyIncome', axis=1)  
    y = data['MonthlyIncome']

    # Realizando sobre-muestreo utilizando SMOTE
    oversampler = SMOTE()
    X_resampled, y_resampled = oversampler.fit_resample(X, y)

    # Realizando sub-muestreo utilizando RandomUnderSampler
    undersampler = RandomUnderSampler()
    X_resampled, y_resampled = undersampler.fit_resample(X_resampled, y_resampled)

    return X_resampled, y_resampled

Elección de los algoritmos de aprendizaje automático adecuados para conjuntos de datos dispersos

La elección de algoritmos de aprendizaje automático adecuados es esencial para producir resultados precisos y confiables al trabajar con conjuntos de datos dispersos. Debido a sus propiedades únicas, algunos algoritmos son más adecuados para manejar datos dispersos. En esta sección, analizaremos algoritmos que funcionan bien con conjuntos de datos dispersos y discutiremos los factores a considerar al elegir un enfoque.

Algoritmos adecuados para conjuntos de datos dispersos

  • Naive Bayes: El conocimiento común establece que los clasificadores de Naive Bayes funcionan eficazmente con datos dispersos. Modelan eficientemente características ligeras basadas en la independencia de características.
  • Árboles de decisión: Los algoritmos basados en árboles de decisión, como Random Forest y Gradient Boosting, pueden manejar eficazmente datos dispersos. Los árboles de decisión pueden capturar relaciones no lineales en los datos y gestionar intuitivamente valores faltantes.
  • Máquinas de Vectores de Soporte (SVM): Las SVM pueden manejar eficazmente datos dispersos, especialmente cuando se combinan con funciones de kernel correctas. Son capaces de manejar espacios de características de alta dimensión y son eficientes para registrar relaciones complejas.
  • Modelos lineales dispersos: Para utilizar con datos dispersos, se desarrollaron algoritmos como Regresión Lasso y Regresión Elastic Net. Penalizan los coeficientes y eligen características que hacen que el modelo sea ligero.

Consideraciones para la selección de algoritmos

  • La eficiencia del algoritmo: Los conjuntos de datos dispersos pueden contener numerosas características y valores faltantes. Es crucial seleccionar algoritmos que puedan manejar eficazmente datos de alta dimensión.
  • Interpretabilidad del modelo: Algunos algoritmos, como los árboles de decisión y los modelos lineales, producen resultados fáciles de comprender, lo que ayuda a determinar cómo afectan las características en conjuntos de datos dispersos.
  • Robustez del algoritmo: Puede haber ruido y valores atípicos en conjuntos de datos dispersos. Es crucial elegir algoritmos que puedan manejar de manera efectiva valores atípicos resistentes al ruido.
  • Escalabilidad: Considere la capacidad del algoritmo para manejar grandes conjuntos de datos con muchas características. Con datos de alta dimensión, algunos algoritmos pueden no escalar de manera efectiva.
  • Conocimiento del dominio: El uso del conocimiento del dominio puede ayudar a elegir algoritmos compatibles con las particularidades del problema y los datos.
from sklearn.linear_model import LogisticRegression

def train_model(X, y):
    # Entrenando un modelo lineal disperso (por ejemplo, Regresión Logística) en los datos remuestreados
    model = LogisticRegression(solver='saga', penalty='elasticnet', l1_ratio=0.8, max_iter=1000)
    model.fit(X, y)

    return model

Evaluación del rendimiento del modelo en conjuntos de datos dispersos

La evaluación del rendimiento del modelo de aprendizaje automático es crucial para determinar su eficacia y tomar decisiones acertadas. Pero debido a las características únicas de estos datos, evaluar el rendimiento del modelo en conjuntos de datos dispersos requiere un estudio cuidadoso. Esta parte analizará el manejo del desequilibrio de clases en la evaluación del rendimiento, la validación cruzada, las medidas de rendimiento, etc.

Validación cruzada y medidas de rendimiento

La validación cruzada es un método popular para evaluar el rendimiento del modelo, especialmente en conjuntos de datos dispersos. Reduce la posibilidad de sobreajuste y ayuda a determinar el rendimiento del modelo en datos hipotéticos. A continuación, se enumeran consideraciones para la validación cruzada en conjuntos de datos dispersos:

  • Muestreo estratificado: Asegúrese de que cada pliegue mantenga la misma distribución de clases que el conjunto de datos original al realizar la validación cruzada. Esto es crucial para evitar resultados de evaluación sesgados al tratar con clases desequilibradas.
  • Validación cruzada con K pliegues: Divida el conjunto de datos en K subconjuntos o pliegues para la validación cruzada con K pliegues. Después de probar el modelo en K-1 pliegues, usamos el pliegue restante para la evaluación. Cada pliegue sirve como conjunto de validación una vez durante la iteración de K pliegues de este proceso. Después de eso, las medidas de rendimiento se promedian en las K iteraciones.
  • Validación cruzada repetida: Repetimos el procedimiento de validación cruzada varias veces utilizando particiones aleatorias diferentes de los datos. Esto ayuda a producir estimaciones de rendimiento más confiables y sólidas.

Manejo del desequilibrio de clases en la evaluación del rendimiento

La disparidad de clases puede afectar gravemente la evaluación del rendimiento, especialmente cuando se utilizan medidas tradicionales como la precisión. Piensa en utilizar las siguientes estrategias para mitigar los efectos de la desigualdad de clases:

  • Matriz de confusión: Al evaluar los verdaderos positivos, verdaderos negativos, falsos positivos y falsos negativos en la matriz de confusión, se puede obtener una comprensión más profunda del rendimiento del modelo. Ayuda a comprender qué tan bien puede predecir el modelo cada clase.
  • Curva de precisión-recuperación: Graficar la curva de precisión-recuperación puede mostrar cómo se intercambian la precisión y la recuperación para diferentes criterios de clasificación. Esta curva es beneficiosa para conjuntos de datos desequilibrados.
  • Evaluación específica de clase: Presta atención a los indicadores de rendimiento para la clase minoritaria en lugar de evaluar el rendimiento del modelo en todas las categorías.
from sklearn.model_selection import cross_val_score, StratifiedKFold
from sklearn.metrics import confusion_matrix, classification_report, precision_recall_curve
import matplotlib.pyplot as plt

def evaluate_model(model, X, y):
    # Realizando validación cruzada utilizando Stratified K-fold
    cv = StratifiedKFold(n_splits=5, shuffle=True, random_state=42)
    scores = cross_val_score(model, X, y, cv=cv, scoring='accuracy')

    print("Precisión promedio de validación cruzada:", scores.mean())

    # Generando matriz de confusión
    y_pred = model.predict(X)
    cm = confusion_matrix(y, y_pred)
    print("Matriz de confusión:")
    print(cm)

    # Generando informe de clasificación
    report = classification_report(y, y_pred)
    print("Informe de clasificación:")
    print(report)

    # Generando curva precisión-recuperación
    precision, recall, _ = precision_recall_curve(y, model.predict_proba(X)[:, 1])
    plt.figure()
    plt.plot(recall, precision)
    plt.xlabel('Recuperación')
    plt.ylabel('Precisión')
    plt.title('Curva Precisión-Recuperación')
    plt.show()

Conclusión

Debido a los valores faltantes y su efecto en el rendimiento del modelo, tratar con conjuntos de datos dispersos en el análisis de datos y el aprendizaje automático puede ser difícil. Sin embargo, los conjuntos de datos dispersos se pueden manejar con éxito mediante métodos y enfoques adecuados. Podemos superar las dificultades presentadas por los conjuntos de datos dispersos y utilizar su potencial para obtener ideas valiosas y pronósticos precisos mediante la experimentación continua y la modificación de metodologías.

Aspectos clave

  • Los conjuntos de datos dispersos contienen un alto porcentaje de valores faltantes, lo que afecta la precisión y confiabilidad de los modelos de aprendizaje automático.
  • Los métodos de preprocesamiento, como la limpieza de datos, el manejo de valores faltantes y la ingeniería de características, son esenciales para administrar conjuntos de datos dispersos.
  • Modelar correctamente los conjuntos de datos requiere seleccionar técnicas adecuadas, como Naive Bayes, árboles de decisión, máquinas de vectores de soporte y modelos lineales dispersos.
  • La creación de algoritmos especializados, la investigación en técnicas de aprendizaje profundo, la incorporación de experiencia en el dominio y el uso de métodos de conjunto para un mejor rendimiento en conjuntos de datos dispersos son algunas direcciones futuras.

Preguntas frecuentes (FAQs)

Los medios mostrados en este artículo no son propiedad de Analytics Vidhya y se utilizan a discreción del autor.