Autor: Fernando

  • Introducción a la Ingeniería de Características

    En cualquier proyecto de Data Science o Machine Learning, la calidad de los datos suele tener un impacto mayor sobre el rendimiento del modelo que el propio algoritmo utilizado. Es frecuente encontrar situaciones en las que un modelo complejo obtiene resultados mediocres debido a una mala representación de los datos, mientras que un algoritmo sencillo logra excelentes resultados gracias a una adecuada preparación de las variables.

    La Ingeniería de Características (Feature Engineering) es el proceso de crear, transformar, seleccionar y optimizar variables para mejorar la capacidad de los modelos de Machine Learning para identificar patrones y realizar predicciones precisas.

    Se considera una de las etapas más importantes del ciclo de vida de un proyecto de ciencia de datos y, en muchos casos, es el factor que más contribuye al éxito de una solución predictiva.

    ¿Qué es la Ingeniería de Características?

    La Ingeniería de Características es el conjunto de técnicas utilizadas para transformar datos brutos en variables más útiles para los algoritmos de Machine Learning.

    Su objetivo es proporcionar al modelo una representación más adecuada de la realidad que permita descubrir relaciones, tendencias y patrones ocultos.

    Por ejemplo, supongamos que tenemos la siguiente información:

    fecha_compra = [2025-01-15, 2025-07-20, 2025-12-05]

    Un algoritmo difícilmente podrá extraer información útil directamente de estas fechas. Sin embargo, mediante ingeniería de características podríamos crear nuevas variables:

    FechaMesTrimestreDía Semana
    2025-01-1511Miércoles
    2025-07-2073Domingo
    2025-12-05124Viernes

    Estas nuevas características pueden contener información mucho más relevante para el modelo.

    ¿Por qué es importante?

    Los algoritmos de Machine Learning no comprenden el significado de los datos como lo haría un ser humano. Para un modelo, una columna con fechas, texto o categorías es simplemente información que debe ser convertida a una representación matemática adecuada.

    La ingeniería de características permite:

    • Resaltar patrones importantes.
    • Reducir ruido.
    • Mejorar la capacidad predictiva.
    • Facilitar el aprendizaje del algoritmo.
    • Reducir la complejidad del problema.
    • Incrementar la interpretabilidad.

    Por esta razón suele afirmarse que “mejores características producen mejores modelos”.

    ¿Cómo funciona la Ingeniería de Características?

    El proceso consiste en transformar los datos originales para generar variables más informativas.

    Generalmente incluye:

    1. Comprender el problema de negocio.
    2. Analizar las variables disponibles.
    3. Crear nuevas características.
    4. Transformar variables existentes.
    5. Eliminar características irrelevantes.
    6. Seleccionar las variables más importantes.
    7. Evaluar el impacto sobre el modelo.

    La ingeniería de características es un proceso iterativo que combina conocimiento del negocio, estadística y aprendizaje automático.

    Principales técnicas de Ingeniería de Características

    La ingeniería de características engloba múltiples técnicas que suelen estudiarse de forma independiente.

    Entre las más importantes se encuentran:

    • Tratamiento de valores faltantes.
    • Tratamiento de valores atípicos.
    • Escalado y normalización.
    • Codificación de variables categóricas.
    • Transformaciones matemáticas.
    • Discretización o binning.
    • Creación de variables derivadas.
    • Extracción de características temporales.
    • Extracción de características de texto.
    • Extracción de características de imágenes.
    • Selección de características.
    • Reducción de dimensionalidad.
    • Generación automática de características.

    Cada una de estas técnicas será abordada posteriormente de manera individual.

    Beneficios de la Ingeniería de Características

    La correcta construcción de características aporta numerosas ventajas:

    • Incrementa la precisión de los modelos.
    • Mejora la capacidad de generalización.
    • Reduce el ruido de los datos.
    • Facilita la detección de patrones.
    • Puede disminuir el tiempo de entrenamiento.
    • Mejora la interpretabilidad.
    • Permite utilizar algoritmos más simples con mejores resultados.

    En muchos proyectos, una buena ingeniería de características aporta más mejoras que cambiar de algoritmo.

    ¿Cuándo utilizar Ingeniería de Características?

    Su aplicación es recomendable prácticamente en cualquier proyecto de Machine Learning. Resulta especialmente útil cuando:

    • Los datos están en formato bruto.
    • Existen variables categóricas.
    • Se trabaja con fechas y horas.
    • Hay variables con distribuciones sesgadas.
    • Existen demasiadas variables.
    • El rendimiento del modelo es bajo.
    • Se busca mejorar la interpretabilidad.

    En entornos reales, la ingeniería de características suele formar parte obligatoria de cualquier pipeline de modelado.

    Ventajas y desventajas

    VentajasDesventajas
    Mejora el rendimiento predictivoRequiere conocimiento del dominio
    Facilita el aprendizaje del modeloPuede consumir mucho tiempo
    Reduce ruido e información irrelevanteExiste riesgo de introducir sesgos
    Puede mejorar la interpretabilidadAlgunas transformaciones aumentan la complejidad
    Permite aprovechar mejor los datos disponiblesNo garantiza mejoras en todos los casos

    Limitaciones

    Aunque es una técnica extremadamente poderosa, presenta algunas limitaciones.

    • Depende del conocimiento del problema.
    • Puede requerir múltiples iteraciones.
    • Algunas transformaciones son difíciles de automatizar.
    • Existe riesgo de sobreajuste.
    • Puede aumentar la dimensionalidad.
    • Algunas variables creadas pueden carecer de significado práctico.

    Por ello, es importante validar continuamente el impacto de las nuevas características sobre el rendimiento del modelo.

    Ingeniería de Características vs Selección de Características

    Aunque suelen confundirse, ambos conceptos son diferentes.

    Ingeniería de CaracterísticasSelección de Características
    Crea o transforma variablesElige variables existentes
    Busca generar nueva informaciónBusca eliminar información redundante
    Puede aumentar dimensionalidadReduce dimensionalidad
    Requiere creatividad y conocimiento del dominioSe basa en criterios estadísticos o algorítmicos
    Ocurre antes o durante el modeladoNormalmente después de generar características

    Ambas técnicas suelen utilizarse conjuntamente.

    Impacto en Machine Learning

    La ingeniería de características afecta directamente al rendimiento de los modelos.

    Modelos lineales

    • Regresión Lineal.
    • Regresión Logística.
    • Elastic Net.

    Suelen beneficiarse enormemente de transformaciones adecuadas.

    Modelos basados en distancia

    • K-Nearest Neighbors (KNN).
    • Support Vector Machines (SVM).

    Requieren especialmente variables escaladas y bien representadas.

    Redes neuronales

    • Deep Learning.
    • Redes multicapa.

    Aunque pueden aprender representaciones complejas automáticamente, siguen beneficiándose de características de calidad.

    Modelos basados en árboles

    • Decision Trees.
    • Random Forest.
    • XGBoost.
    • LightGBM.

    Son más robustos, pero también pueden mejorar significativamente mediante una adecuada ingeniería de características.

    Aplicaciones en Data Science y Machine Learning

    La ingeniería de características se utiliza en prácticamente todos los dominios de análisis de datos.

    Algunas aplicaciones incluyen:

    • Predicción de ventas.
    • Detección de fraude.
    • Scoring crediticio.
    • Diagnóstico médico.
    • Sistemas de recomendación.
    • Predicción de abandono de clientes.
    • Marketing digital.
    • Mantenimiento predictivo.
    • Visión por computador.
    • Procesamiento de lenguaje natural.
    • Análisis financiero.
    • Analítica turística.

    Es considerada una habilidad fundamental para cualquier científico de datos.

    Implementación básica en Python

    Crear nuevas características a partir de fechas

    import pandas as pd
    
    df = pd.DataFrame({
        'fecha_compra': ['2025-01-15', '2025-07-20']
    })
    
    df['fecha_compra'] = pd.to_datetime(df['fecha_compra'])
    
    df['mes'] = df['fecha_compra'].dt.month
    df['trimestre'] = df['fecha_compra'].dt.quarter
    df['dia_semana'] = df['fecha_compra'].dt.dayofweek
    
    print(df)
    

    Crear una variable derivada

    import pandas as pd
    
    df = pd.DataFrame({
        'precio': [10, 15, 20],
        'cantidad': [2, 5, 3]
    })
    
    df['ingreso'] = df['precio'] * df['cantidad']
    
    print(df)
    

    Transformar variables categóricas

    import pandas as pd
    
    df = pd.DataFrame({
        'ciudad': ['Madrid', 'Barcelona', 'Sevilla']
    })
    
    df_encoded = pd.get_dummies(
        df,
        columns=['ciudad']
    )
    
    print(df_encoded)
    

    Escalar variables numéricas

    from sklearn.preprocessing import StandardScaler
    import pandas as pd
    
    df = pd.DataFrame({
        'edad': [20, 35, 50, 65]
    })
    
    scaler = StandardScaler()
    
    df['edad_escalada'] = scaler.fit_transform(
        df[['edad']]
    )
    
    print(df)
    

    Buenas prácticas

    Para realizar una ingeniería de características efectiva se recomienda:

    • Comprender profundamente el problema de negocio.
    • Analizar las distribuciones de las variables.
    • Evitar generar características sin significado.
    • Validar cada transformación mediante métricas.
    • Utilizar pipelines reproducibles.
    • Evitar fugas de información (Data Leakage).
    • Documentar todas las transformaciones realizadas.
    • Combinar conocimiento del dominio con análisis estadístico.

    Conclusión

    La Ingeniería de Características es una de las disciplinas más importantes dentro de Data Science y Machine Learning. Consiste en transformar, crear y optimizar variables para que los algoritmos puedan aprender de forma más eficiente y generar predicciones más precisas.

    Aunque los avances en algoritmos han sido enormes durante los últimos años, la calidad de las características sigue siendo uno de los factores más determinantes en el éxito de un proyecto analítico. Por ello, dominar las distintas técnicas de ingeniería de características es una competencia esencial para cualquier profesional que trabaje con datos, ya que permite convertir datos brutos en conocimiento útil y maximizar el rendimiento de los modelos predictivos.

  • ROC-AUC

    La evaluación de modelos de clasificación es una etapa fundamental en cualquier proyecto de Machine Learning. Aunque métricas como la exactitud (Accuracy) son ampliamente utilizadas, en muchos escenarios no proporcionan una visión completa del rendimiento del modelo, especialmente cuando las clases están desbalanceadas.

    La métrica ROC-AUC es una de las herramientas más utilizadas para evaluar clasificadores binarios porque permite medir la capacidad de un modelo para distinguir correctamente entre clases positivas y negativas independientemente del umbral de clasificación seleccionado.

    ¿Qué es ROC-AUC?

    ROC-AUC es una métrica compuesta por dos elementos:

    • ROC (Receiver Operating Characteristic): una curva que muestra el comportamiento del modelo para distintos umbrales de clasificación.
    • AUC (Area Under the Curve): el área bajo la curva ROC.

    La curva ROC representa la relación entre:

    • Tasa de Verdaderos Positivos (True Positive Rate o TPR).
    • Tasa de Falsos Positivos (False Positive Rate o FPR).

    Mientras que el AUC resume toda la curva en un único valor numérico. Un valor de AUC cercano a 1 indica una excelente capacidad de discriminación, mientras que un valor cercano a 0.5 indica un comportamiento similar al azar.

    ¿Por qué se llama ROC?

    ROC significa Receiver Operating Characteristic. El término proviene de la teoría de detección de señales desarrollada durante la Segunda Guerra Mundial para evaluar sistemas de radar capaces de distinguir entre señales reales y ruido. Posteriormente fue adoptado en estadística, medicina, minería de datos y Machine Learning.

    Conceptos fundamentales

    Para comprender ROC-AUC es necesario conocer algunos conceptos básicos de clasificación.

    Matriz de confusión

    RealPredicciónResultado
    PositivoPositivoVerdadero Positivo (TP)
    PositivoNegativoFalso Negativo (FN)
    NegativoPositivoFalso Positivo (FP)
    NegativoNegativoVerdadero Negativo (TN)

    A partir de estos valores se calculan las métricas utilizadas en la curva ROC.

    Tasa de Verdaderos Positivos (TPR)

    También conocida como Recall o Sensibilidad.

    $$TPR = \frac{TP}{TP + FN}$$

    Indica qué proporción de positivos reales fue correctamente identificada.

    Tasa de Falsos Positivos (FPR)

    $$FPR = \frac{FP}{FP + TN}$$

    Representa la proporción de negativos clasificados incorrectamente como positivos.

    ¿Cómo funciona la curva ROC?

    Muchos clasificadores no generan directamente una clase, sino una probabilidad. Por ejemplo:

    ClienteProbabilidad de Compra
    A0.95
    B0.82
    C0.65
    D0.40
    E0.15

    Para convertir estas probabilidades en clases se utiliza un umbral.

    Si el umbral es 0.5:

    • Probabilidad ≥ 0.5 → Positivo
    • Probabilidad < 0.5 → Negativo

    La curva ROC evalúa múltiples umbrales:

    • 0.1
    • 0.2
    • 0.3
    • 0.4
    • 1.0

    Para cada umbral se calculan:

    • TPR
    • FPR

    Finalmente se representan gráficamente.

    ¿Qué es el AUC?

    El AUC (Area Under the Curve) mide el área bajo la curva ROC. Su valor está comprendido entre 0 y 1.

    AUCInterpretación
    1.0Clasificador perfecto
    0.9 – 0.99Excelente
    0.8 – 0.9Muy bueno
    0.7 – 0.8Aceptable
    0.6 – 0.7Pobre
    0.5Aleatorio
    < 0.5Peor que el azar

    Un AUC de 0.90 significa que existe aproximadamente un 90% de probabilidad de que el modelo asigne una puntuación mayor a una observación positiva que a una negativa.

    Interpretación intuitiva

    Supongamos dos pacientes:

    • Paciente enfermo.
    • Paciente sano.

    Si seleccionamos ambos al azar:

    • El modelo obtiene un AUC de 0.95.
    • Existe un 95% de probabilidad de que el paciente enfermo reciba una puntuación de riesgo superior al paciente sano.

    Por eso ROC-AUC es considerada una medida de capacidad discriminativa.

    Ejemplo práctico

    Supongamos el siguiente modelo de detección de fraude.

    TransacciónClase RealProbabilidad
    T1Fraude0.95
    T2Fraude0.85
    T3Normal0.60
    T4Normal0.20

    El modelo asigna sistemáticamente probabilidades mayores a los casos de fraude. La curva ROC reflejará esta capacidad de separación y el AUC será elevado.

    Beneficios de ROC-AUC

    • Evalúa todos los umbrales posibles.
    • No depende de un umbral específico.
    • Permite comparar clasificadores fácilmente.
    • Funciona bien con probabilidades.
    • Es robusta frente a cambios de umbral.
    • Facilita la selección de modelos.
    • Resume el rendimiento en un único valor.

    ¿Cuándo utilizar ROC-AUC?

    • Se trabaja con clasificación binaria.
    • El modelo genera probabilidades.
    • Se desea comparar varios clasificadores.
    • El coste de errores aún no está definido.
    • Se busca una evaluación global del modelo.
    • Se realizan procesos de selección de modelos.

    Es especialmente útil durante la fase de experimentación.

    Ventajas y desventajas

    VentajasDesventajas
    Evalúa todos los umbrales posiblesNo refleja directamente el coste de los errores
    Facilita la comparación entre modelosPuede ser optimista en datasets muy desbalanceados
    Independiente del umbralNo indica qué umbral utilizar
    Fácil de interpretarPuede ocultar problemas en regiones específicas
    Muy utilizada en investigación y producciónNo siempre refleja el rendimiento operativo real

    ROC-AUC vs Accuracy

    CaracterísticaROC-AUCAccuracy
    Considera múltiples umbralesNo
    Evalúa capacidad de discriminaciónNo
    Adecuada para comparar modelosLimitada
    Sensible al umbralNo
    Puede utilizar probabilidadesNo

    ROC-AUC vs Precision-Recall AUC

    CaracterísticaROC-AUCPR-AUC
    Utiliza TPR y FPRNo
    Utiliza Precision y RecallNo
    Adecuada para clases balanceadas
    Adecuada para clases muy desbalanceadasMenos recomendableMás recomendable
    Muy utilizada en clasificación general

    En problemas con fraude, enfermedades raras o detección de anomalías suele preferirse Precision-Recall AUC.

    Limitaciones

    ROC-AUC no es una métrica perfecta. Entre sus principales limitaciones destacan:

    • No indica el umbral óptimo.
    • Puede resultar engañosa con clases extremadamente desbalanceadas.
    • No refleja costes de negocio.
    • Dos modelos con igual AUC pueden comportarse de forma diferente.
    • No muestra dónde ocurren los errores.
    • Puede ocultar problemas importantes en determinadas regiones de decisión.

    Por esta razón suele combinarse con otras métricas.

    Aplicaciones en Data Science y Machine Learning

    ROC-AUC se utiliza ampliamente en:

    • Detección de fraude financiero.
    • Diagnóstico médico.
    • Clasificación de clientes.
    • Predicción de abandono de clientes (Churn).
    • Sistemas de recomendación.
    • Detección de spam.
    • Ciberseguridad.
    • Scoring crediticio.
    • Mantenimiento predictivo.
    • Clasificación de imágenes.
    • Clasificación de texto.
    • Modelos de riesgo.

    Es una de las métricas más utilizadas en competiciones de Machine Learning y entornos empresariales.

    Implementación en Python

    Crear un conjunto de datos

    from sklearn.datasets import make_classification
    
    X, y = make_classification(
        n_samples=1000,
        n_features=10,
        random_state=42
    )
    

    Entrenar un modelo

    from sklearn.model_selection import train_test_split
    from sklearn.ensemble import RandomForestClassifier
    
    X_train, X_test, y_train, y_test = train_test_split(
        X,
        y,
        test_size=0.2,
        random_state=42
    )
    
    modelo = RandomForestClassifier()
    
    modelo.fit(X_train, y_train)
    

    Obtener probabilidades

    y_prob = modelo.predict_proba(X_test)[:, 1]
    

    La segunda columna representa la probabilidad de pertenecer a la clase positiva.

    Calcular ROC-AUC

    from sklearn.metrics import roc_auc_score
    
    auc = roc_auc_score(y_test, y_prob)
    
    print(f"AUC: {auc:.4f}")
    
    AUC: 0.9421

    Construir la curva ROC

    from sklearn.metrics import roc_curve
    
    fpr, tpr, thresholds = roc_curve(
        y_test,
        y_prob
    )
    

    Visualizar la curva ROC

    import matplotlib.pyplot as plt
    
    plt.figure(figsize=(8,6))
    
    plt.plot(fpr, tpr, label=f"AUC = {auc:.3f}")
    
    plt.plot(
        [0, 1],
        [0, 1],
        linestyle='--'
    )
    
    plt.xlabel("False Positive Rate")
    plt.ylabel("True Positive Rate")
    plt.title("Curva ROC")
    plt.legend()
    
    plt.show()
    

    Comparar varios modelos

    from sklearn.linear_model import LogisticRegression
    from sklearn.ensemble import GradientBoostingClassifier
    
    modelos = {
        "Logistic Regression": LogisticRegression(),
        "Random Forest": RandomForestClassifier(),
        "Gradient Boosting": GradientBoostingClassifier()
    }
    
    for nombre, modelo in modelos.items():
    
        modelo.fit(X_train, y_train)
    
        prob = modelo.predict_proba(X_test)[:,1]
    
        auc = roc_auc_score(y_test, prob)
    
        print(nombre, round(auc,4))
    }
    

    Esta práctica es muy habitual durante la selección de modelos.

    Buenas prácticas

    Para utilizar ROC-AUC correctamente se recomienda:

    • Evaluarla junto con Precision, Recall y F1-Score.
    • Analizar la matriz de confusión.
    • Considerar el desbalanceo de clases.
    • Comparar la curva ROC de varios modelos.
    • Revisar el impacto del umbral de clasificación.
    • Utilizar validación cruzada para obtener resultados más robustos.
    • Complementar el análisis con métricas de negocio.

    Conclusión

    ROC-AUC es una de las métricas más importantes para evaluar modelos de clasificación binaria. Su principal fortaleza es que mide la capacidad de un modelo para diferenciar entre clases positivas y negativas considerando todos los umbrales posibles. Esto la convierte en una herramienta extremadamente útil para comparar clasificadores, seleccionar modelos y evaluar sistemas predictivos de forma global.

    Sin embargo, aunque proporciona una excelente medida de discriminación, no debe utilizarse de manera aislada. En proyectos reales es recomendable complementarla con métricas como Precision, Recall, F1-Score y análisis de negocio para obtener una visión completa del rendimiento del modelo y tomar decisiones más informadas.

  • Predict H1N1 and Seasonal Flu Vaccines – Problem Description

    ¿Es posible predecir si las personas se vacunaron contra la gripe H1N1 y la gripe estacional utilizando la información que compartieron sobre sus antecedentes, opiniones y hábitos de salud?

    En este desafío, analizaremos la vacunación, una medida clave de salud pública para combatir las enfermedades infecciosas. Las vacunas inmunizan a las personas, y una vacunación suficiente en una comunidad puede reducir aún más la propagación de enfermedades mediante la inmunidad colectiva.

    DrivenData. (2020). Flu Shot Learning: Predict H1N1 and Seasonal Flu Vaccines. Retrieved [Month Day Year] from https://www.drivendata.org/competitions/66/flu-shot-learning

    Al momento del lanzamiento de este concurso, las vacunas contra el virus COVID-19 aún están en desarrollo y no están disponibles. En cambio, el concurso retomará la respuesta de salud pública a otra pandemia reciente de una enfermedad respiratoria importante. A partir de la primavera de 2009, una pandemia causada por el virus de la influenza H1N1, conocida coloquialmente como “gripe porcina”, se extendió por todo el mundo. Los investigadores estiman que, en el primer año, fue responsable de entre 151.000 y 575.000 muertes a nivel mundial .

    En octubre de 2009, la vacuna contra el virus de la gripe H1N1 estuvo disponible para el público. Entre finales de 2009 y principios de 2010, Estados Unidos realizó la Encuesta Nacional sobre la Gripe H1N1 de 2009. Esta encuesta telefónica preguntaba a los participantes si habían recibido las vacunas contra la gripe H1N1 y la gripe estacional, además de incluir preguntas sobre sí mismos. Estas preguntas adicionales abarcaban sus antecedentes sociales, económicos y demográficos, sus opiniones sobre los riesgos de la enfermedad y la eficacia de la vacuna, y sus comportamientos para mitigar la transmisión. Una mejor comprensión de cómo estas características se asocian con los patrones de vacunación individuales puede orientar futuras iniciativas de salud pública.

    Descripción del problema

    Tu objetivo es predecir la probabilidad de que las personas reciban sus vacunas contra la gripe H1N1 y la gripe estacional. Específicamente, predecirás dos probabilidades: una para h1n1_vacciney otra para seasonal_vaccine. Cada fila del conjunto de datos representa a una persona que respondió a la Encuesta Nacional sobre la Gripe H1N1 de 2009

    Etiquetas

    Para esta competición, existen dos variables objetivo:

    • h1n1_vaccine– Si el encuestado recibió la vacuna contra la gripe H1N1.
    • seasonal_vaccine– Si el encuestado recibió la vacuna contra la gripe estacional.

    Ambas son variables binarias. Algunos encuestados no recibieron ninguna de las vacunas, otros solo una y algunos ambas. Esto se formula como un problema de etiquetas múltiples (y no de clases múltiples).

    Las características de este conjunto de datos

    Se le proporciona un conjunto de datos con 36 columnas. La primera columna respondent_id es un identificador único y aleatorio. Las 35 características restantes se describen a continuación.

    Para todas las variables binarias: 0= No; 1= Sí.

    • h1n1_concern– Nivel de preocupación por la gripe H1N1.
      • 0= Nada preocupado; 1= No muy preocupado; 2= Algo preocupado; 3= Muy preocupado.
    • h1n1_knowledge– Nivel de conocimiento sobre la gripe H1N1.
      • 0= Sin conocimiento; 1= Un poco de conocimiento; 2= Mucho conocimiento.
    • behavioral_antiviral_meds– Ha tomado medicamentos antivirales. (binario)
    • behavioral_avoidance– Ha evitado el contacto cercano con otras personas que presenten síntomas similares a los de la gripe. (binario)
    • behavioral_face_mask– Ha comprado una mascarilla. (binario)
    • behavioral_wash_hands– Se ha lavado las manos con frecuencia o ha usado desinfectante para manos. (binario)
    • behavioral_large_gatherings– Ha reducido el tiempo en grandes reuniones. (binario)
    • behavioral_outside_home– Ha reducido el contacto con personas ajenas a su hogar. (binario)
    • behavioral_touch_face– Ha evitado tocarse los ojos, la nariz o la boca. (binario)
    • doctor_recc_h1n1– El médico recomendó la vacuna contra la gripe H1N1. (binario)
    • doctor_recc_seasonal– El médico recomendó la vacuna contra la gripe estacional. (binario)
    • chronic_med_condition– Presenta alguna de las siguientes afecciones médicas crónicas: asma u otra afección pulmonar, diabetes, una afección cardíaca, una afección renal, anemia falciforme u otro tipo de anemia, una afección neurológica o neuromuscular, una afección hepática o un sistema inmunitario debilitado debido a una enfermedad crónica o a medicamentos tomados para una enfermedad crónica. (binario)
    • child_under_6_months– Mantiene contacto estrecho y regular con un niño menor de seis meses. (binario)
    • health_worker– Es un trabajador de la salud. (binario)
    • health_insurance– Tiene seguro médico. (binario)
    • opinion_h1n1_vacc_effective– Opinión del encuestado sobre la eficacia de la vacuna contra la gripe H1N1.
      • 1= Nada efectivo; 2= No muy efectivo; 3= No lo sé; 4= Algo efectivo; 5= Muy efectivo.
    • opinion_h1n1_risk– Opinión del encuestado sobre el riesgo de contraer la gripe H1N1 sin vacunarse.
      • 1= Muy bajo; 2= Algo bajo; 3= No lo sé; 4= Algo alto; 5= Muy alto.
    • opinion_h1n1_sick_from_vacc– Preocupación del encuestado por enfermarse tras recibir la vacuna contra la gripe H1N1.
      • 1= Nada preocupado; 2= No muy preocupado; 3= No lo sé; 4= Algo preocupado; 5= Muy preocupado.
    • opinion_seas_vacc_effective– Opinión del encuestado sobre la eficacia de la vacuna contra la gripe estacional.
      • 1= Nada efectivo; 2= No muy efectivo; 3= No lo sé; 4= Algo efectivo; 5= Muy efectivo.
    • opinion_seas_risk– Opinión del encuestado sobre el riesgo de contraer la gripe estacional sin vacunarse.
      • 1= Muy bajo; 2= Algo bajo; 3= No lo sé; 4= Algo alto; 5= Muy alto.
    • opinion_seas_sick_from_vacc– Preocupación del encuestado por enfermarse tras recibir la vacuna contra la gripe estacional.
      • 1= Nada preocupado; 2= No muy preocupado; 3= No lo sé; 4= Algo preocupado; 5= Muy preocupado.
    • age_group– Grupo de edad del encuestado.
    • education– Nivel educativo declarado por el propio participante.
    • race– Raza del encuestado.
    • sex– Sexo del encuestado.
    • income_poverty– Ingresos anuales del hogar del encuestado con respecto a los umbrales de pobreza del Censo de 2008.
    • marital_status– Estado civil del encuestado.
    • rent_or_own– Situación de vivienda del encuestado.
    • employment_status– Situación laboral del encuestado.
    • hhs_geo_region– Residencia del encuestado según una clasificación geográfica de 10 regiones definida por el Departamento de Salud y Servicios Humanos de los Estados Unidos. Los valores se representan como cadenas cortas de caracteres aleatorios.
    • census_msa– Residencia del encuestado dentro de áreas estadísticas metropolitanas (MSA, por sus siglas en inglés) según lo define la Oficina del Censo de los Estados Unidos.
    • household_adults– Número de otros adultos en el hogar, con un máximo de 3.
    • household_children– Número de niños en el hogar, con el código superior 3.
    • employment_industry– Tipo de industria en la que trabaja el encuestado. Los valores se representan como cadenas cortas de caracteres aleatorios.
    • employment_occupation– Tipo de ocupación del encuestado. Los valores se representan como cadenas cortas de caracteres aleatorios.

    Ejemplo de datos de características

    Por ejemplo, una sola fila del conjunto de datos tiene estos valores:

    CampoValor
    preocupación h1n11
    conocimiento h1n10
    medicamentos antivirales conductuales0
    evitación conductual0
    mascarilla facial conductual0
    lavado de manos conductual0
    grandes reuniones de comportamiento0
    comportamiento_fuera_del_hogar1
    cara_táctil_conductual1
    doctor_recc_h1n10
    doctor_recc_estacional0
    condición médica crónica0
    niño_menor_de_6_meses0
    trabajador de la salud0
    seguro_de_salud1
    opinión_vacuna_h1n1_eficaz3
    riesgo_de_opinión_h1n11
    opinión_h1n1_enfermo_por_vacuna2
    opinión_vacuna_mar_eficaz2
    opinión_riesgo_marítimo1
    opinión_mareo_por_vacuna2
    grupo_de_edad55 – 64 años
    educación< 12 años
    carreraBlanco
    sexoFemenino
    pobreza de ingresosPor debajo del umbral de pobreza
    Estado civilNo estoy casado
    alquilar o comprarPropio
    estado_laboralNo forma parte de la fuerza laboral.
    región_geográfica_hhsbueyjgsf
    censo_msaNo MSA
    adultos del hogar0
    niños del hogar0
    industria del empleoYaya
    empleo_ocupaciónYaya

    Métrica de rendimiento

    El rendimiento se evaluará según el área bajo la curva ROC (AUC) para cada una de las dos variables objetivo. La media de estas dos puntuaciones constituirá la puntuación global. Un valor más alto indica un mejor rendimiento.

    En Python, puedes calcular esto usando sklearn.metrics.roc_auc_score para esta configuración multietiqueta con el parámetro average="macro"predeterminado.

    Formato de envío

    El formato del archivo de envío consta de tres columnas: respondent_idh1n1_vaccine, y seasonal_vaccine. Las predicciones para las dos variables objetivo deben ser probabilidades flotantes que oscilen entre 0.01.0. Dado que la competencia utiliza el área bajo la curva ROC (AUC) como métrica de evaluación, los valores que envíe deben ser las probabilidades de que una persona haya recibido cada vacuna, no etiquetas binarias.

    Como se trata de un problema de etiquetas múltiples, las probabilidades de cada fila no tienen por qué sumar uno.

    Por ejemplo, si predijiste…

    vacuna h1n1vacuna estacional
    ID del encuestado
    267070,50,7
    267080,50,7
    267090,50,7
    267100,50,7
    267110,50,7

    Las primeras líneas del .csvarchivo que envíe se verían así:

    respondent_id,h1n1_vaccine,seasonal_vaccine
    26707,0.5,0.7
    26708,0.5,0.7
    26709,0.5,0.7
    26710,0.5,0.7
    26711,0.5,0.7
    ...
  • Imputación Múltiple (MICE)

    ¿Qué es la Imputación Múltiple (MICE)?

    La imputación múltiple mediante ecuaciones encadenadas (Multiple Imputation by Chained Equations o MICE) es una técnica avanzada de tratamiento de datos faltantes que estima los valores ausentes utilizando modelos predictivos construidos a partir del resto de variables del conjunto de datos.

    A diferencia de la imputación simple, que reemplaza los valores faltantes mediante una única estadística como la media o la mediana, MICE intenta reconstruir la información perdida aprovechando las relaciones existentes entre las variables.

    Su principal característica es que genera múltiples estimaciones para los valores faltantes en lugar de una única imputación fija, permitiendo reflejar mejor la incertidumbre asociada a los datos ausentes.

    Por esta razón, MICE es considerada una de las técnicas más rigurosas desde el punto de vista estadístico.

    ¿Por qué utilizar MICE?

    En muchos conjuntos de datos reales, las variables están relacionadas entre sí.

    Por ejemplo:

    EdadSalarioNivel Educativo
    251800Secundaria
    30NULLUniversidad
    353200Universidad

    El salario suele estar relacionado con:

    • La edad.
    • La experiencia.
    • El nivel educativo.
    • La ocupación.

    Sustituir el valor faltante mediante una simple media ignora completamente estas relaciones. MICE aprovecha esta información para generar imputaciones más realistas y coherentes con el comportamiento observado en los datos.

    ¿Cómo funciona MICE?

    La idea fundamental consiste en utilizar cada variable como objetivo de predicción de manera iterativa.

    El proceso general es:

    1. Realizar una imputación inicial sencilla.
    2. Seleccionar una variable con valores faltantes.
    3. Construir un modelo utilizando el resto de variables.
    4. Predecir los valores ausentes.
    5. Repetir el proceso para todas las variables con datos faltantes.
    6. Ejecutar varias iteraciones hasta que las imputaciones se estabilicen.

    Este procedimiento genera una cadena de modelos predictivos interconectados. De ahí el nombre:

    Multiple Imputation by Chained Equations

    ¿Por qué se llama imputación múltiple?

    La característica que diferencia a MICE de otros métodos es que no genera una única estimación. En su formulación estadística original:

    • Se crean múltiples versiones completas del dataset.
    • Cada una contiene imputaciones ligeramente diferentes.
    • Los análisis se realizan sobre todos los conjuntos generados.
    • Los resultados se combinan posteriormente.

    De esta forma se incorpora la incertidumbre inherente al proceso de imputación.

    Funcionamiento iterativo

    Uno de los aspectos más interesantes de MICE es su naturaleza iterativa.

    Por ejemplo:

    • Iteración 1: Se imputan todos los valores faltantes utilizando estimaciones iniciales.
    • Iteración 2: Se reconstruyen modelos utilizando las nuevas imputaciones.
    • Iteración 3: Se refinan nuevamente las estimaciones.
    • Iteraciones posteriores: El proceso continúa hasta alcanzar estabilidad.

    Este mecanismo permite mejorar progresivamente la calidad de las imputaciones.

    Tipos de modelos utilizados

    Dependiendo del tipo de variable, MICE puede utilizar diferentes algoritmos.

    Tipo de VariableModelo Habitual
    Numérica continuaRegresión lineal
    BinariaRegresión logística
    CategóricaClasificación
    ConteosRegresión de Poisson

    Esto convierte a MICE en una técnica extremadamente flexible.

    Beneficios de MICE

    • Aprovecha las relaciones entre variables.
    • Genera imputaciones más realistas.
    • Reduce el sesgo respecto a métodos simples.
    • Conserva mejor la estructura estadística de los datos.
    • Permite incorporar incertidumbre en las estimaciones.
    • Funciona bien con múltiples variables faltantes.
    • Es una de las técnicas más aceptadas en investigación y estadística aplicada.

    ¿Cuándo utilizar MICE?

    • Existen relaciones significativas entre variables.
    • El porcentaje de datos faltantes es moderado.
    • Se requiere alta precisión estadística.
    • Los datos son MAR (Missing At Random).
    • La calidad de la imputación es prioritaria.

    Es especialmente habitual en:

    • Investigación médica.
    • Ciencias sociales.
    • Finanzas.
    • Estudios longitudinales.
    • Proyectos analíticos avanzados.

    Ventajas

    • Imputaciones más precisas.
    • Conservación de correlaciones entre variables.
    • Menor sesgo estadístico.
    • Adaptación a distintos tipos de datos.
    • Manejo simultáneo de múltiples variables incompletas.
    • Fundamentación estadística sólida.
    • Amplio respaldo académico.

    Desventajas

    • Mayor complejidad conceptual.
    • Coste computacional elevado.
    • Tiempo de ejecución superior.
    • Requiere más parámetros de configuración.
    • Resultados más difíciles de interpretar.

    Además, la calidad de la imputación depende de la calidad de los modelos utilizados.

    Limitaciones

    Antes de utilizar MICE conviene considerar que:

    • No recupera los valores reales perdidos.
    • Puede producir resultados incorrectos si los modelos están mal especificados.
    • Resulta menos eficaz con datos MNAR.
    • Puede ser costoso en datasets muy grandes.
    • Requiere variables predictoras informativas.

    La técnica funciona mejor cuando existen relaciones reales entre las variables del conjunto de datos.

    Comparación con otras técnicas de imputación

    CaracterísticaImputación SimpleKNN ImputationMICE
    ComplejidadBajaMediaAlta
    Coste computacionalBajoMedioAlto
    Utiliza relaciones entre variablesNo
    Calidad de imputaciónMediaAltaMuy Alta
    EscalabilidadAltaMediaBaja
    Fundamentación estadísticaBajaMediaAlta

    MICE vs Imputación Simple

    AspectoImputación SimpleMICE
    Utiliza una única estadísticaNo
    Considera otras variablesNo
    Conserva correlacionesNo
    Riesgo de sesgoMayorMenor
    ComplejidadBajaAlta

    MICE vs KNN Imputation

    AspectoKNN ImputationMICE
    Basado en vecinosNo
    Basado en modelos predictivosNo
    Coste computacionalMedioAlto
    InterpretabilidadMediaAlta
    Calidad estadísticaAltaMuy Alta

    Aplicaciones en Data Science y Machine Learning

    MICE se utiliza frecuentemente en:

    • Estudios clínicos.
    • Investigación biomédica.
    • Analítica financiera.
    • Modelos de riesgo.
    • Predicción de abandono.
    • Analítica de clientes.
    • Investigación académica.
    • Machine Learning supervisado.
    • Modelos estadísticos avanzados.

    Es especialmente útil cuando la calidad de los datos resulta crítica para el análisis.

    Impacto en Machine Learning

    Muchos algoritmos requieren conjuntos de datos completos para funcionar correctamente.

    MICE permite:

    • Mantener observaciones incompletas.
    • Reducir la pérdida de información.
    • Preservar relaciones entre variables.
    • Mejorar la calidad del conjunto de datos.

    En numerosos escenarios, los modelos entrenados sobre datos imputados mediante MICE presentan un mejor comportamiento que aquellos construidos utilizando imputación simple.

    Implementación en Python

    En Scikit-Learn, MICE se implementa mediante IterativeImputer.

    Habilitar IterativeImputer

    from sklearn.experimental import enable_iterative_imputer
    from sklearn.impute import IterativeImputer
    

    Ejemplo básico

    import pandas as pd
    
    from sklearn.experimental import enable_iterative_imputer
    from sklearn.impute import IterativeImputer
    
    df = pd.DataFrame({
        "edad": [25, 30, 35, 40],
        "salario": [1800, None, 3200, 4500]
    })
    
    imputer = IterativeImputer(
        random_state=42
    )
    
    df_imputado = pd.DataFrame(
        imputer.fit_transform(df),
        columns=df.columns
    )
    
    print(df_imputado)
    

    Configurar el número de iteraciones

    imputer = IterativeImputer(
        max_iter=20,
        random_state=42
    )
    

    Uso dentro de un Pipeline

    from sklearn.pipeline import Pipeline
    from sklearn.impute import IterativeImputer
    from sklearn.ensemble import RandomForestClassifier
    
    pipeline = Pipeline([
        ("imputer",
         IterativeImputer(
             random_state=42
         )),
        ("model",
         RandomForestClassifier())
    ])
    
    pipeline.fit(X_train, y_train)
    

    Buenas prácticas

    Al utilizar MICE es recomendable:

    • Analizar previamente el patrón de datos faltantes.
    • Utilizar únicamente los datos de entrenamiento para ajustar el imputador.
    • Verificar las relaciones entre variables.
    • Ajustar adecuadamente el número de iteraciones.
    • Comparar los resultados con otros métodos de imputación.
    • Validar el impacto sobre el modelo final.
    • Revisar las distribuciones antes y después de la imputación.

    Conclusión

    La Imputación Múltiple mediante Ecuaciones Encadenadas (MICE) es una de las técnicas más avanzadas y robustas para el tratamiento de datos faltantes. Su principal ventaja es que utiliza modelos predictivos para estimar los valores ausentes, aprovechando las relaciones existentes entre las variables del conjunto de datos.

    Aunque presenta una complejidad y un coste computacional superiores a los métodos tradicionales, suele producir imputaciones más realistas y estadísticamente sólidas. Por ello, se ha convertido en una herramienta ampliamente utilizada en investigación, análisis avanzado de datos y proyectos de Machine Learning donde la calidad de la información es un factor crítico.

  • Imputación por KNN

    ¿Qué es la imputación por KNN?

    La imputación por KNN (K-Nearest Neighbors Imputation) es una técnica de tratamiento de datos faltantes que estima los valores ausentes utilizando información procedente de observaciones similares dentro del conjunto de datos.

    A diferencia de la imputación simple, que reemplaza todos los valores faltantes de una variable utilizando una única estadística como la media o la mediana, la imputación por KNN genera una estimación personalizada para cada observación basándose en sus vecinos más cercanos.

    La idea fundamental es que observaciones con características similares probablemente también presenten valores similares en las variables faltantes. Por esta razón, la imputación por KNN suele producir estimaciones más realistas que los métodos de imputación simple.

    ¿Por qué utilizar KNN para imputar datos faltantes?

    Cuando existen relaciones entre las variables de un conjunto de datos, reemplazar los valores faltantes utilizando únicamente la media o la mediana puede provocar una pérdida importante de información. Por ejemplo, consideremos los siguientes clientes:

    EdadIngresos
    251800
    281900
    27NULL
    605000

    Resulta poco razonable sustituir el ingreso faltante mediante la media global de todos los ingresos, ya que el cliente de 27 años probablemente se parezca más a los clientes jóvenes que al cliente de 60 años. La imputación por KNN intenta aprovechar precisamente esta similitud, la mayoría de implementaciones utilizan la distancia euclídea.

    ¿Cómo funciona la imputación por KNN?

    El procedimiento general consiste en:

    1. Identificar la observación con datos faltantes.
    2. Calcular la distancia respecto al resto de observaciones.
    3. Encontrar los K vecinos más cercanos.
    4. Recuperar los valores conocidos de esos vecinos.
    5. Estimar el valor faltante utilizando la información de los vecinos.

    La estimación suele realizarse mediante:

    • La media para variables numéricas.
    • La moda para variables categóricas.

    El parámetro K

    Uno de los elementos más importantes de esta técnica es el número de vecinos utilizados.

    Valor de KCaracterísticas
    K pequeñoMás sensible al ruido
    K intermedioEquilibrio entre precisión y estabilidad
    K grandeEstimaciones más estables pero menos específicas

    No existe un valor universalmente óptimo. En muchos proyectos se utilizan valores entre:

    K = 3 y K = 10

    aunque debe validarse según el problema.

    Importancia del escalado de variables

    La imputación por KNN depende directamente de las distancias entre observaciones. Por este motivo, las variables deben encontrarse en escalas comparables.

    Ejemplo:

    VariableRango
    Edad18 – 80
    Salario1000 – 100000

    Sin escalado, la variable salario dominará completamente el cálculo de distancias. Por ello suele aplicarse previamente:

    Beneficios de la imputación por KNN

    • Aprovecha la información de observaciones similares.
    • Conserva mejor la estructura de los datos.
    • Produce imputaciones más realistas.
    • Tiene en cuenta relaciones entre variables.
    • Puede adaptarse a diferentes tipos de datasets.
    • Reduce la pérdida de información.
    • Suele superar a la imputación simple en precisión.

    ¿Cuándo utilizar la imputación por KNN?

    • Existen relaciones entre variables.
    • El porcentaje de valores faltantes es moderado.
    • El dataset no es excesivamente grande.
    • Las observaciones similares contienen información útil.
    • Se desea una imputación más precisa que la media o la mediana.

    Resulta especialmente útil en:

    • Datos de clientes.
    • Datos financieros.
    • Datos médicos.
    • Sistemas de recomendación.
    • Problemas de clasificación y regresión.

    Ventajas

    • Utiliza información contextual.
    • Mantiene mejor las distribuciones originales.
    • Considera múltiples variables simultáneamente.
    • Produce estimaciones individualizadas.
    • Fácil de implementar mediante Scikit-Learn.
    • Puede mejorar el rendimiento de los modelos.

    Desventajas

    • Coste computacional elevado.
    • Sensibilidad al escalado de variables.
    • Sensibilidad a valores atípicos.
    • Puede ser lento en grandes datasets.
    • La elección de K influye en los resultados.

    Además, cuando existen muchos valores faltantes, encontrar vecinos fiables resulta más complicado.

    Limitaciones

    La imputación por KNN presenta varias limitaciones importantes:

    • No funciona bien con datasets extremadamente grandes.
    • Puede degradarse en espacios de alta dimensionalidad.
    • Depende de la calidad de las variables utilizadas.
    • No siempre captura relaciones complejas.
    • Puede producir imputaciones incorrectas cuando los vecinos no son realmente similares.

    Por esta razón, en algunos escenarios se prefieren métodos más avanzados como MICE.

    Comparación con otras técnicas de imputación

    CaracterísticaImputación SimpleKNN ImputationMICE
    ComplejidadBajaMediaAlta
    Utiliza relaciones entre variablesNo
    Coste computacionalBajoMedio-AltoAlto
    Calidad de imputaciónMediaAltaMuy Alta
    Facilidad de implementaciónAltaMediaBaja
    EscalabilidadAltaMediaBaja

    Imputación por KNN vs Imputación Simple

    AspectoImputación SimpleImputación por KNN
    Valor imputadoIgual para todos los nulosPersonalizado
    Utiliza vecinos similaresNo
    Conserva relaciones entre variablesNo
    Coste computacionalBajoAlto
    PrecisiónMediaAlta

    Aplicaciones en Data Science y Machine Learning

    La imputación por KNN aparece frecuentemente en:

    • Modelos de clasificación.
    • Modelos de regresión.
    • Analítica financiera.
    • Predicción de riesgo.
    • Sistemas de recomendación.
    • Analítica de clientes.
    • Predicción de abandono.
    • Datos biomédicos.
    • Detección de fraude.

    Es especialmente útil cuando la similitud entre observaciones contiene información valiosa.

    Impacto en Machine Learning

    Muchos algoritmos requieren conjuntos de datos completos para funcionar correctamente.

    La imputación por KNN permite:

    • Conservar registros incompletos.
    • Reducir la pérdida de información.
    • Mantener relaciones entre variables.
    • Mejorar la calidad del dataset.

    En numerosos problemas, los modelos entrenados tras aplicar KNN Imputation obtienen mejores resultados que aquellos construidos utilizando imputación simple.

    Implementación en Python

    Ejemplo básico con KNNImputer

    import pandas as pd
    from sklearn.impute import KNNImputer
    
    df = pd.DataFrame({
        "edad": [25, 28, 27, 60],
        "ingresos": [1800, 1900, None, 5000]
    })
    
    imputer = KNNImputer(
        n_neighbors=2
    )
    
    df_imputado = pd.DataFrame(
        imputer.fit_transform(df),
        columns=df.columns
    )
    
    print(df_imputado)
    

    Utilizando escalado previo

    from sklearn.pipeline import Pipeline
    from sklearn.preprocessing import StandardScaler
    from sklearn.impute import KNNImputer
    
    pipeline = Pipeline([
        ("scaler", StandardScaler()),
        ("imputer", KNNImputer(
            n_neighbors=5
        ))
    ])
    
    datos_imputados = pipeline.fit_transform(df)
    

    Integración en un flujo de Machine Learning

    from sklearn.pipeline import Pipeline
    from sklearn.impute import KNNImputer
    from sklearn.ensemble import RandomForestClassifier
    
    pipeline = Pipeline([
        ("imputer",
         KNNImputer(n_neighbors=5)),
        ("model",
         RandomForestClassifier())
    ])
    
    pipeline.fit(X_train, y_train)
    

    Buenas prácticas

    Al utilizar imputación por KNN es recomendable:

    • Escalar las variables antes de calcular distancias.
    • Probar diferentes valores de K.
    • Analizar la distribución de los datos antes y después de la imputación.
    • Utilizar únicamente datos de entrenamiento para ajustar el imputador.
    • Evaluar el impacto sobre el rendimiento del modelo.
    • Revisar la presencia de outliers.

    Conclusión

    La imputación por KNN es una técnica avanzada de tratamiento de datos faltantes que estima los valores ausentes utilizando observaciones similares dentro del conjunto de datos. A diferencia de la imputación simple, aprovecha las relaciones existentes entre variables para generar estimaciones personalizadas y generalmente más precisas.

    Aunque presenta un coste computacional superior y requiere prestar atención al escalado de las variables, constituye una alternativa muy eficaz cuando existen patrones de similitud significativos en los datos. Por ello, es una de las técnicas de imputación más utilizadas en proyectos de Data Science y Machine Learning que buscan maximizar la calidad de la información disponible antes del modelado.

  • Imputación Simple

    ¿Qué es la imputación simple?

    La imputación simple es una técnica de tratamiento de datos faltantes que consiste en reemplazar los valores ausentes utilizando un único valor calculado o definido previamente. Es una de las estrategias más utilizadas durante la preparación de datos debido a su sencillez, rapidez y facilidad de implementación.

    En lugar de eliminar registros o variables que contienen datos faltantes, la imputación simple permite conservar la información disponible sustituyendo los valores ausentes por estimaciones razonables.

    Por ejemplo:

    edad = [ 25, 30, NULL, 35]

    Tras aplicar imputación simple mediante la media:

    edad = [ 25, 30, 30, 35]

    El valor faltante se sustituye por una estimación basada en los datos disponibles.

    ¿Por qué utilizar imputación simple?

    Los valores faltantes representan uno de los problemas más frecuentes en Data Science y Machine Learning. Muchos algoritmos no pueden procesar directamente datos ausentes, lo que obliga a tomar alguna decisión antes del entrenamiento. Las alternativas más comunes son:

    • Eliminar registros.
    • Eliminar variables.
    • Imputar valores.

    La imputación simple suele ser una buena opción cuando:

    • La cantidad de valores faltantes es reducida.
    • La variable es importante para el análisis.
    • Se desea conservar el mayor número posible de observaciones.
    • No se justifica utilizar métodos más complejos.

    ¿Cómo funciona la imputación simple?

    El procedimiento consiste en:

    1. Identificar los valores faltantes.
    2. Seleccionar un método de imputación.
    3. Calcular el valor de reemplazo.
    4. Sustituir los datos ausentes.

    La característica principal de esta técnica es que todos los valores faltantes de una misma variable se reemplazan utilizando el mismo criterio.

    Métodos de imputación simple

    • Imputación mediante la media: Se sustituyen los valores faltantes por la media aritmética de la variable.
    • Imputación mediante la mediana : Se reemplazan los valores faltantes por la mediana de la variable.
    • Imputación mediante la moda: Se utiliza el valor más frecuente de una variable. Es especialmente útil para variables categóricas.
    • Imputación mediante un valor constante: Los valores faltantes se sustituyen por un valor definido manualmente. Ejmplo: Unknow, esta estrategia permite conservar información sobre la ausencia de datos.

    Comparación entre métodos de imputación simple

    MétodoTipo de VariableSensible a OutliersComplejidad
    MediaNuméricaAltaBaja
    MedianaNuméricaBajaBaja
    ModaCategórica o NuméricaBajaBaja
    ConstanteCualquier tipoNo aplicaBaja

    Beneficios de la imputación simple

    • Permite conservar registros incompletos.
    • Evita la pérdida de información.
    • Es fácil de implementar.
    • Requiere pocos recursos computacionales.
    • Funciona rápidamente incluso en grandes conjuntos de datos.
    • Facilita el entrenamiento de modelos.
    • Es compatible con la mayoría de algoritmos.

    ¿Cuándo utilizar la imputación simple?

    • El porcentaje de valores faltantes es reducido.
    • Los datos faltantes son MCAR (Missing Completely At Random).
    • Se necesita una solución rápida.
    • La variable tiene una distribución relativamente estable.
    • Se trabaja en fases iniciales de exploración de datos.

    También suele utilizarse como línea base antes de probar técnicas más avanzadas.

    Ventajas

    • Implementación sencilla.
    • Bajo coste computacional.
    • Fácil interpretación.
    • Mantiene el tamaño del dataset.
    • Compatible con pipelines de Machine Learning.
    • Adecuada para grandes volúmenes de datos.
    • Disponible en la mayoría de herramientas analíticas.

    Desventajas

    • Introduce valores artificiales.
    • Reduce la variabilidad de los datos.
    • Puede alterar distribuciones originales.
    • No tiene en cuenta relaciones entre variables.
    • Puede introducir sesgos.

    Por ejemplo, si una variable presenta una distribución muy asimétrica, imputar mediante la media puede generar valores poco representativos.

    Limitaciones

    • No recupera los valores reales perdidos.
    • Ignora correlaciones entre variables.
    • Puede infraestimar la varianza.
    • Reduce la dispersión de los datos.
    • Puede afectar a la calidad de algunos modelos.
    • No suele ser adecuada para grandes cantidades de datos faltantes.

    Por esta razón, cuando el porcentaje de valores ausentes es elevado suelen considerarse métodos más avanzados como KNN Imputation o MICE.

    Comparación con otras técnicas de tratamiento

    CaracterísticaImputación SimpleKNN ImputationMICE
    ComplejidadBajaMediaAlta
    Coste computacionalBajoMedioAlto
    Utiliza relaciones entre variablesNo
    Facilidad de implementaciónAltaMediaBaja
    Calidad de la imputaciónMediaAltaMuy alta
    EscalabilidadAltaMediaBaja

    Imputación Simple vs Eliminación de Registros

    AspectoImputación SimpleEliminación
    Conserva observacionesNo
    Mantiene tamaño de muestraNo
    Introduce estimacionesNo
    Riesgo de pérdida de informaciónBajoAlto
    Facilidad de aplicaciónAltaAlta

    Impacto en Machine Learning

    Muchos algoritmos requieren datos completos para poder entrenarse correctamente.

    Por ejemplo:

    • Regresión lineal.
    • Regresión logística.
    • SVM.
    • Redes neuronales.
    • K-Means.

    La imputación simple permite generar conjuntos de datos compatibles con estos algoritmos sin eliminar observaciones potencialmente valiosas. Sin embargo, debe utilizarse con precaución cuando los datos faltantes presentan patrones complejos o porcentajes elevados.

    Implementación en Python

    Imputación mediante la media

    from sklearn.impute import SimpleImputer
    import pandas as pd
    
    df = pd.DataFrame({
        "edad": [25, 30, None, 35]
    })
    
    imputer = SimpleImputer(
        strategy="mean"
    )
    
    df["edad"] = imputer.fit_transform(
        df[["edad"]]
    )
    
    print(df)
    

    Imputación mediante la mediana

    from sklearn.impute import SimpleImputer
    
    imputer = SimpleImputer(
        strategy="median"
    )
    
    df["salario"] = imputer.fit_transform(
        df[["salario"]]
    )
    

    Imputación mediante la moda

    from sklearn.impute import SimpleImputer
    
    imputer = SimpleImputer(
        strategy="most_frequent"
    )
    
    df["ciudad"] = imputer.fit_transform(
        df[["ciudad"]]
    )
    

    Imputación mediante un valor constante

    from sklearn.impute import SimpleImputer
    
    imputer = SimpleImputer(
        strategy="constant",
        fill_value="Desconocido"
    )
    
    df["ciudad"] = imputer.fit_transform(
        df[["ciudad"]]
    )
    

    Uso dentro de un Pipeline

    from sklearn.pipeline import Pipeline
    from sklearn.impute import SimpleImputer
    from sklearn.ensemble import RandomForestClassifier
    
    pipeline = Pipeline([
        ("imputer",
         SimpleImputer(strategy="median")),
        ("model",
         RandomForestClassifier())
    ])
    
    pipeline.fit(X_train, y_train)
    

    Buenas prácticas

    Al utilizar imputación simple es recomendable:

    • Analizar previamente el porcentaje de datos faltantes.
    • Comprender el mecanismo de ausencia de los datos.
    • Utilizar la mediana cuando existan outliers.
    • Utilizar la moda para variables categóricas.
    • Ajustar el imputador únicamente con los datos de entrenamiento.
    • Comparar el rendimiento frente a métodos más avanzados.
    • Evaluar el impacto sobre las distribuciones originales.

    Conclusión

    La imputación simple es una de las técnicas más utilizadas para gestionar datos faltantes debido a su simplicidad, rapidez y facilidad de implementación. Consiste en sustituir los valores ausentes mediante estadísticas básicas como la media, la mediana, la moda o un valor constante, permitiendo conservar observaciones que de otro modo podrían perderse.

    Aunque presenta limitaciones y no tiene en cuenta las relaciones entre variables, sigue siendo una excelente solución cuando el porcentaje de datos faltantes es reducido y se necesita una estrategia eficiente y fácilmente interpretable. Además, suele constituir el punto de partida para comparar posteriormente métodos más avanzados como KNN Imputation o Imputación Múltiple (MICE).

  • Tratamiento de Valores Nulos

    Tratamiento de Datos Faltantes

    ¿Qué son los datos faltantes?

    Los datos faltantes, también conocidos como valores nulos o valores ausentes, son observaciones para las cuales no existe información registrada en una o más variables de un conjunto de datos. Dependiendo del sistema utilizado, pueden representarse mediante valores como NULL, NaN, None, #N/A o simplemente campos vacíos.

    La presencia de datos faltantes es uno de los problemas más frecuentes en Data Science, Machine Learning, Business Intelligence y analítica de datos. De hecho, es raro encontrar conjuntos de datos reales que no contengan algún nivel de información ausente.

    ¿Por qué es importante gestionar los datos faltantes?

    La calidad de cualquier análisis depende directamente de la calidad de los datos utilizados. Cuando existen valores ausentes, se generan vacíos de información que pueden afectar significativamente a los resultados obtenidos.

    Los datos faltantes pueden provocar:

    • Pérdida de información relevante.
    • Disminución del tamaño efectivo de la muestra.
    • Sesgos estadísticos.
    • Reducción de la precisión de los modelos.
    • Conclusiones incorrectas.
    • Problemas durante el entrenamiento de algoritmos.

    Por ejemplo, si una empresa desea identificar cuáles son los productos más vendidos por color y una de sus tiendas no registra correctamente esa información, los resultados del análisis podrían conducir a decisiones erróneas sobre inventario, compras o marketing.

    Por esta razón, el tratamiento de los datos faltantes constituye una de las etapas más importantes dentro de la limpieza y preparación de datos.

    ¿Por qué aparecen los datos faltantes?

    Existen numerosas razones por las que un conjunto de datos puede contener valores ausentes.

    • Errores de captura: Los datos nunca fueron introducidos en el sistema. Ejemplo: formularios incompletos, campos opcionales no rellenados y omisiones humanas.
    • Problemas de privacidad: Algunos usuarios deciden no proporcionar determinada información personal. Correo electrónico, número de teléfono, ingresos, información médica.
    • Fallos técnicos: Pueden producirse errores durante la transmisión de datos, la integración de sistemas, el almacenamiento o la captura mediante sensores.
    • Pérdida de información: La corrupción de archivos o interrupciones en sistemas de comunicación también pueden provocar la desaparición de datos válidos.
    • Reglas de negocio: En algunos casos la ausencia de información es completamente normal y esperada.

    ¿Cómo identificar datos faltantes?

    Antes de decidir cómo tratarlos, es necesario detectarlos y cuantificarlos.

    Las técnicas más habituales incluyen:

    • Inspección visual de los datos.
    • Revisión de muestras aleatorias.
    • Estadísticas descriptivas.
    • Perfilado de datos.
    • Validación de datos.
    • Análisis de porcentajes de ausencia.

    Algunas preguntas útiles son:

    • ¿Cuántos valores faltan?
    • ¿Qué variables están afectadas?
    • ¿Existe algún patrón?
    • ¿La ausencia afecta a variables importantes?

    Tipos de datos faltantes

    No todos los valores ausentes tienen el mismo significado. Comprender el motivo de la ausencia es fundamental para seleccionar la estrategia de tratamiento adecuada.

    Datos estructuralmente faltantes

    Son datos cuya ausencia es esperada debido al contexto del problema.

    Por ejemplo:

    AsmaFrecuencia Inhalador
    Dos veces al día
    Una vez al día
    NoNULL

    La ausencia de información sobre el inhalador es completamente lógica porque la persona no tiene asma. En estos casos, normalmente no es necesario imputar ningún valor.

    Missing Completely At Random (MCAR)

    Los datos faltan completamente al azar. La probabilidad de que un dato esté ausente es la misma para todas las observaciones. Ejemplos:

    • Fallo aleatorio de un sensor.
    • Error aleatorio de transmisión.
    • Problema temporal de captura.

    Características:

    • No existe patrón identificable.
    • El riesgo de sesgo es bajo.
    • Son los más sencillos de tratar.

    Missing At Random (MAR)

    La ausencia depende de otras variables observadas.

    Ejemplo práctico de MAR

    En el dataset “Predict H1N1 and Seasonal Flu Vaccines” de DrivenData, la variable employment_industry presenta aproximadamente un 50% de valores faltantes.

    A primera vista podría parecer un problema grave de calidad de datos. Sin embargo, al analizar la relación entre employment_industry y employment_status mediante una tabla de contingencia, se observa que los valores faltantes aparecen casi exclusivamente en personas desempleadas o fuera del mercado laboral.

    pd.crosstab(
        df['employment_status'],
        df['employment_industry'].isna()
    )
    employment_industry	 False	 True
    employment_status		
              Employed	 13377	  183
    Not in Labor Force	     0	10231
            Unemployed	     0	 1453
    

    ¿Cómo interpretar estos datos?

    • Entender qué significa False y True: df['employment_industry'].isna() genera una serie booleana donde:
      • False: existe valor.
      • True: es NaN
    • Employed muestra que 13377 empleados tienen industria asignada.
    • Not in Labor Force muestra que ninguna persona fuera de la fuerza laboral tiene industria. Todas tienen NaN.
    • Unemployed muestra que ningún desempleado tiene industria. Todos tienen NaN.

    Observa que:

    • Employed → casi todos tienen industria
    • Not in Labor Force → ninguno tiene industria
    • Unemployed → ninguno tiene industria

    Esto indica que la ausencia de información no es aleatoria, sino que depende de una variable observada employment_status. O sea ,employment_industry sólo se pregunta a personas empleadas.

    En este caso, el mecanismo de ausencia desde una perspectiva estadística estricta: se clasifica como MAR (Missing At Random), ya que la probabilidad de que falte el dato puede explicarse mediante información disponible en el conjunto de datos.

    Desde una perspectiva de negocio, también puede interpretarse como Missing Not Applicable (MNAR estructural) . La variable no está ausente por error. Está ausente porque la pregunta no aplica al individuo. La pregunta: ¿En qué industria trabaja? no tiene sentido para alguien desempleado.

    En un proyecto profesional puede documentarse de la siguiente manera:

    employment_industry presenta aproximadamente un 50% de valores nulos.

    El análisis mediante tablas de contingencia muestra que la ausencia depende completamente de la variable employment_status.

    Los individuos desempleados o fuera de la fuerza laboral no disponen de industria asociada, por lo que los valores ausentes parecen corresponder a casos donde la variable no aplica al individuo más que a pérdidas aleatorias de información.

    Por tanto, los valores ausentes se consideran ausencias estructurales dependientes de employment_status (MAR) y serán tratados como una categoría específica.

    ¿Qué hacer en estos casos?

    En estos casos la solución sería crear una categoría explícita que identifique la causa del valor faltante, por ejemplo: Not_Working.

    df['employment_industry'] = (
        df['employment_industry']
        .fillna('Not_Working')
    )

    Ya puedes documentar algo como:

    Conclusión de calidad de datos

    Variable% NulosTipo de ausenciaAcción
    employment_industry49.9%No aplicable (dependiente de employment_status)Crear categoría “Not_Working”

    Missing Not At Random (MNAR)

    La ausencia está relacionada con el propio valor que falta.

    Ejemplo:

    • Personas con ingresos muy elevados deciden no declarar sus ingresos.
    • Pacientes con problemas graves evitan responder determinadas preguntas médicas.

    Características:

    • Existe un patrón subyacente.
    • Puede introducir sesgos importantes.
    • Es el tipo más difícil de tratar.

    Missing Not At Random (MNAR): cuando la ausencia de datos también es información

    Missing Not At Random (MNAR) es cuando la probabilidad de que un valor esté ausente está relacionada con características del propio individuo o con información que no ha sido observada. En estos casos, puede ser que los registros con valores faltantes representen un grupo específico dentro de la población y no una simple muestra aleatoria.

    Durante el análisis exploratorio del proyecto Predict H1N1 and Seasonal Flu Vaccines se identificó un patrón muy claro de ausencia de datos que sugiere la existencia de un mecanismo MNAR. En lugar de encontrar valores faltantes distribuidos de manera independiente entre distintas variables, se observó que los mismos individuos tendían a presentar ausencias simultáneas en múltiples campos del cuestionario.

    Por ejemplo, las variables:

    • education
    • employment_status
    • marital_status
    • rent_or_own

    Presentaban valores faltantes altamente relacionados entre sí. Los registros con ausencia en una de estas variables tenían una elevada probabilidad de presentar también valores faltantes en las demás. Además, este mismo grupo de individuos mostraba ausencias en variables relacionadas con la salud y la situación personal, como:

    • health_worker
    • child_under_6_months
    • chronic_med_condition

    e incluso en variables de percepción y opinión sobre las vacunas, entre ellas:

    • opinion_h1n1_risk
    • opinion_h1n1_vacc_effective
    • opinion_h1n1_sick_from_vacc
    • opinion_seas_risk
    • opinion_seas_vacc_effective
    • opinion_seas_sick_from_vacc

    Las correlaciones entre los indicadores de ausencia de estas variables fueron especialmente elevadas. Por ejemplo:

    • health_worker y child_under_6_months presentaron una correlación de ausencia cercana a 0.97.
    • health_worker y chronic_med_condition mostraron correlaciones superiores a 0.80.
    • education, employment_status, marital_status y rent_or_own también mostraron correlaciones de ausencia muy elevadas, superiores a 0.70 en numerosos casos.

    Este comportamiento resulta difícil de explicar mediante un mecanismo completamente aleatorio. Si los valores faltantes fueran independientes, las ausencias aparecerían distribuidas de forma dispersa entre los registros. Sin embargo, lo observado fue la existencia de un subconjunto de encuestados que parecía haber omitido responder bloques completos de preguntas.

    La evidencia se reforzó al analizar la relación entre los valores faltantes y las variables objetivo del problema: la vacunación contra la gripe H1N1 y la gripe estacional. En varias variables, los individuos con información ausente mostraban tasas de vacunación significativamente distintas de las observadas en las categorías existentes.

    Un ejemplo especialmente representativo fue la variable health_insurance. Mientras que los individuos con seguro médico presentaban tasas de vacunación considerablemente más altas, el grupo con información desconocida mostraba un comportamiento claramente diferenciado tanto de quienes tenían seguro como de quienes declaraban no tenerlo. Esto sugiere que la ausencia de respuesta estaba asociada a características específicas de los encuestados.

    Otro caso relevante fue el de las variables doctor_recc_h1n1 y doctor_recc_seasonal. Los individuos con valores faltantes en estas variables también presentaban una elevada proporción de valores desconocidos en health_insurance, lo que evidenciaba un patrón común de no respuesta. Además, sus tasas de vacunación diferían notablemente de las observadas en los grupos que sí habían respondido a estas preguntas.

    Estos hallazgos muestran que los valores faltantes no eran simplemente datos perdidos, sino una característica adicional de los individuos. En otras palabras, la ausencia de información contenía información.

    Por este motivo, en lugar de aplicar imputaciones tradicionales basadas en la moda o en otras medidas de tendencia central, se optó por conservar los valores faltantes como una categoría específica denominada Unknown en aquellas variables donde la ausencia mostraba evidencia de ser informativa.

    Esta estrategia permite que los algoritmos de Machine Learning identifiquen posibles patrones asociados a la falta de respuesta y aprovechen dicha información durante el entrenamiento. En problemas de clasificación como este, donde la métrica de evaluación es ROC-AUC, preservar la información contenida en los patrones de ausencia puede resultar tan importante como conservar los propios valores observados.

    Este caso constituye un ejemplo práctico de cómo el análisis detallado de los datos faltantes puede revelar comportamientos ocultos en la población estudiada y demuestra que, en muchos escenarios reales, los valores ausentes no deben considerarse simplemente como datos perdidos, sino como una fuente potencial de información predictiva.

    Aquí tienes una sección orientada a un artículo técnico y educativo:

    Cómo detectar patrones MNAR mediante el análisis de valores faltantes en Python

    Una de las formas más efectivas de identificar posibles mecanismos Missing Not At Random (MNAR) consiste en analizar si los valores faltantes aparecen agrupados en los mismos registros. Cuando múltiples variables presentan ausencias simultáneas de forma recurrente, puede existir un patrón de no respuesta que aporte información relevante para el modelo.

    Crear una matriz de valores faltantes

    El primer paso consiste en transformar los valores faltantes en variables binarias, donde:

    • 1 indica que el valor está ausente.
    • 0 indica que el valor está presente.
    missing_df = df.isnull().astype(int)

    Cada columna representa ahora el patrón de ausencia de una variable.

    Calcular correlaciones entre valores faltantes

    Una vez creada la matriz de ausencia, es posible calcular las correlaciones entre los patrones de valores faltantes. Por ejemplo, para analizar qué variables presentan ausencias relacionadas con health_worker:

    missing_df.corr()['health_worker'].sort_values(ascending=False)

    La salida mostrará qué variables tienden a presentar valores faltantes en los mismos registros. En este proyecto se observaron correlaciones muy elevadas:

    child_under_6_months     0.97
    chronic_med_condition    0.82
    education                0.73
    marital_status           0.73
    employment_status        0.72
    rent_or_own              0.60

    Estas correlaciones sugieren que los individuos que no respondieron a una determinada pregunta también omitieron otras preguntas relacionadas.

    Filtrar únicamente las correlaciones relevantes

    Cuando existen muchas variables, resulta útil visualizar únicamente aquellas correlaciones superiores a un determinado umbral df.coor() permite identificar rápidamente las relaciones más fuertes entre patrones de ausencia.

    corrs = missing_df.corr()['health_worker']
    
    corrs[
        (corrs > 0.5) &
        (corrs < 1)
    ].sort_values(ascending=False)
    

    Analizar visualmente la coincidencia de valores faltantes

    pd.crosstab() crea una tabla de contingencia que muestra cuántas observaciones pertenecen simultáneamente a cada combinación de categorías.

    pd.crosstab(
        df['employment_status'].isna(),
        df['marital_status'].isna()
    )

    Primero se transforman ambas variables en valores booleanos:

    • False: el dato está presente.
    • True: el dato está ausente (NaN).

    La tabla resultante es:

    marital_status     False   True
    employment_status
    False              25103    141
    True                 196   1267

    Interpretación:

    employment_statusmarital_statusRegistros
    PresentePresente25.103
    PresenteAusente141
    AusentePresente196
    AusenteAusente1.267

    El dato más relevante es la celda:

    employment_status = True
    marital_status = True

    que contiene:

    1267 registros

    Esto significa que 1.267 personas tienen valores faltantes simultáneamente en ambas variables, lo que sugiere que las ausencias no se producen de forma independiente y podrían formar parte de un mismo patrón de no respuesta.

    Crear un mapa de calor de los patrones de ausencia

    Una forma visual de identificar relaciones entre valores faltantes consiste en representar la matriz de correlaciones mediante un mapa de calor.

    cols = [
        'education',
        'employment_status',
        'marital_status',
        'rent_or_own',
        'health_worker',
        'child_under_6_months',
        'chronic_med_condition',
        'opinion_h1n1_risk',
        'opinion_h1n1_vacc_effective',
        'opinion_h1n1_sick_from_vacc',
        'opinion_seas_risk',
        'opinion_seas_vacc_effective',
        'opinion_seas_sick_from_vacc'
    ]
    
    corr_missing = (df[cols].isnull().astype(int).corr())
    
    plt.figure(figsize=(12,10))
    
    sns.heatmap(corr_missing, annot=True, cmap='Reds', fmt='.2f')
    
    plt.title('Patrón MNAR detectado en el conjunto de datos')
    plt.show()
    

    Las zonas con colores más intensos indican grupos de variables cuyos valores faltantes aparecen conjuntamente.

    Interpretación de los resultados

    Cuando varias variables presentan:

    • Correlaciones elevadas entre sus patrones de ausencia.
    • Coincidencia frecuente de valores faltantes en los mismos registros.
    • Comportamientos diferenciados respecto a la variable objetivo.

    Es razonable sospechar la existencia de un mecanismo MNAR (Missing Not At Random).

    En estos casos, imputar automáticamente los valores faltantes mediante la media, la mediana o la moda puede provocar una pérdida de información. Una estrategia habitual consiste en conservar los valores faltantes como una categoría específica (Unknown) para permitir que el modelo capture la señal contenida en el propio patrón de ausencia.

    Comparación entre tipos de datos faltantes

    TipoExiste una causa identificableRiesgo de sesgoDificultad de tratamiento
    Estructuralmente faltantesBajoBaja
    MCARNoBajoBaja
    MARMedioMedia
    MNARAltoAlta

    Estrategias de tratamiento de datos faltantes

    Una vez identificado el problema, existen diferentes formas de gestionarlo.

    • Eliminación de registros: Consiste en eliminar las filas que contienen datos faltantes. Suele utilizarse cuando:
      • La cantidad de valores faltantes es reducida.
      • Los datos son MCAR.
      • La pérdida de observaciones no afecta al análisis.
    • Eliminación de variables: Consiste en eliminar columnas con un porcentaje muy elevado de valores ausentes.
    • Imputación: La imputación consiste en reemplazar los valores faltantes mediante estimaciones. Las técnicas más utilizadas son:
      • Imputación Simple: Media, mediana, moda o valor constante
      • Imputación por KNN: Utiliza observaciones similares
      • Imputación Múltiple (MICE): Estima valores mediante modelos iterativos

    Métodos para series temporales

    • Cuando los datos tienen una dimensión temporal, pueden emplearse técnicas específicas. Algunas de las más utilizadas son:
    • LOCF: Última observación arrastrada hacia delante
    • NOCB: Próxima observación arrastrada hacia atrás
    • Interpolación: Estimación entre valores conocidos

    ¿Cuándo eliminar y cuándo imputar?

    La decisión depende del contexto y del volumen de datos faltantes.

    SituaciónEstrategia recomendada
    Menos del 5% de valores faltantesEliminación o imputación simple
    Variable poco relevanteEliminación
    Variable importanteImputación
    Datos MCAREliminación o imputación
    Datos MARImputación
    Datos MNARAnálisis específico del problema
    Más del 60% de valores faltantesEvaluar eliminar la variable

    Beneficios del tratamiento de datos faltantes

    • Mejora la calidad del dataset.
    • Reduce errores analíticos.
    • Incrementa la precisión de los modelos.
    • Disminuye sesgos.
    • Permite aprovechar más información.
    • Facilita el entrenamiento de algoritmos.
    • Incrementa la confianza en los resultados.

    Ventajas

    • Permite trabajar con conjuntos de datos incompletos.
    • Reduce el impacto de la pérdida de información.
    • Mejora la representatividad de la muestra.
    • Incrementa la calidad de los análisis.
    • Facilita la toma de decisiones basada en datos.

    Desventajas

    • Algunas técnicas introducen estimaciones artificiales.
    • Existe riesgo de introducir sesgos.
    • La imputación puede alterar distribuciones originales.
    • Algunas técnicas son computacionalmente costosas.
    • Requiere conocimiento del contexto de negocio.

    Limitaciones

    • Los datos faltantes nunca pueden recuperarse con total certeza.
    • Las imputaciones son estimaciones, no valores reales.
    • Los datos MNAR siguen siendo difíciles de modelar.
    • Una estrategia incorrecta puede degradar el rendimiento del modelo.
    • No existe una técnica universalmente mejor.

    Por ello, comprender el origen de la ausencia suele ser más importante que la técnica utilizada para corregirla.

    Aplicaciones en Data Science y Machine Learning

    El tratamiento de datos faltantes aparece prácticamente en cualquier proyecto basado en datos. La mayoría de los algoritmos requieren datos completos o una gestión adecuada de los valores faltantes antes del entrenamiento.

    Implementación en Python

    Detectar valores nulos

    import pandas as pd
    
    df = pd.read_csv("datos.csv")
    
    print(df.isnull().sum())
    

    Calcular porcentaje de valores faltantes

    porcentaje_nulos = (
        df.isnull().mean() * 100
    )
    
    print(porcentaje_nulos)
    

    Eliminar registros con valores faltantes

    df_sin_nulos = df.dropna()
    

    Eliminar columnas con valores faltantes

    df = df.dropna(axis=1)
    

    Imputación simple

    from sklearn.impute import SimpleImputer
    
    imputer = SimpleImputer(
        strategy="mean"
    )
    
    df["edad"] = imputer.fit_transform(
        df[["edad"]]
    )
    

    Buenas prácticas

    • Identificar primero el tipo de ausencia.
    • Analizar el porcentaje de valores faltantes.
    • Comprender el contexto de negocio.
    • Evitar eliminar datos innecesariamente.
    • Comparar diferentes estrategias.
    • Documentar todas las transformaciones realizadas.
    • Validar el impacto sobre el modelo final.

    Conclusión

    Los datos faltantes constituyen uno de los problemas más frecuentes en cualquier proyecto de análisis de datos. Su presencia puede afectar significativamente la calidad de los análisis, introducir sesgos y reducir la precisión de los modelos predictivos.

    Sin embargo, no todos los datos faltantes son iguales. Comprender si la ausencia es estructural, MCAR, MAR o MNAR resulta fundamental para seleccionar la estrategia adecuada. Una vez identificado el origen del problema, pueden aplicarse técnicas como la eliminación de registros, la eliminación de variables o diferentes métodos de imputación.

    Más que una tarea técnica aislada, el tratamiento de datos faltantes es un proceso de análisis y toma de decisiones que busca preservar la mayor cantidad posible de información sin comprometer la fiabilidad de los resultados. Por ello, constituye una etapa esencial dentro de cualquier flujo de trabajo de Data Science y Machine Learning.

  • Validación de Datos

    ¿Qué es la Validación de Datos?

    La validación de datos (Data Validation) es el proceso de verificar que los datos cumplen una serie de reglas, restricciones y criterios de calidad antes de ser utilizados en análisis, informes, procesos de negocio o modelos de Machine Learning.

    Su objetivo principal es garantizar que los datos sean correctos, completos, consistentes y adecuados para el propósito previsto.

    La validación permite detectar errores, anomalías e inconsistencias antes de que afecten a la calidad de los análisis o al rendimiento de los modelos predictivos.

    Por ejemplo, si una columna denominada “Edad” contiene valores negativos o superiores a 120 años, un proceso de validación debería identificar esos registros como inválidos.

    ¿Por qué es importante la validación de datos?

    Los datos pueden proceder de múltiples fuentes:

    • Bases de datos.
    • Formularios web.
    • Sistemas ERP.
    • CRM.
    • APIs.
    • Sensores IoT.
    • Archivos CSV o Excel.

    Durante su captura o integración pueden producirse errores que comprometan la calidad de la información.

    Algunos ejemplos son:

    • Campos obligatorios vacíos.
    • Fechas incorrectas.
    • Valores fuera de rango.
    • Registros duplicados.
    • Formatos inconsistentes.
    • Relaciones inválidas entre tablas.

    La validación ayuda a detectar estos problemas antes de que se propaguen a otras etapas del proyecto.

    ¿Cómo funciona la validación de datos?

    El proceso consiste en definir reglas de calidad y comprobar si los datos las cumplen. Generalmente se siguen los siguientes pasos:

    1. Definir reglas de validación.
    2. Analizar los datos.
    3. Detectar incumplimientos.
    4. Generar alertas o informes.
    5. Corregir o rechazar registros inválidos.
    6. Volver a verificar los datos.

    Las reglas pueden aplicarse a:

    • Una columna individual.
    • Varias columnas simultáneamente.
    • Una tabla completa.
    • Múltiples tablas relacionadas.

    Tipos de validación de datos

    • Validación de rango: Comprueba que un valor se encuentre dentro de límites permitidos.
    • Validación de formato: Verifica que los datos sigan un formato determinado. Ejmp.: emails, teléfono, códigos postales, etc.
    • Validación de obligatoriedad: Comprueba que determinados campos no estén vacíos.
    • Validación de unicidad: Garantiza que ciertos valores no se repitan.
    • Validación de consistencia: Verifica que diferentes campos sean coherentes entre sí. Ejmp: fecha inicio / fecha fin.
    • Validación referencial: Comprueba relaciones entre tablas. Ejemplo: Cliente existente antes de crear un pedido, producto válido antes de registrar una venta.

    Beneficios de la validación de datos

    • Mejora la calidad de los datos.
    • Reduce errores analíticos.
    • Incrementa la fiabilidad de los modelos.
    • Facilita el cumplimiento normativo.
    • Evita problemas operativos.
    • Incrementa la confianza en los resultados.
    • Reduce costes derivados de datos incorrectos.

    ¿Cuándo utilizar la validación de datos?

    • Durante la captura de datos.
    • En procesos ETL.
    • Antes del análisis exploratorio.
    • Antes de entrenar modelos.
    • Durante integraciones entre sistemas.
    • En entornos productivos.
    • Como parte de la monitorización continua.

    La detección temprana de errores suele ser más eficiente que corregirlos posteriormente.

    Ventajas

    • Detecta errores rápidamente.
    • Automatiza controles de calidad.
    • Reduce problemas en etapas posteriores.
    • Mejora la fiabilidad de los análisis.
    • Facilita auditorías de datos.
    • Puede integrarse en pipelines automatizados.
    • Incrementa la confianza en los datos.

    Desventajas

    Aunque es una práctica fundamental, también presenta algunos inconvenientes:

    • Requiere definir reglas adecuadas.
    • Puede aumentar la complejidad de los procesos.
    • Algunas validaciones son costosas computacionalmente.
    • Puede generar falsos positivos.
    • Necesita mantenimiento cuando cambian los requisitos del negocio.

    Limitaciones

    La validación de datos presenta ciertas limitaciones:

    • No corrige automáticamente todos los errores.
    • No detecta todos los problemas semánticos.
    • Depende de las reglas definidas.
    • Puede pasar por alto anomalías desconocidas.
    • No garantiza datos perfectos.

    Un dato puede cumplir todas las reglas técnicas y seguir siendo incorrecto desde el punto de vista del negocio.

    Comparación entre validación y limpieza de datos

    AspectoValidación de DatosLimpieza de Datos
    ObjetivoDetectar problemasCorregir problemas
    Define reglasNo necesariamente
    Corrige erroresNo siempre
    AutomatizaciónAltaMedia
    PrevenciónParcialmente
    DiagnósticoParcialmente

    La validación identifica incumplimientos mientras que la limpieza se centra en corregirlos.

    Comparación entre validación y perfilado de datos

    AspectoValidación de DatosPerfilado de Datos
    Basado en reglasNo necesariamente
    Detecta incumplimientos
    Analiza estadísticasLimitado
    Genera métricas descriptivasNo principalmente
    Control de calidadAltoMedio

    El perfilado ayuda a comprender los datos y la validación verifica si cumplen criterios específicos.

    Aplicaciones en Data Science y Machine Learning

    La validación de datos es fundamental en:

    • Machine Learning supervisado.
    • Machine Learning no supervisado.
    • Business Intelligence.
    • Ingeniería de datos.
    • Sistemas de recomendación.
    • Detección de fraude.
    • Analítica financiera.
    • Analítica de clientes.
    • Procesamiento de lenguaje natural.
    • Visión por computador.

    Cualquier proyecto basado en datos requiere algún nivel de validación para garantizar la calidad de la información.

    Impacto en los modelos de Machine Learning

    Los modelos predictivos pueden verse afectados por:

    • Valores fuera de rango.
    • Etiquetas incorrectas.
    • Registros incompletos.
    • Variables inconsistentes.
    • Errores de formato.

    Una validación adecuada ayuda a:

    • Reducir ruido.
    • Mejorar la precisión.
    • Disminuir sesgos.
    • Aumentar la robustez del modelo.

    En muchos casos, mejorar la calidad de los datos genera más beneficios que modificar el algoritmo utilizado.

    Implementación en Python

    Validar valores nulos

    import pandas as pd
    
    df = pd.read_csv("datos.csv")
    
    nulos = df.isnull().sum()
    
    print(nulos)
    

    Validar rangos numéricos

    edades_invalidas = df[
        (df["edad"] < 0) |
        (df["edad"] > 120)
    ]
    
    print(edades_invalidas)
    

    Validar unicidad

    duplicados = df[
        df["id_cliente"].duplicated()
    ]
    
    print(duplicados)
    

    Validar formato de correo electrónico

    import re
    
    patron = r"^[\w\.-]+@[\w\.-]+\.\w+$"
    
    emails_invalidos = df[
        ~df["email"].str.match(
            patron,
            na=False
        )
    ]
    
    print(emails_invalidos)
    

    Validar fechas

    fechas_invalidas = df[
        df["fecha_fin"] <
        df["fecha_inicio"]
    ]
    
    print(fechas_invalidas)
    

    Validación automática con Pandera

    Una de las bibliotecas más utilizadas para validar datos en Python es Pandera.

    pip install pandera

    Ejemplo básico

    import pandera as pa
    from pandera import Column, DataFrameSchema
    
    schema = DataFrameSchema({
        "edad": Column(
            int,
            checks=pa.Check.in_range(
                min_value=0,
                max_value=120
            )
        )
    })
    
    schema.validate(df)
    

    En caso de incumplimiento, Pandera generará una excepción indicando los registros inválidos.

    Buenas prácticas

    Al implementar validaciones es recomendable:

    • Definir reglas claras desde el inicio.
    • Automatizar validaciones repetitivas.
    • Documentar todas las reglas de negocio.
    • Validar datos antes de transformarlos.
    • Registrar incidencias detectadas.
    • Revisar periódicamente las reglas.
    • Integrar la validación dentro de pipelines ETL y ML.

    Conclusión

    La validación de datos es un proceso fundamental para garantizar que la información utilizada en análisis y modelos de Machine Learning cumpla criterios mínimos de calidad, consistencia y fiabilidad. Mediante la aplicación de reglas específicas, permite detectar errores antes de que afecten a los resultados o generen decisiones incorrectas.

    Aunque no sustituye a la limpieza de datos ni al perfilado, constituye una pieza clave dentro de cualquier estrategia de calidad de datos. Una validación adecuada reduce riesgos, mejora la confianza en la información y contribuye a desarrollar modelos analíticos más precisos y robustos.

  • Perfilado de Datos (Data Profiling)

    Guía completa para comprender y evaluar un conjunto de datos

    Todo proyecto de Ciencia de Datos comienza con una pregunta fundamental: ¿qué calidad tienen los datos con los que voy a trabajar?

    Antes de entrenar modelos de Machine Learning, construir visualizaciones o realizar análisis estadísticos, es imprescindible conocer la estructura, el contenido y el estado del conjunto de datos. Un modelo predictivo será tan bueno como la calidad de la información utilizada para entrenarlo, por lo que identificar problemas desde el inicio puede ahorrar muchas horas de trabajo y evitar decisiones incorrectas durante las etapas posteriores del proyecto.

    El Data Profiling constituye la primera fase del proceso de preparación de datos. Su objetivo es realizar una evaluación objetiva del conjunto de datos para conocer su estructura, calidad y características principales antes de comenzar el Análisis Exploratorio de Datos (EDA), la ingeniería de características o el entrenamiento de modelos.

    ¿Qué es el Data Profiling?

    El Data Profiling (perfilado de datos) es el proceso sistemático de inspeccionar, analizar y resumir las características estructurales y de calidad de un conjunto de datos.

    Durante esta fase se recopilan estadísticas y métricas que permiten describir objetivamente el estado del dataset sin realizar todavía un análisis profundo de su contenido o de las relaciones entre variables.

    El Data Profiling responde preguntas como:

    • ¿Cuántos registros y variables contiene el conjunto de datos?
    • ¿Qué tipo de dato tiene cada columna?
    • ¿Existen valores faltantes?
    • ¿Hay registros duplicados?
    • ¿Cuál es la cardinalidad de cada variable?
    • ¿Existen variables constantes o con muy poca variabilidad?
    • ¿Se observan problemas evidentes de calidad de los datos?
    • ¿Qué estadísticas descriptivas presentan las variables numéricas?

    En otras palabras, el Data Profiling proporciona una radiografía del conjunto de datos, permitiendo conocer su estado antes de comenzar cualquier análisis.

    Es importante destacar que el Data Profiling no busca descubrir patrones ni relaciones entre variables. Ese trabajo corresponde al Análisis Exploratorio de Datos (EDA), cuya finalidad es comprender el comportamiento del dataset y fundamentar las decisiones de preprocesamiento y modelado.

    ¿Por qué es importante el Data Profiling?

    En la mayoría de proyectos los datos proceden de múltiples fuentes:

    • Bases de datos relacionales.
    • Sistemas ERP.
    • CRM.
    • APIs.
    • Archivos CSV o Excel.
    • Sensores IoT.
    • Aplicaciones web.
    • Plataformas de recopilación de datos.

    Cada una de estas fuentes puede introducir problemas distintos:

    • Valores faltantes.
    • Registros duplicados.
    • Tipos de datos incorrectos.
    • Variables con escasa variabilidad.
    • Categorías inconsistentes.
    • Errores de codificación.
    • Variables innecesarias.

    Si estos problemas no se detectan desde el principio, pueden propagarse durante todo el proyecto y afectar negativamente a las etapas posteriores.

    El Data Profiling permite detectar estas incidencias antes de invertir tiempo en limpieza de datos, ingeniería de características o entrenamiento de modelos.

    ¿Cómo funciona el Data Profiling?

    El perfilado de datos consiste en calcular automáticamente un conjunto de métricas descriptivas sobre el dataset.

    Entre las comprobaciones más habituales se encuentran:

    • Dimensiones del conjunto de datos.
    • Tipos de datos de cada variable.
    • Estadísticas descriptivas.
    • Número de valores únicos.
    • Cardinalidad.
    • Valores faltantes.
    • Registros duplicados.
    • Variables constantes.
    • Consumo de memoria.
    • Distribución básica de las categorías.

    Toda esta información se recopila en un informe que resume el estado inicial del conjunto de datos y sirve como punto de partida para el resto del proyecto.

    El objetivo no es decidir todavía cómo tratar los problemas detectados, sino identificarlos y documentarlos.

    Objetivos del Data Profiling

    El Data Profiling persigue varios objetivos fundamentales:

    • Comprender la estructura del conjunto de datos.
    • Evaluar la calidad de los datos disponibles.
    • Detectar problemas evidentes antes del análisis.
    • Identificar variables problemáticas.
    • Documentar las características del dataset.
    • Facilitar la planificación del proceso de limpieza.
    • Reducir errores durante las etapas posteriores del proyecto.

    En esta fase todavía no se decide cómo imputar valores faltantes, eliminar variables o construir nuevas características. Esas decisiones se tomarán posteriormente durante el EDA y la fase de ingeniería de características.

    Tipos de Data Profiling

    Dependiendo del objetivo del análisis, el perfilado puede centrarse en distintos aspectos del conjunto de datos.

    • Perfilado estructural: Analiza la organización general del dataset. Su objetivo es comprender cómo está construido el conjunto de datos. Incluye aspectos como:
      • Número de registros.
      • Número de variables.
      • Tipos de datos.
      • Consumo de memoria.
      • Longitud de campos.
      • Clasificación de variables.
    • Perfilado de contenido: Examina la información almacenada en cada variable. Este análisis permite detectar posibles anomalías en el contenido de las variables sin estudiar todavía su relación con otras variables. Normalmente incluye:
      • Valores mínimos y máximos.
      • Media, mediana y desviación estándar.
      • Valores únicos.
      • Cardinalidad.
      • Distribución de frecuencias.
      • Variables constantes.
    • Perfilado de calidad: Evalúa el estado general del conjunto de datos. Este perfilado proporciona una visión objetiva de la calidad de los datos disponibles y ayuda a planificar el proceso de limpieza. Entre las métricas más habituales se encuentran:
      • Completitud.
      • Unicidad.
      • Consistencia.
      • Validez.
      • Valores faltantes.
      • Registros duplicados.

    Secuencia de tareas del Data Profiling

    Aunque cada proyecto puede presentar necesidades específicas, el Data Profiling suele seguir una secuencia de trabajo bastante estable.

    Una metodología reproducible podría ser la siguiente:

    1. Cargar el conjunto de datos.
    2. Comprobar las dimensiones del dataset.
    3. Inspeccionar la estructura general mediante info().
    4. Clasificar las variables según su naturaleza (numéricas, categóricas, ordinales, binarias, identificadores, etc.).
    5. Obtener estadísticas descriptivas de las variables numéricas.
    6. Analizar la cardinalidad y los valores únicos de las variables categóricas.
    7. Detectar registros duplicados.
    8. Calcular el número y porcentaje de valores faltantes.
    9. Identificar variables constantes o con muy poca variabilidad.
    10. Documentar todos los hallazgos obtenidos.

    Esta secuencia permite construir un informe objetivo del estado inicial del conjunto de datos y constituye la base para las siguientes fases del proyecto.

    Resultado esperado del Data Profiling

    Al finalizar el Data Profiling debe disponerse de un conocimiento completo de la estructura y calidad del conjunto de datos. Concretamente, el analista debería ser capaz de responder a preguntas como:

    • ¿Cuál es el tamaño del dataset?
    • ¿Qué tipo de variables contiene?
    • ¿Qué variables presentan valores faltantes?
    • ¿Qué porcentaje de valores faltantes existe en cada variable?
    • ¿Existen registros duplicados?
    • ¿Hay variables constantes o con escasa variabilidad?
    • ¿Cuál es la cardinalidad de las variables categóricas?
    • ¿Se observan problemas de calidad que deban resolverse posteriormente?

    Es importante destacar que el resultado del Data Profiling no es un conjunto de datos limpio, sino un informe técnico que describe el estado inicial del dataset.

    Este informe constituye el punto de partida para la siguiente fase del proyecto: el Análisis Exploratorio de Datos (EDA). Mientras que el Data Profiling responde a la pregunta “¿Qué datos tengo?”, el EDA tratará de responder “¿Qué información contienen estos datos y cómo debo prepararlos para el modelado?”.

    Beneficios del Data Profiling

    Realizar un Data Profiling al inicio de un proyecto aporta numerosas ventajas, tanto desde el punto de vista técnico como organizativo.

    Entre sus principales beneficios destacan:

    • Comprender rápidamente la estructura del conjunto de datos.
    • Detectar problemas de calidad antes de iniciar el análisis.
    • Identificar variables que requieren limpieza o transformación.
    • Reducir errores durante las etapas de preparación de datos.
    • Facilitar la documentación del proyecto.
    • Establecer una base sólida para el Análisis Exploratorio de Datos (EDA).
    • Mejorar la reproducibilidad del flujo de trabajo.

    En proyectos complejos, dedicar tiempo al perfilado suele traducirse en una reducción significativa del tiempo invertido posteriormente en depuración y limpieza de datos.

    ¿Cuándo utilizar el Data Profiling?

    El Data Profiling debe realizarse siempre que se trabaje con un nuevo conjunto de datos o cuando éste haya sufrido modificaciones importantes.

    Los casos más habituales son:

    • Al iniciar un proyecto de Ciencia de Datos.
    • Antes del Análisis Exploratorio de Datos (EDA).
    • Antes de comenzar la limpieza de datos.
    • Durante procesos ETL (Extract, Transform and Load).
    • Al integrar nuevas fuentes de información.
    • Antes del entrenamiento de modelos de Machine Learning.
    • Durante auditorías de calidad de datos.

    En la práctica, el Data Profiling constituye el primer paso de cualquier flujo de trabajo de preparación de datos.

    Ventajas

    Entre las principales ventajas del Data Profiling destacan:

    • Proporciona una visión global del conjunto de datos.
    • Detecta problemas de calidad de forma temprana.
    • Reduce el riesgo de errores durante el análisis.
    • Facilita la planificación de la limpieza de datos.
    • Mejora la documentación del proyecto.
    • Puede automatizarse mediante herramientas especializadas.
    • Favorece la reproducibilidad del análisis.

    Desventajas

    Aunque resulta una etapa imprescindible, también presenta algunas limitaciones prácticas:

    • Puede generar una gran cantidad de información en datasets muy extensos.
    • Requiere tiempo cuando el número de variables es elevado.
    • Algunas anomalías necesitan una revisión manual.
    • No determina automáticamente la mejor estrategia de tratamiento de los datos.
    • Determinadas comprobaciones requieren conocimiento del dominio del problema.

    Limitaciones

    Es importante comprender qué puede y qué no puede hacer el Data Profiling.

    El perfilado de datos:

    • Identifica problemas, pero no los corrige.
    • Describe la estructura del dataset, pero no descubre relaciones complejas entre variables.
    • No determina automáticamente qué variables deben eliminarse.
    • No decide cómo imputar los valores faltantes.
    • No sustituye al Análisis Exploratorio de Datos (EDA).

    Por este motivo, el Data Profiling debe considerarse una fase de diagnóstico cuyo objetivo es describir objetivamente el estado del conjunto de datos antes de iniciar su análisis.

    Comparación entre Data Profiling y EDA

    Aunque ambos procesos se realizan al comienzo de un proyecto de Ciencia de Datos, persiguen objetivos diferentes.

    El Data Profiling responde a la pregunta:

    ¿Qué datos tengo?

    Mientras que el Análisis Exploratorio de Datos (EDA) intenta responder:

    ¿Qué información contienen estos datos y qué decisiones debo tomar para preparar el modelo?

    AspectoData ProfilingEDA
    ObjetivoDescribir la estructura y calidad del datasetComprender el comportamiento de los datos
    Pregunta principal¿Qué datos tengo?¿Qué información contienen?
    EnfoqueDescriptivoAnalítico
    Relaciones entre variablesNo
    Relación con la variable objetivoNo
    CorrelacionesNo
    Tratamiento de valores faltantesIdentificaciónAnálisis y decisión de imputación
    OutliersDetección inicialEstudio e interpretación
    VisualizacionesBásicasExtensivas
    ResultadoInforme técnico del datasetConclusiones para el preprocesamiento y modelado

    En otras palabras, el Data Profiling identifica los posibles problemas, mientras que el EDA estudia su impacto y permite decidir cómo resolverlos.

    Métricas habituales en el Data Profiling

    Durante el perfilado suelen calcularse diversas métricas que permiten evaluar rápidamente la estructura y la calidad del conjunto de datos.

    Porcentaje de valores faltantes

    Mide la proporción de datos ausentes en una variable.

    [
    \text{Nulos (%)}=\frac{\text{Valores nulos}}{\text{Valores totales}}\times100
    ]

    Completitud

    Indica el porcentaje de valores disponibles.

    [
    \text{Completitud}=\frac{\text{Valores no nulos}}{\text{Valores totales}}\times100
    ]

    Porcentaje de registros duplicados

    Permite evaluar la existencia de observaciones repetidas.

    [
    \text{Duplicados (%)}=\frac{\text{Registros duplicados}}{\text{Registros totales}}\times100
    ]

    Cardinalidad

    Representa el número de valores distintos presentes en una variable.

    Una cardinalidad muy elevada puede indicar identificadores, códigos o variables que requieran un tratamiento específico durante el preprocesamiento.

    Implementación en Python

    Una secuencia típica de Data Profiling puede implementarse de la siguiente manera.

    Cargar el conjunto de datos

    df = pd.read_csv("datos.csv")

    Obtener las dimensiones

    print(df.shape)

    Información general

    df.info()

    Tipos de datos

    print(df.dtypes)

    Estadísticas descriptivas

    Variables numéricas:

    df.describe()

    Variables categóricas:

    df.describe(include="object")

    Valores únicos

    df.nunique()

    Cardinalidad de variables categóricas

    for col in df.select_dtypes(include="object"):
        print(col, df[col].nunique())
    

    Registros duplicados

    duplicados = df.duplicated().sum()
    print(f"Duplicados: {duplicados}")

    Valores faltantes

    Número de valores faltantes:

    df.isnull().sum()

    Porcentaje de valores faltantes:

    (df.isnull().mean() * 100).sort_values(ascending=False)

    Distribución básica de una variable

    df["ciudad"].value_counts()

    Perfilado automático con ydata-profiling

    Cuando se desea obtener un informe completo de forma automática, una de las herramientas más utilizadas es ydata-profiling.

    Instalación

    pip install ydata-profiling

    Generación del informe

    from ydata_profiling import ProfileReport
    
    profile = ProfileReport(
        df,
        title="Informe de Data Profiling"
    )
    
    profile.to_file("data_profiling.html")
    

    El informe generado incluye automáticamente:

    • Información general del dataset.
    • Estadísticas descriptivas.
    • Distribuciones de variables.
    • Valores faltantes.
    • Cardinalidad.
    • Variables constantes.
    • Duplicados.
    • Consumo de memoria.
    • Alertas sobre posibles problemas de calidad.

    Aunque la herramienta también calcula correlaciones y otras métricas avanzadas, estas suelen utilizarse como apoyo durante el EDA y no sustituyen el análisis exploratorio realizado por el científico de datos.

    Buenas prácticas

    Al realizar un Data Profiling es recomendable:

    • Mantener separados el Data Profiling y el EDA.
    • Documentar todos los hallazgos relevantes.
    • Verificar los tipos de datos antes de comenzar el análisis.
    • Analizar siempre la presencia de valores faltantes y duplicados.
    • Identificar variables constantes o con escasa variabilidad.
    • Revisar la cardinalidad de las variables categóricas.
    • Automatizar el proceso cuando sea posible.
    • Repetir el perfilado tras cambios importantes en el conjunto de datos.

    Conclusión

    El Data Profiling constituye la primera etapa de cualquier proyecto de Ciencia de Datos. Su finalidad es describir objetivamente la estructura y la calidad del conjunto de datos mediante un conjunto de métricas y estadísticas que permiten conocer su estado inicial.

    A diferencia del Análisis Exploratorio de Datos (EDA), el Data Profiling no busca descubrir patrones ni tomar decisiones sobre el tratamiento de los datos. Su función es proporcionar un diagnóstico fiable que sirva como base para las siguientes fases del proyecto.

    Realizar un Data Profiling sistemático permite detectar problemas desde el inicio, documentar adecuadamente el conjunto de datos y establecer un flujo de trabajo reproducible. Una vez finalizada esta etapa, el proyecto está preparado para abordar el EDA, donde se estudiarán las relaciones entre variables, se analizará la variable objetivo y se definirán las estrategias de preprocesamiento e ingeniería de características que darán paso al entrenamiento de los modelos de Machine Learning.

  • Calidad de los Datos

    ¿Qué es la calidad de los datos en Data Science?

    La calidad de los datos (Data Quality) es el grado en que un conjunto de datos cumple los requisitos necesarios para ser utilizado de forma fiable en análisis, informes, procesos de negocio o modelos de Machine Learning.

    Un conjunto de datos de alta calidad debe reflejar la realidad de manera precisa, consistente y completa. Por el contrario, los datos con errores, inconsistencias o información incompleta pueden conducir a conclusiones incorrectas y decisiones equivocadas.

    En Data Science, suele decirse que un modelo es tan bueno como los datos con los que ha sido entrenado. Por esta razón, la calidad de los datos constituye uno de los pilares fundamentales de cualquier proyecto basado en datos.

    ¿Por qué es importante la calidad de los datos?

    Las organizaciones toman decisiones utilizando información procedente de múltiples fuentes:

    • Bases de datos.
    • Sistemas ERP.
    • CRM.
    • Aplicaciones web.
    • Sensores IoT.
    • APIs externas.
    • Redes sociales.

    Si los datos contienen errores o inconsistencias, las decisiones derivadas de ellos también pueden verse afectadas.

    Por ejemplo:

    ClienteEdad
    Ana35
    Pedro-10
    Marta42

    La edad negativa de Pedro representa un problema de calidad que puede distorsionar análisis estadísticos y modelos predictivos.

    ¿Cómo funciona la gestión de la calidad de los datos?

    La calidad de los datos no es una técnica específica, sino un conjunto de procesos destinados a evaluar, monitorizar y mejorar los datos.

    El proceso suele incluir:

    • Definición de estándares de calidad.
    • Evaluación de los datos.
    • Detección de errores.
    • Limpieza de datos.
    • Validación de reglas de negocio.
    • Monitorización continua.
    • Corrección de incidencias.

    El objetivo es garantizar que los datos sean adecuados para el uso previsto.

    Dimensiones de la calidad de los datos

    La calidad de los datos suele evaluarse mediante varias dimensiones.

    • Exactitud: mide si los datos representan correctamente la realidad. Se refiere a datos que no representan el valor real de un registro, puede deberse a un error de registro u otros.
    • Completitud: Evalúa si los datos contienen toda la información necesaria. Registros incompletos
    • Consistencia: Verifica que los datos mantengan coherencia entre sistemas y registros. Ejemplo: Madrid / Madird, existe una inconsistencia que debe corregirse.
    • Validez: Comprueba que los datos cumplen las reglas definidas. Por ejemplo: edad negativa (-35)
    • Unicidad: Garantiza que no existan registros duplicados.
    • Actualidad: Evalúa si los datos están actualizados.

    Ejemplo práctico

    Supongamos el siguiente conjunto de datos:

    ClienteEdadCiudadDimension
    Ana35Madrid
    PedroNULLBarcelonaCompletitud
    Ana35MadridUnicidad
    Luis180SevillaValidez
    Marta28Sevilla
    Marta28seevillaConsistencia

    Beneficios de una alta calidad de datos

    Entre los principales beneficios destacan:

    • Mayor fiabilidad de los análisis.
    • Mejor toma de decisiones.
    • Incremento de la precisión de los modelos.
    • Reducción de errores operativos.
    • Mayor confianza en los resultados.
    • Cumplimiento normativo más sencillo.
    • Menores costes derivados de datos incorrectos.

    ¿Cuándo evaluar la calidad de los datos?

    La calidad de los datos debe evaluarse:

    • Antes de iniciar un análisis.
    • Antes de entrenar modelos de Machine Learning.
    • Durante procesos ETL.
    • Al integrar nuevas fuentes de información.
    • Antes de generar informes ejecutivos.
    • De forma periódica en entornos productivos.

    La evaluación continua suele ser una práctica recomendada en organizaciones orientadas a los datos.

    Ventajas

    Las principales ventajas de trabajar con datos de alta calidad son:

    • Resultados más precisos.
    • Modelos más robustos.
    • Menor riesgo de errores.
    • Mejor experiencia de usuario.
    • Mayor eficiencia operativa.
    • Decisiones mejor fundamentadas.
    • Reducción de retrabajo.

    Desventajas

    Mantener altos niveles de calidad también implica algunos desafíos:

    • Requiere tiempo y recursos.
    • Puede implicar procesos complejos.
    • Necesita monitorización constante.
    • Puede requerir herramientas especializadas.
    • Algunas correcciones necesitan conocimiento del negocio.

    Limitaciones

    Aunque la calidad de los datos es fundamental, presenta ciertas limitaciones:

    • No elimina completamente el riesgo de errores.
    • No garantiza el éxito de un proyecto analítico.
    • Algunos problemas son difíciles de detectar.
    • La calidad puede degradarse con el tiempo.
    • Los criterios de calidad pueden variar según el contexto.

    Un conjunto de datos puede ser excelente para una aplicación y resultar insuficiente para otra.

    Comparación entre datos de alta y baja calidad

    CaracterísticaAlta CalidadBaja Calidad
    ExactitudAltaBaja
    CompletitudAltaBaja
    ConsistenciaAltaBaja
    DuplicadosEscasosFrecuentes
    Valores faltantesPocosMuchos
    FiabilidadAltaBaja
    Rendimiento de modelosMejorPeor

    Calidad de los datos vs Limpieza de datos

    Estos conceptos suelen confundirse, pero no son equivalentes.

    AspectoCalidad de los DatosLimpieza de Datos
    ObjetivoEvaluar y garantizar calidadCorregir problemas
    AlcanceEstratégicoOperativo
    Proceso continuoGeneralmente puntual
    Incluye monitorizaciónNo necesariamente
    Incluye correccionesParcialmente

    La limpieza de datos es una de las herramientas utilizadas para mejorar la calidad de los datos.

    Aplicaciones en Data Science y Machine Learning

    La calidad de los datos es crítica en:

    • Machine Learning supervisado.
    • Machine Learning no supervisado.
    • Business Intelligence.
    • Sistemas de recomendación.
    • Detección de fraude.
    • Analítica financiera.
    • Predicción de demanda.
    • Procesamiento de lenguaje natural.
    • Visión por computador.
    • Analítica de clientes.

    Prácticamente cualquier proyecto basado en datos depende de la calidad de la información disponible.

    Impacto en los modelos de Machine Learning

    Los problemas de calidad pueden afectar directamente al rendimiento de los modelos.

    Por ejemplo:

    • Valores faltantes pueden impedir el entrenamiento.
    • Duplicados pueden introducir sesgos.
    • Etiquetas incorrectas reducen la precisión.
    • Outliers pueden distorsionar algunos algoritmos.
    • Datos inconsistentes generan ruido.

    En muchos proyectos, mejorar la calidad de los datos produce mayores beneficios que cambiar de algoritmo.

    Métricas de calidad de los datos

    Algunas métricas utilizadas para evaluar la calidad son:

    Porcentaje de completitud

    $$Completitud=\frac{Valores\ no\ nulos}{Valores\ totales}\times100$$

    Tasa de duplicados

    $$Duplicados=\frac{Registros\ duplicados}{Registros\ totales}\times100$$

    Porcentaje de validez

    $$Validez=\frac{Registros\ válidos}{Registros\ totales}\times100$$

    Estas métricas ayudan a monitorizar la evolución de la calidad de los datos a lo largo del tiempo.

    Buenas prácticas

    Al gestionar la calidad de los datos es recomendable:

    • Definir reglas de calidad desde el inicio.
    • Automatizar validaciones.
    • Monitorizar métricas periódicamente.
    • Documentar incidencias.
    • Mantener procesos reproducibles.
    • Validar nuevas fuentes de datos.
    • Establecer estándares de gobernanza.

    Conclusión

    La calidad de los datos es un factor esencial para garantizar que la información utilizada en análisis, informes y modelos de Machine Learning sea fiable, consistente y útil. No se trata únicamente de corregir errores, sino de establecer procesos que permitan evaluar, controlar y mejorar continuamente la información disponible.

    Invertir en calidad de datos mejora la precisión de los análisis, incrementa la confianza en los resultados y contribuye al desarrollo de modelos más robustos y eficaces. En cualquier proyecto de Data Science, la calidad de los datos constituye una base imprescindible sobre la que construir decisiones y soluciones fundamentadas en evidencia.