Autor: Fernando

  • One-Hot Encoding

    Transformación de Variables Categóricas para Machine Learning

    En Data Science y Machine Learning, los algoritmos trabajan fundamentalmente con datos numéricos. Sin embargo, en la práctica es muy común encontrar variables categóricas que contienen valores de texto, como:

    • País.
    • Ciudad.
    • Color.
    • Categoría de producto.
    • Tipo de cliente.
    • Método de pago.

    Estas variables contienen información valiosa, pero no pueden utilizarse directamente en la mayoría de los modelos de Machine Learning. Para resolver este problema se utilizan técnicas de codificación (encoding), siendo una de las más populares y ampliamente utilizadas el One-Hot Encoding.

    Esta técnica transforma categorías en variables numéricas binarias, permitiendo que los algoritmos interpreten correctamente la información sin asumir relaciones inexistentes entre las categorías.

    ¿Qué es One-Hot Encoding?

    One-Hot Encoding es una técnica de codificación de variables categóricas que convierte cada categoría en una nueva variable binaria. Cada nueva variable puede tomar únicamente dos valores:

    • 1 si la observación pertenece a esa categoría.
    • 0 si no pertenece a esa categoría.

    Por este motivo también se conoce como:

    • Dummy Encoding.
    • Codificación Binaria de Categorías.
    • Variables Indicadoras (Indicator Variables).

    El objetivo es representar categorías de forma numérica sin introducir un orden artificial entre ellas.

    ¿Cómo Funciona?

    Supongamos una variable denominada “Color”:

    ItemColor
    ARojo
    BAzul
    CVerde

    Tras aplicar One-Hot Encoding se generan tres nuevas columnas:

    ItemRojoAzulVerde
    A100
    B010
    C001

    Cada observación activa únicamente la columna correspondiente a su categoría. De ahí proviene el término “One-Hot”, ya que solo una posición toma el valor 1 mientras las demás permanecen en 0.

    ¿Por qué es necesario?

    Supongamos que intentamos representar los colores utilizando números; aunque parece una solución válida, introduce un problema importante. El algoritmo podría interpretar que los valores tienen jerarquía o incluso asumir que se pueden hacer operaciones matemáticas. One-Hot Encoding evita este problema al representar cada categoría de forma independiente.

    Beneficios de One-Hot Encoding

    • Convierte variables categóricas en variables numéricas.
    • Evita introducir relaciones artificiales entre categorías.
    • Es compatible con la mayoría de algoritmos de Machine Learning.
    • Conserva toda la información categórica original.
    • Facilita el procesamiento de datos mixtos.
    • Es una técnica ampliamente aceptada y utilizada en la industria.

    ¿Cuándo Utilizar One-Hot Encoding?

    • La variable es categórica nominal.
    • No existe un orden natural entre las categorías.
    • El número de categorías es relativamente pequeño.
    • Se utilizan algoritmos que requieren datos numéricos.
    • Se desea evitar relaciones artificiales entre categorías.

    Variables Nominales vs Ordinales

    One-Hot Encoding es especialmente adecuado para variables nominales, o sea que no tienen orden inherente o poseen una jerarquía natural como las variables ordinales.

    • Variables nominales: rojo, azul, verde, España, Francia, Italia.
    • Variables ordinales: bajo, medio, alto o básico, premium, VIP.

    Ventajas

    • Compatible con la mayoría de modelos.
    • No introduce sesgos relacionados con el orden.
    • Conserva la información original.
    • Funciona correctamente con variables nominales.
    • Es ampliamente soportado por bibliotecas de Machine Learning.

    Desventajas

    • Incrementa el número de variables.
    • Puede generar matrices muy dispersas (sparse matrices).
    • Consume más memoria.
    • Aumenta el tiempo de entrenamiento en conjuntos de datos grandes.
    • Puede generar problemas de dimensionalidad cuando existen muchas categorías.

    Limitaciones

    Antes de utilizar One-Hot Encoding conviene considerar varios aspectos:

    • No escala bien cuando existen miles de categorías.
    • Puede producir el problema conocido como “Curse of Dimensionality”.
    • No captura relaciones entre categorías.
    • Puede generar redundancia en determinados modelos.
    • No siempre es la mejor opción para variables con alta cardinalidad.

    El Problema de la Multicolinealidad

    Cuando se generan todas las columnas posibles, puede aparecer una dependencia lineal entre ellas. Por ejemplo:

    RojoAzulVerde
    100
    010
    001

    Si conocemos dos columnas, la tercera puede deducirse automáticamente. Para evitar este problema, algunos modelos utilizan:

    drop_first=True

    eliminando una de las categorías. Esta estrategia se conoce como Dummy Variable Trap.

    Comparación con Otras Técnicas de Codificación

    TécnicaMantiene OrdenAumenta DimensionalidadAdecuada para Variables Nominales
    Label EncodingNoNo
    Ordinal EncodingNoNo
    One-Hot EncodingNo
    Target EncodingParcialmenteNo
    Frequency EncodingParcialmenteNo

    One-Hot Encoding suele ser la opción más segura cuando las categorías no tienen orden natural.

    Aplicaciones en Data Science y Machine Learning

    • Regresión Lineal.
    • Regresión Logística.
    • Redes Neuronales.
    • Support Vector Machines (SVM).
    • K-Nearest Neighbors (KNN).
    • Árboles de Decisión.
    • Random Forest.
    • XGBoost.
    • Sistemas de recomendación.
    • Modelos de clasificación y regresión.

    Es una de las transformaciones más comunes dentro de los pipelines de preparación de datos.

    Implementación en Python

    Utilizando Pandas

    La forma más sencilla consiste en utilizar get_dummies().

    import pandas as pd
    
    df = pd.DataFrame({
        "color": [
            "Rojo",
            "Azul",
            "Verde",
            "Rojo"
        ]
    })
    
    df_encoded = pd.get_dummies(
        df,
        columns=["color"]
    )
    
    print(df_encoded)
    
       color_Azul  color_Rojo  color_Verde
    0       False        True        False
    1        True       False        False
    2       False       False         True
    3       False        True        False

    Eliminando una Categoría

    df_encoded = pd.get_dummies(
        df,
        columns=["color"],
        drop_first=True
    )
    print(df_encoded)
       color_Rojo  color_Verde
    0        True        False
    1       False        False
    2       False         True
    3        True        False

    Utilizando Scikit-Learn

    from sklearn.preprocessing import OneHotEncoder
    
    encoder = OneHotEncoder()
    
    X_encoded = encoder.fit_transform(X)
    

    Obtener los Nombres de las Variables

    from sklearn.preprocessing import OneHotEncoder
    
    encoder = OneHotEncoder()
    
    encoder.fit(X)
    
    print(
        encoder.get_feature_names_out()
    )
    

    Uso dentro de un Pipeline

    from sklearn.compose import ColumnTransformer
    from sklearn.preprocessing import OneHotEncoder
    from sklearn.pipeline import Pipeline
    from sklearn.linear_model import LogisticRegression
    
    preprocessor = ColumnTransformer([
        (
            "categoricas",
            OneHotEncoder(),
            ["color", "pais"]
        )
    ])
    
    pipeline = Pipeline([
        ("preprocessing", preprocessor),
        ("model", LogisticRegression())
    ])
    
    pipeline.fit(X_train, y_train)
    

    Esta es la forma recomendada cuando se trabaja con flujos de Machine Learning en producción.

    Buenas Prácticas

    • Aplicarlo únicamente a variables categóricas nominales.
    • Evaluar la cardinalidad de las categorías antes de codificar.
    • Considerar técnicas alternativas para variables con miles de categorías.
    • Integrar la transformación dentro de un Pipeline.
    • Ajustar el codificador únicamente con los datos de entrenamiento.
    • Revisar el impacto sobre la dimensionalidad del conjunto de datos.

    Conclusión

    One-Hot Encoding es una de las técnicas más importantes y utilizadas para transformar variables categóricas en formatos compatibles con Machine Learning. Su capacidad para representar categorías sin introducir relaciones artificiales la convierte en una herramienta fundamental dentro de cualquier proceso de preparación de datos.

    Aunque puede incrementar considerablemente la dimensionalidad cuando existen muchas categorías, sigue siendo la opción preferida para variables nominales con un número moderado de valores distintos. Gracias a su simplicidad, interpretabilidad y amplia compatibilidad con algoritmos modernos, constituye un componente esencial de los pipelines de Data Science y Machine Learning.

  • Discretización Equal Frequency

    Conversión de Variables Continuas en Intervalos con Igual Número de Observaciones

    En Data Science y Machine Learning, muchas variables numéricas contienen una gran cantidad de valores distintos. Aunque esta información detallada puede ser útil, existen situaciones en las que resulta conveniente agrupar los datos en categorías para facilitar el análisis, mejorar la interpretabilidad o simplificar determinados modelos.

    Este proceso se conoce como discretización (binning) y consiste en transformar una variable continua en una variable categórica. Entre las técnicas más utilizadas destaca la Discretización Equal Frequency, también conocida como Equal Frequency Binning, Quantile Binning o Discretización por Cuantiles.

    A diferencia de Equal Width, donde todos los intervalos tienen la misma amplitud, Equal Frequency construye intervalos que contienen aproximadamente el mismo número de observaciones.

    ¿Qué es la discretización Equal Frequency?

    La discretización Equal Frequency es una técnica que divide una variable continua en varios grupos de forma que cada grupo contenga una cantidad similar de observaciones. El objetivo es distribuir los datos de manera equilibrada entre los distintos intervalos.

    Por ejemplo, si disponemos de 100 observaciones y queremos crear 4 intervalos, cada grupo contendrá aproximadamente 25 observaciones independientemente de la amplitud de los intervalos.

    ¿Cómo Funciona?

    El procedimiento sigue los siguientes pasos:

    • Ordenar los datos de menor a mayor.
    • Definir el número de intervalos deseado.
    • Calcular los cuantiles correspondientes.
    • Utilizar dichos cuantiles como límites de los intervalos.
    • Asignar cada observación al grupo correspondiente.

    Cuando se crean cuatro grupos, los límites suelen corresponder a:

    • Percentil 25.
    • Percentil 50.
    • Percentil 75.

    Estos valores dividen la distribución en cuatro partes con aproximadamente el mismo número de observaciones.

    Relación con los Cuantiles

    Equal Frequency se basa directamente en los cuantiles de una distribución.

    Los grupos más habituales son:

    Número de gruposNombre
    2Mitades
    4Cuartiles
    5Quintiles
    10Deciles
    100Percentiles

    Por ejemplo, una discretización en cuartiles divide la variable en cuatro segmentos con aproximadamente el 25% de las observaciones en cada uno.

    Ejemplo Práctico

    Supongamos la siguiente variable ordenada:

    var = [10, 15, 18, 22, 25, 30, 35, 40, 45, 100]

    Queremos crear dos grupos. Cada grupo contendrá aproximadamente cinco observaciones.

    Grupo 1Grupo 2
    1030
    1535
    1840
    2245
    25100

    Observa que los intervalos tienen diferentes amplitudes, pero contienen la misma cantidad de registros.

    Grupo 1: 10 - 25
    Grupo 2: 30 - 100

    Beneficios de la Discretización Equal Frequency

    • Genera grupos equilibrados.
    • Reduce el efecto de distribuciones muy sesgadas.
    • Disminuye la influencia de valores extremos.
    • Facilita la comparación entre categorías.
    • Produce segmentos con tamaños similares.
    • Resulta especialmente útil en análisis descriptivos.
    • Puede mejorar la estabilidad de ciertos modelos.

    ¿Cuándo Utilizar Equal Frequency?

    • La distribución de los datos es muy asimétrica.
    • Existen valores extremos importantes.
    • Se desean grupos equilibrados.
    • Se construyen modelos de scoring.
    • Se crean segmentos de clientes.
    • Se trabaja con variables altamente sesgadas.

    También resulta útil cuando Equal Width genera intervalos con muy pocas observaciones.

    Ventajas

    • Tiene en cuenta la distribución real de los datos.
    • Produce grupos más equilibrados.
    • Reduce problemas derivados de distribuciones sesgadas.
    • Es menos sensible a outliers que Equal Width.
    • Facilita la creación de segmentos comparables.
    • Suele generar categorías más representativas.
    • Funciona bien en datos con colas largas.

    Desventajas

    • Los intervalos tienen amplitudes diferentes.
    • Los límites pueden resultar menos intuitivos.
    • Puede generar categorías difíciles de interpretar.
    • Los puntos de corte dependen completamente de la distribución observada.
    • La comparación entre distintos conjuntos de datos puede resultar más compleja.

    Limitaciones

    • No elimina valores atípicos.
    • No corrige problemas de calidad de datos.
    • Puede ocultar diferencias importantes dentro de un mismo grupo.
    • La información original se simplifica considerablemente.
    • No garantiza una mejora del rendimiento predictivo.

    Además, cuando existen muchos valores repetidos pueden aparecer grupos con tamaños ligeramente desequilibrados.

    Comparación con Equal Width

    Las dos técnicas de discretización más utilizadas presentan diferencias importantes.

    CaracterísticaEqual WidthEqual Frequency
    Tamaño de intervalosIgualVariable
    Número de observacionesVariableSimilar
    Considera distribuciónNo
    Sensible a outliersAltaMenor
    Interpretación de límitesFácilMedia
    Equilibrio entre gruposBajoAlto

    En términos generales:

    • Equal Width divide el rango de valores.
    • Equal Frequency divide las observaciones.

    Aplicaciones en Data Science y Machine Learning

    • Análisis Exploratorio de Datos (EDA).
    • Segmentación de clientes.
    • Scoring crediticio.
    • Modelos de riesgo.
    • Marketing analítico.
    • Sistemas de recomendación.
    • Ingeniería de características.
    • Modelos basados en reglas.
    • Visualización de datos.

    También es ampliamente utilizada en banca, seguros y analítica de negocio.

    Implementación en Python

    Utilizando Pandas

    La función qcut() implementa directamente Equal Frequency.

    import pandas as pd
    
    df = pd.DataFrame({
        "ingresos": [
            1200, 1400, 1800, 2200, 3000,
            3500, 4500, 6000, 8000, 20000
        ]
    })
    
    df["grupo"] = pd.qcut(
        df["ingresos"],
        q=4,
        labels=["Bajo", "Medio-Bajo", "Medio-Alto", "Alto"]
    )
    
    print(df)
       ingresos               grupo
    0      1200  (1199.999, 1900.0]
    1      1400  (1199.999, 1900.0]
    2      1800  (1199.999, 1900.0]
    3      2200    (1900.0, 3250.0]
    4      3000    (1900.0, 3250.0]
    5      3500    (3250.0, 5625.0]
    6      4500    (3250.0, 5625.0]
    7      6000   (5625.0, 20000.0]
    8      8000   (5625.0, 20000.0]
    9     20000   (5625.0, 20000.0]

    Asignando Etiquetas Personalizadas

    df["grupo"] = pd.qcut(
        df["ingresos"],
        q=4,
        labels=[
            "Bajo",
            "Medio-Bajo",
            "Medio-Alto",
            "Alto"
        ]
    )
       ingresos       grupo
    0      1200        Bajo
    1      1400        Bajo
    2      1800        Bajo
    3      2200  Medio-Bajo
    4      3000  Medio-Bajo
    5      3500  Medio-Alto
    6      4500  Medio-Alto
    7      6000        Alto
    8      8000        Alto
    9     20000        Alto

    Obteniendo los Límites de los Intervalos

    categorias, limites = pd.qcut(
        df["ingresos"],
        q=4,
        retbins=True
    )
    
    print(limites)

    Implementación con Scikit-Learn

    from sklearn.preprocessing import KBinsDiscretizer
    
    discretizador = KBinsDiscretizer(
        n_bins=4,
        encode="ordinal",
        strategy="quantile"
    )
    
    X_transformado = discretizador.fit_transform(X)

    En Scikit-Learn, la estrategia "quantile" corresponde a Equal Frequency.

    Uso dentro de un Pipeline

    from sklearn.pipeline import Pipeline
    from sklearn.preprocessing import KBinsDiscretizer
    from sklearn.linear_model import LogisticRegression
    
    pipeline = Pipeline([
        (
            "binning",
            KBinsDiscretizer(
                n_bins=4,
                strategy="quantile",
                encode="ordinal"
            )
        ),
        (
            "modelo",
            LogisticRegression()
        )
    ])
    
    pipeline.fit(X_train, y_train)
    

    Esta es la forma recomendada cuando la discretización forma parte del proceso de entrenamiento del modelo.

    Buenas Prácticas

    • Analizar previamente la distribución de la variable.
    • Evaluar la presencia de valores repetidos.
    • Seleccionar un número razonable de grupos.
    • Revisar la interpretabilidad de los intervalos generados.
    • Comparar los resultados con Equal Width.
    • Verificar si la discretización mejora la comprensión de los datos o el rendimiento del modelo.

    Conclusión

    La Discretización Equal Frequency es una técnica de binning que transforma variables continuas en categorías mediante intervalos que contienen aproximadamente el mismo número de observaciones. Gracias a este enfoque, consigue adaptarse a la distribución real de los datos y generar grupos más equilibrados que los obtenidos mediante Equal Width.

    Su capacidad para manejar distribuciones asimétricas y reducir el impacto de valores extremos la convierte en una herramienta muy útil para análisis exploratorios, segmentación de datos, scoring y procesos de ingeniería de características. Aunque implica una pérdida de detalle respecto a los valores originales, sigue siendo una de las técnicas de discretización más utilizadas en proyectos modernos de Data Science y Machine Learning.

  • Discretización Equal Width

    Conversión de Variables Continuas en Intervalos de Igual Amplitud

    En Data Science y Machine Learning, muchas variables numéricas son continuas y pueden tomar una gran cantidad de valores diferentes. Aunque esta precisión suele ser útil, existen situaciones en las que resulta conveniente simplificar la información agrupando los valores en categorías o intervalos.

    Este proceso se conoce como discretización (discretization o binning) y consiste en transformar una variable continua en una variable categórica. Una de las técnicas más sencillas y utilizadas es la Discretización Equal Width, también conocida como Binning de Anchura Igual.

    La idea principal es dividir el rango completo de una variable en intervalos del mismo tamaño, facilitando el análisis, la interpretación y, en algunos casos, el rendimiento de determinados algoritmos.

    ¿Qué es la discretización Equal Width?

    La discretización Equal Width es una técnica que divide el rango de una variable continua en un número determinado de intervalos, donde todos los intervalos tienen exactamente la misma amplitud.

    Por ejemplo, si una variable tiene valores comprendidos entre 0 y 100 y deseamos crear cinco intervalos, cada uno tendrá una amplitud de 20 unidades. Los intervalos serían:

    Intervalo
    0 – 20
    20 – 40
    40 – 60
    60 – 80
    80 – 100

    Cada observación se asigna posteriormente al intervalo correspondiente.

    ¿Cómo Funciona?

    El procedimiento consta de varios pasos:

    • Identificar el valor mínimo de la variable.
    • Identificar el valor máximo de la variable.
    • Definir el número de intervalos deseado.
    • Calcular la amplitud de cada intervalo.
    • Asignar cada observación a su intervalo correspondiente.

    La amplitud de cada intervalo se calcula mediante:

    $$\text{Amplitud}=\frac{x_{max}-x_{min}}{k}$$

    Donde:

    • xmin es el valor mínimo.
    • xmax es el valor máximo.
    • k es el número de intervalos.

    Ahora cada persona queda representada por una categoría en lugar de una edad exacta.

    Ejemplo con Datos Reales: Supongamos la siguiente variable:

    salary = [
          20000,
          25000,
          30000,
          40000,
          45000,
          50000
    ]

    Si creamos tres intervalos:

    Mínimo = 20000
    Máximo = 50000

    La amplitud será:

    $$\frac{50000-20000}{3}=10000$$

    Los intervalos serían:

    CategoríaRango
    Bajo20000 – 30000
    Medio30000 – 40000
    Alto40000 – 50000

    La variable continua pasa a convertirse en una variable categórica más fácil de interpretar.

    Beneficios de la Discretización Equal Width

    • Simplifica variables complejas.
    • Facilita la interpretación de los datos.
    • Reduce el ruido presente en variables continuas.
    • Puede mejorar la visualización de los datos.
    • Ayuda a construir reglas de negocio más comprensibles.
    • Facilita la creación de segmentos o perfiles.
    • Puede mejorar la robustez de algunos modelos.

    ¿Cuándo Utilizar Equal Width?

    • Se necesita simplificar variables numéricas.
    • El análisis requiere categorías fácilmente interpretables.
    • Se desea construir reglas de negocio.
    • Se crean segmentos de clientes o productos.
    • La distribución de los datos es relativamente uniforme.
    • La precisión exacta de los valores no es necesaria.

    También es habitual en análisis descriptivos y cuadros de mando.

    Ventajas

    • Fácil de entender.
    • Fácil de implementar.
    • Genera intervalos intuitivos.
    • Mantiene límites regulares.
    • Adecuada para visualización de datos.
    • Computacionalmente eficiente.
    • Funciona correctamente en distribuciones relativamente homogéneas.

    Desventajas

    • No tiene en cuenta la distribución de los datos.
    • Puede generar intervalos casi vacíos.
    • Puede concentrar demasiadas observaciones en un único grupo.
    • Es sensible a valores extremos.
    • Los outliers pueden distorsionar significativamente los intervalos.
    • No garantiza una distribución equilibrada entre categorías.

    Limitaciones

    Antes de aplicar Equal Width es importante considerar que:

    • No adapta los intervalos a la densidad de los datos.
    • Puede generar categorías poco representativas.
    • No corrige asimetrías.
    • No elimina valores extremos.
    • No mejora necesariamente el rendimiento predictivo.
    • Puede perder información relevante al reducir la granularidad.

    Por este motivo, cuando la distribución es muy desigual suele ser preferible utilizar técnicas como Equal Frequency Binning.

    Comparación con Equal Frequency

    Las dos técnicas de discretización más utilizadas son Equal Width y Equal Frequency.

    CaracterísticaEqual WidthEqual Frequency
    Tamaño de intervalosIgualVariable
    Número de observaciones por intervaloVariableSimilar
    Sensible a outliersMenos
    Fácil interpretaciónAltaMedia
    Considera distribución de datosNo
    ImplementaciónMuy simpleMás compleja

    La principal diferencia es que Equal Width divide el rango de valores, mientras que Equal Frequency divide las observaciones.

    Aplicaciones en Data Science y Machine Learning

    • Análisis Exploratorio de Datos (EDA).
    • Segmentación de clientes.
    • Cuadros de mando y reporting.
    • Modelos de scoring.
    • Sistemas de recomendación.
    • Visualización de distribuciones.
    • Ingeniería de características.
    • Sistemas de clasificación basados en reglas.

    También es habitual en sectores como banca, seguros, marketing y recursos humanos.

    Implementación en Python

    Utilizando Pandas

    La forma más sencilla es mediante la función cut().

    import pandas as pd
    
    df = pd.DataFrame({
        "edad": [18, 22, 30, 35, 42, 50, 68]
    })
    
    df["grupo_edad"] = pd.cut(
        df["edad"],
        bins=5
    )
    
    print(df)
    

    Asignando Etiquetas Personalizadas

    import pandas as pd
    
    df["grupo_edad"] = pd.cut(
        df["edad"],
        bins=5,
        labels=[
            "Muy Joven",
            "Joven",
            "Adulto",
            "Maduro",
            "Senior"
        ]
    )
    

    Obteniendo los Límites de los Intervalos

    import pandas as pd
    
    categorias, limites = pd.cut(
        df["edad"],
        bins=5,
        retbins=True
    )
    
    print(limites)
    

    Implementación con Scikit-Learn

    from sklearn.preprocessing import KBinsDiscretizer
    
    discretizador = KBinsDiscretizer(
        n_bins=5,
        encode="ordinal",
        strategy="uniform"
    )
    
    X_transformado = discretizador.fit_transform(X)
    

    En Scikit-Learn, la estrategia "uniform" corresponde a Equal Width.

    Uso dentro de un Pipeline

    from sklearn.pipeline import Pipeline
    from sklearn.preprocessing import KBinsDiscretizer
    from sklearn.linear_model import LogisticRegression
    
    pipeline = Pipeline([
        (
            "binning",
            KBinsDiscretizer(
                n_bins=5,
                strategy="uniform",
                encode="ordinal"
            )
        ),
        (
            "modelo",
            LogisticRegression()
        )
    ])
    
    pipeline.fit(X_train, y_train)
    

    Buenas Prácticas

    • Analizar previamente la distribución de la variable.
    • Identificar posibles valores extremos.
    • Seleccionar un número razonable de intervalos.
    • Evaluar el equilibrio de observaciones por categoría.
    • Comparar los resultados con Equal Frequency.
    • Verificar si la discretización mejora la interpretabilidad o el rendimiento del modelo.

    Conclusión

    La Discretización Equal Width es una técnica sencilla y ampliamente utilizada para transformar variables continuas en categorías mediante intervalos de igual amplitud. Su principal objetivo es simplificar la información, facilitar la interpretación y permitir la creación de segmentos fácilmente comprensibles.

    Aunque presenta limitaciones importantes cuando existen distribuciones muy sesgadas o valores extremos, sigue siendo una herramienta útil en análisis exploratorios, segmentación de datos y procesos de ingeniería de características. Utilizada correctamente, puede ayudar a convertir datos complejos en información más accesible tanto para analistas como para usuarios de negocio.

  • Transformación Seno y Coseno:

    Codificación de Variables Cíclicas para Machine Learning

    En Data Science y Machine Learning existen variables que poseen una naturaleza cíclica o periódica. Algunos ejemplos comunes son:

    • Hora del día.
    • Día de la semana.
    • Mes del año.
    • Estaciones del año.
    • Ángulos.
    • Direcciones geográficas.
    • Fases de producción.

    Estas variables presentan una característica particular: después de alcanzar su valor máximo vuelven a comenzar desde el mínimo. Por ejemplo, después de las 23:00 horas llega nuevamente la hora 0, y después de diciembre vuelve enero.

    Si estas variables se representan utilizando valores numéricos convencionales, los algoritmos pueden interpretar incorrectamente las distancias entre observaciones. Para resolver este problema se utiliza la Transformación Seno y Coseno, una técnica que convierte variables cíclicas en coordenadas geométricas capaces de preservar correctamente su naturaleza periódica. En documentación moderna de Machine Learning, normalmente encontrarás nombres como:

    • Circular Encoding
    • Cyclical Encoding
    • Cyclical Features
    • Cyclical Transformation
    • Sine-Cosine Encoding

    ¿Qué es la Transformación Seno y Coseno?

    La Transformación Seno y Coseno es una técnica de ingeniería de características (Feature Engineering) utilizada para representar variables cíclicas mediante funciones trigonométricas.

    Su objetivo es:

    • Preservar la naturaleza circular de los datos.
    • Evitar discontinuidades artificiales.
    • Mejorar la representación matemática de variables periódicas.
    • Facilitar el aprendizaje de patrones temporales.

    En lugar de utilizar una única variable numérica, la transformación genera dos nuevas variables:

    • Componente seno.
    • Componente coseno.

    Estas dos variables representan la posición de una observación sobre una circunferencia unitaria.

    ¿Por qué es necesaria?

    Supongamos una variable que representa la hora del día:

    time = [22, 23, 0, 1, 2]

    Desde una perspectiva humana:

    • Las horas 23 y 0 están muy próximas.
    • Las horas 22 y 1 también están relativamente cerca.

    Sin embargo, para un algoritmo que utiliza los valores originales:

    |23 - 0| = 23

    El modelo interpreta que ambas observaciones están extremadamente alejadas, cuando en realidad son consecutivas. La transformación seno y coseno elimina este problema.

    ¿Cómo Funciona?

    • La variable se proyecta sobre una circunferencia de radio 1.
    • Cada observación se convierte en un ángulo.
    • Posteriormente se calculan las coordenadas cartesianas correspondientes utilizando las funciones seno y coseno.

    La transformación seno se calcula mediante:

    $$x_{sen}=\sin\left(\frac{2\pi x}{P}\right)$$

    La transformación coseno se calcula mediante:

    $$x_{cos}=\cos\left(\frac{2\pi x}{P}\right)$$

    Donde:

    • x es el valor original.
    • P es el período completo de la variable.
    • representa una vuelta completa en la circunferencia.

    Interpretación del Período

    El período depende de la variable que se esté transformando.

    VariablePeríodo
    Hora del día24
    Día de la semana7
    Mes del año12
    Minuto de la hora60
    Segundo60
    Dirección angular360

    Ejemplo Práctico: Supongamos una variable de horas:

    time = [0, 6, 12, 18]

    Aplicando la transformación:

    HoraSenoCoseno
    001
    610
    120-1
    18-10

    Las observaciones quedan representadas como puntos sobre una circunferencia.

    De esta forma:

    • La hora 23 y la hora 0 quedan próximas.
    • La hora 11 y la hora 12 también quedan próximas.
    • Se preserva la continuidad natural del ciclo.

    Representación Geométrica

    La transformación genera coordenadas sobre una circunferencia unitaria. Cada observación queda representada mediante:

    (x_cos, x_sen)

    Esto permite que los algoritmos perciban correctamente las relaciones cíclicas en lugar de una representación lineal:

    012...23

    se obtiene una representación circular:

    023

    que refleja mejor la realidad del fenómeno.

    Beneficios de la Transformación Seno y Coseno

    Entre los principales beneficios destacan:

    • Preserva la naturaleza cíclica de los datos.
    • Elimina discontinuidades artificiales.
    • Mejora la representación matemática de variables temporales.
    • Facilita el aprendizaje de patrones periódicos.
    • Genera características continuas.
    • Mantiene la proximidad entre valores cercanos dentro del ciclo.
    • Suele mejorar el rendimiento de numerosos modelos predictivos.

    ¿Cuándo utilizar la transformación de seno y coseno?

    Esta técnica es recomendable cuando se trabaja con:

    • Horas del día.
    • Días de la semana.
    • Meses del año.
    • Estaciones.
    • Variables temporales periódicas.
    • Ángulos.
    • Direcciones geográficas.
    • Datos de sensores con comportamiento cíclico.

    También resulta especialmente útil en problemas de predicción temporal.

    Ventajas

    • Captura correctamente la periodicidad.
    • Evita errores derivados de la codificación numérica simple.
    • Es sencilla de implementar.
    • Funciona con cualquier variable cíclica.
    • Mejora la capacidad predictiva de muchos modelos.
    • Compatible con algoritmos lineales y no lineales.
    • Produce características continuas y suaves.

    Desventajas

    • Incrementa el número de variables.
    • Genera dos características por cada variable original.
    • Puede resultar menos intuitiva para usuarios no técnicos.
    • No siempre aporta mejoras en modelos basados en árboles.
    • Requiere conocer correctamente el período de la variable.

    Limitaciones

    Antes de aplicar esta transformación es importante considerar algunas limitaciones:

    • Solo tiene sentido para variables verdaderamente cíclicas.
    • No debe utilizarse sobre variables categóricas convencionales.
    • Una elección incorrecta del período puede introducir errores.
    • No elimina ruido ni valores atípicos.
    • No corrige problemas de escalado o asimetría.

    Por ello debe considerarse una técnica de representación de datos y no una técnica de limpieza o normalización.

    Aplicaciones en Data Science y Machine Learning

    La transformación seno y coseno se utiliza ampliamente en:

    • Predicción de demanda.
    • Forecasting de series temporales.
    • Predicción meteorológica.
    • Sistemas de recomendación.
    • Optimización logística.
    • Redes neuronales.
    • Modelos de consumo energético.
    • Análisis de tráfico.
    • Internet de las Cosas (IoT).
    • Modelos financieros con componentes estacionales.

    Es especialmente frecuente en proyectos donde existe estacionalidad o comportamiento periódico.

    Implementación en Python

    Transformación de Horas del Día

    import pandas as pd
    import numpy as np
    
    df = pd.DataFrame({
        "hora": [0, 6, 12, 18]
    })
    
    df["hora_sin"] = np.sin(
        2 * np.pi * df["hora"] / 24
    )
    
    df["hora_cos"] = np.cos(
        2 * np.pi * df["hora"] / 24
    )
    
    print(df)
    
      hora      hora_sin      hora_cos
    0     0  0.000000e+00  1.000000e+00
    1     6  1.000000e+00  6.123234e-17
    2    12  1.224647e-16 -1.000000e+00
    3    18 -1.000000e+00 -1.836970e-16

    Transformación de Meses del Año

    import numpy as np
    
    df["mes_sin"] = np.sin(
        2 * np.pi * df["mes"] / 12
    )
    
    df["mes_cos"] = np.cos(
        2 * np.pi * df["mes"] / 12
    )
    

    Función Reutilizable

    import numpy as np
    
    def cyclical_encoding(
        values,
        period
    ):
        sin_component = np.sin(
            2 * np.pi * values / period
        )
    
        cos_component = np.cos(
            2 * np.pi * values / period
        )
    
        return sin_component, cos_component
    

    Uso en un Pipeline de Scikit-Learn

    from sklearn.preprocessing import FunctionTransformer
    import numpy as np
    
    sin_transformer = FunctionTransformer(
        lambda x: np.sin(
            2 * np.pi * x / 24
        )
    )
    
    cos_transformer = FunctionTransformer(
        lambda x: np.cos(
            2 * np.pi * x / 24
        )
    )
    

    Buenas Prácticas

    Al aplicar esta transformación es recomendable:

    • Verificar que la variable sea realmente cíclica.
    • Identificar correctamente el período completo.
    • Mantener ambas variables (seno y coseno).
    • No eliminar una de las dos componentes.
    • Integrar la transformación dentro de un Pipeline.
    • Evaluar el impacto sobre el rendimiento del modelo.

    Conclusión

    La Transformación Seno y Coseno es una técnica fundamental de ingeniería de características utilizada para representar variables cíclicas de forma adecuada. Al convertir una variable periódica en coordenadas sobre una circunferencia unitaria, permite preservar la continuidad natural del ciclo y evita los problemas derivados de las representaciones lineales tradicionales.

    Gracias a su simplicidad, fundamento matemático sólido y eficacia práctica, se ha convertido en una de las transformaciones más utilizadas en proyectos de series temporales, forecasting, análisis estacional y Machine Learning aplicado a datos temporales. Su capacidad para capturar correctamente la periodicidad la convierte en una herramienta esencial dentro del conjunto de técnicas modernas de preparación de datos.

  • Rank Transformation mediante Percentiles

    Transformación Basada en Posiciones Relativas

    Las transformaciones basadas en rangos permiten precisamente este enfoque. Entre ellas, la Transformación por Percentiles destaca por convertir cada observación en una medida relativa que indica qué porcentaje de datos se encuentra por debajo de ella.

    Esta técnica es ampliamente utilizada en estadística, análisis exploratorio de datos, evaluación de rendimiento, sistemas de puntuación y procesos de preparación de datos para Machine Learning.

    ¿Qué es la transformación por percentiles?

    La Transformación por Percentiles es una técnica de transformación basada en rangos que reemplaza cada observación por su posición porcentual dentro de la distribución. En lugar de conservar el valor original, la variable pasa a representar el porcentaje de observaciones que son iguales o inferiores a dicho valor.

    ValorPercentil
    100%
    2025%
    3050%
    4075%
    50100%

    De esta forma, el valor original deja de ser relevante y la posición relativa pasa a ser la información principal.

    ¿Cómo Funciona?

    La transformación sigue los siguientes pasos:

    • Ordenar los datos.
    • Asignar un rango a cada observación.
    • Convertir el rango en una proporción o porcentaje.
    • Sustituir el valor original por su percentil correspondiente.

    Una fórmula habitual es:

    $$P=\frac{r-1}{n-1}\times100$$

    Donde:

    • P representa el percentil.
    • r representa el rango de la observación.
    • n representa el número total de observaciones.

    El resultado se expresa normalmente entre: 0 y 100 o alternativamente entre: 0 y 1.

    Interpretación de los Percentiles

    Los percentiles indican la posición relativa de una observación dentro de una distribución.

    PercentilInterpretación
    10El 10% de los datos está por debajo
    25El 25% de los datos está por debajo
    50Mediana de la distribución
    75El 75% de los datos está por debajo
    90El 90% de los datos está por debajo

    Por ejemplo, si un estudiante se encuentra en el percentil 90, significa que ha obtenido una puntuación superior al 90% de los participantes.

    Ejemplo Práctico.

    Supongamos una variable de ingresos:

    Ingreso
    1500
    2000
    3000
    5000
    100000

    La diferencia entre los ingresos es enorme.

    Tras aplicar la transformación:

    IngresoPercentil
    15000
    200025
    300050
    500075
    100000100

    Ahora la variable representa posiciones relativas en lugar de magnitudes monetarias.

    Beneficios de la Transformación por Percentiles

    • Reduce la influencia de valores extremos.
    • Facilita la comparación entre variables con escalas diferentes.
    • Convierte cualquier variable en una escala común.
    • Conserva el orden relativo de las observaciones.
    • Es robusta frente a distribuciones no normales.
    • Facilita la interpretación de posiciones relativas.
    • Resulta útil para construir sistemas de puntuación.

    ¿Cuándo utilizar la transformación por percentiles?

    • Interesa conocer posiciones relativas.
    • Existen distribuciones altamente asimétricas.
    • Hay valores atípicos importantes.
    • Se comparan variables con unidades diferentes.
    • Se construyen rankings o clasificaciones.
    • Se trabaja con métodos estadísticos robustos.

    También es muy utilizada cuando la magnitud exacta de una observación es menos importante que su posición dentro del conjunto de datos.

    Ventajas

    • Reduce el efecto de los outliers.
    • Funciona correctamente con distribuciones complejas.
    • No requiere supuestos de normalidad.
    • Permite comparar variables heterogéneas.
    • Conserva el orden de los datos.
    • Facilita la creación de indicadores comparables.

    Desventajas

    • Se pierde la magnitud original de las observaciones.
    • No conserva las distancias reales entre valores.
    • Puede ocultar diferencias importantes entre observaciones.
    • La interpretación absoluta desaparece.
    • No siempre mejora el rendimiento predictivo de los modelos.

    Limitaciones

    • No aproxima los datos a una distribución normal.
    • No conserva unidades originales.
    • No elimina valores atípicos.
    • No representa diferencias cuantitativas reales.
    • Puede reducir información relevante para determinados algoritmos.

    Por ello suele utilizarse cuando el interés principal es la posición relativa de los datos.

    Diferencias entre Ranking Simple y Percentiles

    Ambas técnicas pertenecen a la familia de las transformaciones basadas en rangos, pero presentan algunas diferencias.

    CaracterísticaRanking SimplePercentiles
    Utiliza rangos
    Conserva orden
    Escala uniformeNo
    Fácil comparación entre datasetsLimitadaAlta
    Resultado interpretableMedioAlto
    Valores entre 0 y 100No

    Los percentiles pueden considerarse una evolución natural del ranking simple, ya que transforman los rangos en posiciones relativas estandarizadas.

    Aplicaciones en Data Science y Machine Learning

    La Transformación por Percentiles se utiliza frecuentemente en:

    • Análisis Exploratorio de Datos (EDA).
    • Estadística descriptiva.
    • Sistemas de puntuación.
    • Modelos de riesgo financiero.
    • Recursos Humanos.
    • Sistemas de recomendación.
    • Detección de anomalías.
    • Evaluación de rendimiento académico.
    • Ingeniería de características.

    También suele utilizarse como paso previo a transformaciones más avanzadas como Quantile Transformation o Rank Gaussian Transformation.

    Implementación en Python

    Cálculo de Percentiles con Pandas

    import pandas as pd
    
    df = pd.DataFrame({
        "ingresos": [1500, 2000, 3000, 5000, 100000]
    })
    
    df["percentil"] = df["ingresos"].rank(
        pct=True
    ) * 100
    
    print(df)
    

    Resultado Aproximado

       ingresos  percentil
    0      1500       20.0
    1      2000       40.0
    2      3000       60.0
    3      5000       80.0
    4    100000      100.0
    

    Utilizando SciPy

    from scipy.stats import percentileofscore
    
    datos = [1500, 2000, 3000, 5000, 100000]
    
    for valor in datos:
        p = percentileofscore(datos, valor)
        print(valor, p)
    

    Aplicación sobre Múltiples Variables

    import pandas as pd
    
    for columna in df.columns:
        df[columna + "_pct"] = (
            df[columna]
            .rank(pct=True)
        )
    

    Uso en un Pipeline Personalizado

    from sklearn.preprocessing import FunctionTransformer
    import pandas as pd
    
    def percentile_transform(X):
        return pd.DataFrame(X).rank(
            pct=True
        ).values
    
    transformer = FunctionTransformer(
        percentile_transform
    )
    
    X_transformado = transformer.fit_transform(X)
    

    Buenas Prácticas

    Al utilizar transformaciones por percentiles es recomendable:

    • Analizar previamente la distribución de la variable.
    • Evaluar si la magnitud original contiene información relevante.
    • Utilizar percentiles cuando el interés principal sea la posición relativa.
    • Comparar los resultados con otras transformaciones basadas en rangos.
    • Verificar el impacto sobre el rendimiento del modelo.
    • Aplicar la misma transformación durante entrenamiento e inferencia.

    Conclusión

    La Transformación por Percentiles es una técnica basada en rangos que convierte cada observación en una medida relativa dentro de la distribución. En lugar de representar magnitudes absolutas, permite expresar la posición de cada dato respecto al resto de observaciones.

    Gracias a su robustez frente a valores extremos, facilidad de interpretación y capacidad para estandarizar variables de diferentes escalas, constituye una herramienta muy útil en análisis estadístico, ingeniería de características y procesos de preparación de datos para Machine Learning. Además, sirve como fundamento para técnicas más avanzadas como Quantile Transformation y Rank Gaussian Transformation, ampliamente utilizadas en proyectos modernos de análisis de datos.

  • Ranking Simple

    Transformación Basada en Rangos

    En Data Science y Machine Learning, es frecuente trabajar con variables que presentan distribuciones altamente asimétricas, valores extremos o escalas muy diferentes. En estos casos, los valores absolutos pueden dificultar el análisis y afectar el rendimiento de determinados algoritmos.

    Una estrategia alternativa para tratar con variables que presentan distribuciones altamente asimétricas, valores extremos o escalas muy diferentes consiste en ignorar temporalmente los valores originales y centrarse únicamente en su posición relativa dentro del conjunto de datos. Este enfoque da lugar a la Rank Transformation o Transformación por Rangos, una técnica que reemplaza cada observación por su posición ordenada dentro de la variable.

    La variante más sencilla de esta técnica es el Ranking Simple, que asigna un rango numérico a cada observación según su orden relativo.

    ¿Qué es la Rank Transformation?

    La Rank Transformation es una técnica de transformación de datos que sustituye los valores originales de una variable por sus rangos dentro de la distribución. En lugar de trabajar con magnitudes absolutas, la transformación utiliza únicamente la posición relativa de cada observación.

    Por ejemplo:

    var = [100, 50, 200, 150]

    Tras ordenar los datos:

    ValorRango
    501
    1002
    1503
    2004

    La variable transformada pasa a ser:

    var = [2, 1, 4, 3]

    De esta manera, se conserva el orden de las observaciones, pero se elimina la influencia de la escala original.

    ¿Cómo Funciona?

    El procedimiento es relativamente sencillo:

    • Ordenar los datos de menor a mayor.
    • Asignar una posición numérica a cada observación.
    • Sustituir los valores originales por sus rangos correspondientes.

    Matemáticamente:

    $$R(x_i)=r_i$$

    Donde:

    • xᵢ representa una observación.
    • rᵢ representa su rango dentro del conjunto de datos.

    El resultado final es una variable ordinal que refleja únicamente el orden relativo de las observaciones.

    Tratamiento de Empates

    Uno de los aspectos más importantes en las transformaciones por rangos es la gestión de valores repetidos y existen varios métodos para asignar rangos.

    Average Ranking

    Los empates reciben el promedio de las posiciones que ocuparían.

    ValorRango
    101
    202.5
    202.5
    404

    Min Ranking

    Todos los empates reciben el rango mínimo.

    ValorRango
    101
    202
    202
    404

    Dense Ranking

    No se dejan huecos entre rangos consecutivos.

    ValorRango
    101
    202
    202
    403

    El valor extremo deja de influir por su magnitud y únicamente conserva su posición relativa.

    Beneficios de Simple Rank

    • Elimina la influencia de la escala original.
    • Reduce el impacto de valores extremos.
    • Conserva el orden relativo de las observaciones.
    • Facilita la comparación entre variables con unidades diferentes.
    • Es robusta frente a distribuciones no normales.
    • Puede simplificar ciertos análisis estadísticos.
    • Resulta sencilla de implementar.

    ¿Cuándo Utilizar Simple Rank?

    • Existen valores atípicos importantes.
    • La escala de los datos no es relevante.
    • Se desea trabajar con posiciones relativas.
    • Los datos presentan distribuciones muy asimétricas.
    • Se utilizan métodos estadísticos no paramétricos.
    • Se quiere reducir la influencia de observaciones extremas sin eliminarlas.

    También resulta útil cuando las diferencias exactas entre valores son menos importantes que su orden relativo.

    Ventajas

    • Muy fácil de entender e implementar.
    • Reduce significativamente la influencia de outliers.
    • No requiere supuestos sobre la distribución.
    • Funciona con cualquier escala de medida numérica.
    • Conserva el orden de las observaciones.
    • Facilita ciertos análisis estadísticos robustos.
    • Puede mejorar la estabilidad de algunos algoritmos.

    Desventajas

    • Se pierde la información sobre las distancias reales entre valores.
    • Dos observaciones muy diferentes pueden quedar separadas por un único rango.
    • No conserva la magnitud original de los datos.
    • Puede reducir la interpretabilidad de algunas variables.
    • No siempre mejora el rendimiento predictivo.

    Limitaciones

    • No aproxima los datos a una distribución normal.
    • No realiza escalado en sentido estricto.
    • No conserva las diferencias cuantitativas originales.
    • Puede eliminar información relevante para determinados modelos.
    • No resulta adecuada cuando la magnitud exacta de las observaciones es importante.

    Por este motivo, suele utilizarse principalmente en análisis exploratorios y métodos estadísticos robustos.

    Comparación con Otras Transformaciones

    CaracterísticaRanking SimpleQuantile TransformationRank Gaussian
    Utiliza rangos
    Conserva orden
    Reduce outliers
    Aproxima normalidadNoOpcional
    Conserva magnitudes originalesNoNoNo
    Transformación no lineal

    Puede considerarse la forma más básica de todas las transformaciones basadas en rangos.

    Aplicaciones en Data Science y Machine Learning

    La Rank Transformation aparece frecuentemente en:

    • Estadística no paramétrica.
    • Análisis exploratorio de datos (EDA).
    • Sistemas de recomendación.
    • Detección de anomalías.
    • Modelos financieros.
    • Competiciones de Machine Learning.
    • Ingeniería de características.
    • Métodos robustos frente a outliers.

    También constituye la base de técnicas más avanzadas como Rank Gaussian Transformation y Quantile Transformation.

    Implementación en Python

    Aplicación Básica con Pandas

    import pandas as pd
    
    df = pd.DataFrame({
        "ingresos": [1500, 2000, 3000, 5000, 100000]
    })
    
    df["ranking"] = df["ingresos"].rank()
    
    print(df)
    

    Ranking Ascendente

    df["ranking"] = df["ingresos"].rank(
        ascending=True
    )
    

    Ranking Descendente

    df["ranking"] = df["ingresos"].rank(
        ascending=False
    )
    

    Ranking Denso

    df["ranking"] = df["ingresos"].rank(
        method="dense"
    )
    

    Ranking con Valores Empatados

    import pandas as pd
    
    datos = pd.Series([10, 20, 20, 40])
    
    print(datos.rank(method="average"))
    print(datos.rank(method="min"))
    print(datos.rank(method="dense"))
    

    Uso en Scikit-Learn

    Aunque Scikit-Learn no incluye un transformador específico para Ranking Simple, puede implementarse mediante FunctionTransformer.

    from sklearn.preprocessing import FunctionTransformer
    import pandas as pd
    
    def rank_transform(X):
        return pd.DataFrame(X).rank().values
    
    ranker = FunctionTransformer(rank_transform)
    
    X_transformado = ranker.fit_transform(X)
    

    Buenas Prácticas

    • Analizar si la magnitud original contiene información importante.
    • Elegir adecuadamente el método de tratamiento de empates.
    • Comparar los resultados con otras transformaciones basadas en cuantiles.
    • Utilizarla principalmente cuando interese el orden y no el valor exacto.
    • Evaluar el impacto sobre el rendimiento del modelo.

    Conclusión

    La Rank Transformation o Ranking Simple es una técnica de transformación basada en rangos que sustituye los valores originales por su posición relativa dentro de la distribución. Su simplicidad, robustez frente a valores extremos y ausencia de supuestos estadísticos la convierten en una herramienta muy útil para el análisis exploratorio y los métodos no paramétricos.

    Aunque implica la pérdida de información sobre las magnitudes originales, permite trabajar con variables complejas desde una perspectiva más robusta y menos sensible a outliers. Además, constituye el fundamento de transformaciones más avanzadas como Quantile Transformation y Rank Gaussian Transformation, ampliamente utilizadas en proyectos modernos de Data Science y Machine Learning.

  • Rank Gaussian Transformation

    Transformación Basada en Rangos para Aproximar una Distribución Normal

    En Data Science y Machine Learning, muchas variables presentan distribuciones altamente asimétricas, colas largas o una gran cantidad de valores atípicos. Estas características pueden afectar el rendimiento de ciertos algoritmos, especialmente aquellos que funcionan mejor cuando los datos siguen una distribución aproximadamente normal.

    Para abordar el problema de distribuciones altamente asimétricas, colas largas o una gran cantidad de valores atípicos, existen diversas técnicas de transformación. Entre ellas destaca la Rank Gaussian Transformation, una técnica robusta que combina el uso de rangos con la transformación hacia una distribución normal.

    Su principal ventaja es que no depende de los valores originales de la variable, sino de su posición relativa dentro de la distribución, lo que la hace especialmente resistente a los valores extremos y adecuada para variables con distribuciones complejas.

    ¿Qué es Rank Gaussian Transformation?

    La Rank Gaussian Transformation, también conocida como:

    • Rank Normalization.
    • RankGauss.
    • Inverse Normal Transformation.
    • Rank-Based Gaussian Transformation.

    Es una técnica que transforma una variable en una distribución aproximadamente normal utilizando los rangos de las observaciones. En lugar de trabajar directamente con los valores originales, el procedimiento:

    • Ordena los datos.
    • Asigna un rango a cada observación.
    • Convierte dichos rangos en probabilidades acumuladas.
    • Aplica la función inversa de la distribución normal.

    El resultado es una variable cuya distribución se asemeja a una distribución gaussiana estándar.

    ¿Cómo Funciona?

    La transformación se realiza en varias etapas.

    Paso 1: Ordenar los datos

    Supongamos la siguiente variable:

    var = [5, 10, 20, 50, 100]

    Al ordenarla obtenemos:

    rango = [1, 2, 3, 4, 5]

    Paso 2: Convertir rangos en probabilidades

    Cada rango se transforma en una posición relativa dentro de la distribución. Una fórmula habitual es:

    $$=\frac{r-0.5}{n}$$

    Donde:

    • r es el rango.
    • n es el número de observaciones.
    • p es la probabilidad acumulada.

    Paso 3: Aplicar la función inversa normal

    Posteriormente se utiliza la función inversa de la distribución normal acumulada:

    $$z=\Phi^{-1}(p)$$

    Donde:

    • Φ⁻¹ representa la función cuantílica de la distribución normal.
    • z es el valor transformado.

    El resultado final presenta una distribución cercana a una normal estándar.

    Beneficios de Rank Gaussian Transformation

    • Reduce significativamente la asimetría.
    • Aproxima la distribución a una normal.
    • Es extremadamente robusta frente a outliers.
    • Reduce el impacto de colas largas.
    • Facilita el trabajo con distribuciones complejas.
    • No requiere asumir ninguna forma previa de distribución.
    • Suele mejorar el comportamiento de modelos sensibles a la normalidad.

    ¿Cuándo Utilizar Rank Gaussian Transformation?

    • Existen distribuciones muy asimétricas.
    • Hay una gran cantidad de valores extremos.
    • Los datos presentan colas largas.
    • Se desea aproximar una distribución normal.
    • Box-Cox o Yeo-Johnson no ofrecen resultados satisfactorios.
    • Se utilizan algoritmos sensibles a la distribución de las variables.

    También es frecuente en conjuntos de datos tabulares utilizados en competiciones de Machine Learning.

    Ventajas

    • Muy robusta frente a valores atípicos.
    • Reduce eficazmente la asimetría.
    • Aproxima la distribución a una normal estándar.
    • Funciona correctamente con variables complejas.
    • No requiere optimización de parámetros.
    • Puede mejorar la convergencia de algunos algoritmos.
    • Es independiente de la escala original de los datos.

    Desventajas

    • La interpretación de los valores transformados resulta difícil.
    • Se pierde la escala original de la variable.
    • Modifica completamente la distribución inicial.
    • Puede alterar relaciones lineales entre variables.
    • No siempre mejora el rendimiento predictivo.
    • Puede complicar la explicación de resultados a usuarios de negocio.

    Limitaciones

    • No conserva las unidades originales.
    • La transformación es completamente no lineal.
    • Puede distorsionar ciertas relaciones estadísticas.
    • No siempre es adecuada para modelos que requieren interpretabilidad.
    • Su efecto puede variar cuando aparecen nuevos datos fuera de la distribución observada durante el entrenamiento.

    Por este motivo suele utilizarse principalmente en contextos donde el rendimiento predictivo es más importante que la interpretabilidad.

    Diferencias con Quantile Transformation

    Aunque ambas técnicas son muy similares, existen algunas diferencias conceptuales.

    CaracterísticaQuantile TransformationRank Gaussian Transformation
    Utiliza rangos
    Utiliza percentiles
    Distribución uniformeNo
    Distribución normal
    Transformación basada en cuantiles
    Aproximación gaussiana explícitaOpcional
    Robustez frente a outliersAltaMuy alta

    En la práctica, la implementación de QuantileTransformer con salida normal genera resultados muy similares a una Rank Gaussian Transformation.

    Aplicaciones en Data Science y Machine Learning

    Rank Gaussian Transformation se utiliza frecuentemente en:

    • Regresión Lineal.
    • Regresión Logística.
    • Redes Neuronales.
    • Support Vector Machines (SVM).
    • PCA.
    • Clustering.
    • Modelos de detección de anomalías.
    • Sistemas de recomendación.
    • Competiciones de Machine Learning.

    Ha sido especialmente popular en plataformas como Kaggle, donde numerosos participantes la utilizan para mejorar el comportamiento de variables altamente sesgadas.

    Implementación en Python

    Scikit-Learn no dispone de una clase denominada específicamente “RankGaussianTransformer“, pero puede obtenerse un comportamiento prácticamente equivalente mediante QuantileTransformer con distribución normal.

    Implementación con QuantileTransformer

    from sklearn.preprocessing import QuantileTransformer
    
    transformer = QuantileTransformer(
        output_distribution="normal"
    )
    
    X_transformado = transformer.fit_transform(X)
    

    Aplicación sobre un DataFrame

    import pandas as pd
    from sklearn.preprocessing import QuantileTransformer
    
    df = pd.DataFrame({
        "ingresos": [1000, 1200, 1500, 3000, 50000]
    })
    
    transformer = QuantileTransformer(
        output_distribution="normal"
    )
    
    df["ingresos_rankgauss"] = transformer.fit_transform(
        df[["ingresos"]]
    )
    
    print(df)
    

    Configuración del Número de Cuantiles

    from sklearn.preprocessing import QuantileTransformer
    
    transformer = QuantileTransformer(
        n_quantiles=1000,
        output_distribution="normal"
    )
    
    X_transformado = transformer.fit_transform(X)
    

    Uso dentro de un Pipeline

    from sklearn.pipeline import Pipeline
    from sklearn.preprocessing import QuantileTransformer
    from sklearn.linear_model import LogisticRegression
    
    pipeline = Pipeline([
        (
            "rank_gauss",
            QuantileTransformer(
                output_distribution="normal"
            )
        ),
        (
            "model",
            LogisticRegression()
        )
    ])
    
    pipeline.fit(X_train, y_train)
    

    Esta es la estrategia recomendada para evitar problemas de data leakage durante el entrenamiento.

    Buenas Prácticas

    • Analizar previamente la distribución de las variables.
    • Comparar los resultados con Box-Cox y Yeo-Johnson.
    • Aplicar la transformación únicamente sobre variables numéricas.
    • Ajustar el transformador únicamente con los datos de entrenamiento.
    • Evaluar el impacto sobre la interpretabilidad.
    • Verificar que la transformación mejora realmente el rendimiento del modelo.

    Conclusión

    La Rank Gaussian Transformation es una técnica avanzada de transformación basada en rangos que permite convertir distribuciones complejas y altamente asimétricas en distribuciones aproximadamente normales. Gracias a su enfoque basado en posiciones relativas, resulta extremadamente robusta frente a valores atípicos y distribuciones con colas largas.

    Aunque implica la pérdida de la escala original y puede dificultar la interpretación de los resultados, constituye una herramienta muy valiosa cuando se busca mejorar la calidad de las variables utilizadas por algoritmos sensibles a la distribución de los datos. Por ello, se ha convertido en una técnica ampliamente utilizada en Machine Learning moderno, especialmente en problemas tabulares donde la normalización avanzada puede aportar mejoras significativas al rendimiento predictivo.

  • Quantile Transformation

    Transformación Basada en Cuantiles para Escalado y Normalización de Datos

    Una de las técnicas más potentes para tratar con variables que presentan distribuciones altamente asimétricas, presencia de valores extremos o rangos muy diferentes entre sí es Quantile Transformation, una transformación no lineal que utiliza la posición relativa de cada observación dentro de la distribución para transformar los datos a una nueva escala.

    A diferencia de técnicas como Min-Max Scaling o Standardization, que únicamente modifican la escala de los datos, Quantile Transformation también modifica la forma de la distribución, permitiendo obtener variables con una distribución uniforme o aproximadamente normal.

    ¿Qué es Quantile Transformation?

    Quantile Transformation es una técnica de transformación basada en rangos que convierte los valores de una variable utilizando su posición relativa dentro de la distribución original.

    El procedimiento consiste en:

    • Ordenar los datos.
    • Calcular el percentil o cuantíl correspondiente a cada observación.
    • Asignar un nuevo valor según una distribución objetivo.

    Las distribuciones objetivo más utilizadas son:

    • Distribución uniforme.
    • Distribución normal (gaussiana).

    Como resultado, la forma original de la distribución cambia completamente.

    ¿Cómo Funciona?

    El proceso puede resumirse en tres etapas:

    • Ordenar las observaciones de menor a mayor.
    • Calcular la posición relativa de cada valor dentro de la distribución.
    • Transformar dicha posición a una nueva distribución objetivo.

    Por ejemplo, supongamos los siguientes valores y las posiciones relativas:

    ValorPercentil
    100%
    2025%
    3050%
    4075%
    50100%

    Posteriormente estos percentiles se proyectan sobre una nueva distribución.

    Distribución Uniforme

    Cuando se utiliza una distribución uniforme, cada observación se transforma a un valor comprendido entre 0 y 1.

    El resultado presenta:

    • Valores distribuidos uniformemente.
    • Mismo número aproximado de observaciones en cada intervalo.

    Ejemplo:

    Valor OriginalTransformado
    100.00
    200.25
    300.50
    400.75
    501.00

    Distribución Normal

    Cuando se selecciona una distribución normal como objetivo, los percentiles se transforman utilizando la función inversa de la distribución normal acumulada. El resultado es una variable que presenta una forma aproximadamente gaussiana. Esta opción es especialmente útil para algoritmos que asumen normalidad.

    Ejemplo Práctico

    ventas = [1000, 1500, 2000, 2500, 100000

    La distribución presenta una fuerte asimetría positiva debido al valor extremo de 100000.

    Tras aplicar Quantile Transformation:

    • Los ingresos se redistribuyen según sus posiciones relativas.
    • El valor extremo deja de dominar la escala.
    • La distribución se vuelve mucho más equilibrada.
    ventas_transformadas = [0.00, 0.25, 0.50, 0.75, 1.00]

    Beneficios de Quantile Transformation

    • Reduce significativamente la asimetría.
    • Disminuye el impacto de valores atípicos.
    • Puede aproximar una distribución normal.
    • Permite obtener una distribución uniforme.
    • Facilita el entrenamiento de algoritmos sensibles a la distribución.
    • Mejora la estabilidad de ciertos modelos estadísticos.
    • Funciona correctamente con distribuciones muy complejas.

    ¿Cuándo Utilizar Quantile Transformation?

    • Existen distribuciones altamente sesgadas.
    • Hay presencia de valores extremos importantes.
    • Se necesita aproximar una distribución normal.
    • Los métodos de escalado tradicionales no producen buenos resultados.
    • Se trabaja con algoritmos sensibles a la forma de la distribución.

    Ventajas

    • Es robusta frente a valores atípicos.
    • Reduce eficazmente la asimetría.
    • Puede transformar distribuciones muy complejas.
    • No depende de la media ni de la desviación estándar.
    • Permite elegir entre distribución uniforme o normal.
    • Suele mejorar el comportamiento de muchos algoritmos de Machine Learning.
    • Funciona correctamente con datos no gaussianos.

    Desventajas

    • Modifica completamente la forma original de la distribución.
    • Puede dificultar la interpretación de los resultados.
    • La relación lineal entre variables puede alterarse.
    • Los valores transformados dejan de tener unidades interpretables.
    • Puede generar sobreajuste si se utiliza incorrectamente.
    • Requiere más procesamiento que técnicas simples de escalado.

    Limitaciones

    • No conserva la distribución original.
    • Puede afectar la interpretabilidad de las variables.
    • No siempre mejora el rendimiento del modelo.
    • Puede distorsionar relaciones estadísticas importantes.
    • Su comportamiento puede variar cuando aparecen nuevos datos fuera del rango observado durante el entrenamiento.

    Por este motivo, debe utilizarse después de analizar cuidadosamente la naturaleza de los datos y los requisitos del modelo.

    Comparación con Otros Métodos de Escalado

    CaracterísticaMin-MaxStandardScalerRobustScalerQuantile Transformer
    Escala fijaNoNo
    Sensible a outliersBajaMuy baja
    Reduce asimetríaNoNoNo
    Aproxima normalidadNoNoNo
    Conserva distribución originalNo
    Transformación no linealNoNoNo

    Aplicaciones en Data Science y Machine Learning

    Quantile Transformation se utiliza frecuentemente en:

    • Regresión Lineal.
    • Regresión Logística.
    • Support Vector Machines (SVM).
    • Redes Neuronales.
    • PCA.
    • Clustering.
    • Sistemas de detección de anomalías.
    • Modelos estadísticos que requieren normalidad aproximada.

    También resulta útil en procesos de preparación de datos donde existen distribuciones altamente sesgadas o con colas largas.

    Implementación en Python

    Aplicación Básica con Distribución Uniforme

    from sklearn.preprocessing import QuantileTransformer
    import pandas as pd
    
    df = pd.DataFrame({
        "ingresos": [1000, 1500, 2000, 2500, 100000]
    })
    
    qt = QuantileTransformer(
        output_distribution="uniform"
    )
    
    df["ingresos_transformados"] = qt.fit_transform(
        df[["ingresos"]]
    )
    
    print(df)
    

    Aplicación con Distribución Normal

    from sklearn.preprocessing import QuantileTransformer
    
    qt = QuantileTransformer(
        output_distribution="normal"
    )
    
    X_transformado = qt.fit_transform(X)
    

    Ajuste del Número de Cuantiles

    from sklearn.preprocessing import QuantileTransformer
    
    qt = QuantileTransformer(
        n_quantiles=1000,
        output_distribution="normal"
    )
    
    X_transformado = qt.fit_transform(X)
    

    Uso dentro de un Pipeline

    from sklearn.pipeline import Pipeline
    from sklearn.preprocessing import QuantileTransformer
    from sklearn.linear_model import LogisticRegression
    
    pipeline = Pipeline([
        (
            "quantile",
            QuantileTransformer(
                output_distribution="normal"
            )
        ),
        (
            "model",
            LogisticRegression()
        )
    ])
    
    pipeline.fit(X_train, y_train)
    

    Esta estrategia evita problemas de data leakage y garantiza que la transformación se aplique correctamente durante el entrenamiento y la inferencia.

    Buenas Prácticas

    Al utilizar Quantile Transformation es recomendable:

    • Analizar la distribución original antes de aplicar la transformación.
    • Comparar los resultados con Box-Cox y Yeo-Johnson.
    • Ajustar el transformador únicamente con los datos de entrenamiento.
    • Aplicar exactamente la misma transformación sobre los datos de prueba.
    • Evaluar el impacto sobre la interpretabilidad de las variables.
    • Verificar si realmente mejora el rendimiento del modelo.

    Conclusión

    Quantile Transformation es una de las técnicas de transformación más potentes disponibles en Scikit-Learn para tratar distribuciones complejas, altamente asimétricas y con presencia de valores extremos. Su enfoque basado en cuantiles permite transformar los datos hacia distribuciones uniformes o aproximadamente normales, reduciendo significativamente el impacto de los outliers y mejorando la calidad de las variables utilizadas en el modelado.

    Aunque modifica la forma original de la distribución y puede dificultar la interpretación de los resultados, constituye una herramienta muy valiosa cuando las técnicas de escalado tradicionales no son suficientes para preparar adecuadamente los datos para el análisis o el entrenamiento de modelos de Machine Learning.

  • Robust Scaling

    En los proyectos de Data Science y Machine Learning, es habitual encontrar variables numéricas con valores atípicos (outliers) que pueden distorsionar significativamente los procesos de análisis y modelado. Cuando se aplican técnicas de escalado tradicionales como Min-Max Scaling o Standardization (Z-Score), estos valores extremos pueden influir en los parámetros utilizados para la transformación, produciendo resultados poco representativos para la mayoría de las observaciones.

    Para solucionar este problema, Scikit-Learn proporciona una técnica denominada Robust Scaling, diseñada específicamente para escalar variables numéricas utilizando medidas estadísticas robustas que son menos sensibles a los valores extremos.

    Esta técnica es especialmente útil cuando se trabaja con datos reales, donde la presencia de outliers es frecuente y no siempre es conveniente eliminarlos.

    ¿Qué es Robust Scaling?

    Robust Scaling es una técnica de escalado que transforma las variables utilizando:

    • La mediana como medida de tendencia central.
    • El rango intercuartílico (IQR) como medida de dispersión.

    A diferencia de StandardScaler, que utiliza la media y la desviación estándar, RobustScaler emplea estadísticas que apenas se ven afectadas por valores extremos. El objetivo es conseguir que las variables tengan una escala comparable sin que los outliers distorsionen la transformación.

    ¿Cómo Funciona?

    La transformación consiste en restar la mediana a cada observación y dividir posteriormente por el rango intercuartílico.

    La fórmula utilizada es:

    $$x’=\frac{x-Q_2}{Q_3-Q_1}$$

    Donde:

    • Q₁ representa el primer cuartil (25%).
    • Q₂ representa la mediana (50%).
    • Q₃ representa el tercer cuartil (75%).
    • Q₃ – Q₁ corresponde al rango intercuartílico (IQR).

    Como resultado:

    • La mediana queda centrada en 0.
    • La escala se basa en el rango central de los datos.
    • Los valores extremos tienen una influencia mucho menor.

    Conceptos Clave

    Para comprender Robust Scaling es necesario conocer los cuartiles. Supongamos la siguiente distribución ordenada:

    10, 15, 20, 25, 30, 35, 40, 45, 50

    Los cuartiles serían:

    • Q1 = 20
    • Mediana (Q2) = 30
    • Q3 = 40

    Por tanto:

    IQR = Q3 - Q1 = 40 - 20 = 20

    El rango intercuartílico representa la dispersión del 50% central de los datos, ignorando los extremos.

    Beneficios de Robust Scaling

    • Reduce la influencia de valores atípicos.
    • Utiliza estadísticas robustas frente a observaciones extremas.
    • Facilita la comparación entre variables con distintas magnitudes.
    • Mantiene la estructura general de los datos.
    • Mejora el comportamiento de algoritmos sensibles a la escala.
    • Resulta especialmente útil en conjuntos de datos reales con ruido.

    ¿Cuándo Utilizar Robust Scaling?

    • Existen valores atípicos significativos.
    • No se desea eliminar los outliers.
    • Las variables presentan distribuciones con colas largas.
    • Se utilizan algoritmos sensibles a la escala.
    • Los datos provienen de fuentes reales con alta variabilidad.

    También suele ser una excelente alternativa cuando StandardScaler produce resultados poco satisfactorios debido a la presencia de observaciones extremas.

    Ventajas

    • Es mucho menos sensible a outliers que Min-Max Scaling y StandardScaler.
    • Mantiene la información de los datos extremos.
    • No requiere eliminar observaciones atípicas.
    • Es sencillo de implementar.
    • Funciona correctamente con distribuciones no normales.
    • Mejora la estabilidad de muchos algoritmos.

    Desventajas

    • No elimina los valores atípicos.
    • Los outliers continúan presentes en el conjunto de datos.
    • No corrige problemas de asimetría.
    • No transforma la distribución hacia una forma normal.
    • Puede ser menos intuitivo de interpretar que Min-Max Scaling.
    • No siempre ofrece mejoras cuando los datos carecen de valores extremos.

    Limitaciones

    Es importante entender que Robust Scaling no sustituye otras técnicas de preparación de datos.

    Entre sus principales limitaciones se encuentran:

    • No reduce la asimetría de una distribución.
    • No corrige heterocedasticidad.
    • No elimina errores de captura de datos.
    • No aproxima la distribución a una normal.
    • No reemplaza el tratamiento específico de outliers cuando estos son errores evidentes.

    Si el objetivo es corregir distribuciones sesgadas, técnicas como Box-Cox o Yeo-Johnson suelen ser más adecuadas.

    Comparación con Otros Métodos de Escalado

    CaracterísticaMin-MaxStandardScalerRobustScaler
    Utiliza mediaNoNo
    Utiliza medianaNoNo
    Utiliza desviación estándarNoNo
    Utiliza IQRNoNo
    Sensible a outliersAltaAltaBaja
    Escala fijaNoNo
    Adecuado para datos con outliersNoParcialmente

    Aplicaciones en Data Science y Machine Learning

    Robust Scaling se utiliza frecuentemente en:

    • Regresión Lineal.
    • Regresión Logística.
    • Support Vector Machines (SVM).
    • K-Nearest Neighbors (KNN).
    • K-Means.
    • Redes Neuronales.
    • PCA.
    • Modelos de clustering.
    • Sistemas de detección de anomalías.

    Es especialmente útil cuando los datos contienen valores extremos que no deben eliminarse porque representan situaciones reales del negocio.

    Implementación en Python

    Aplicación Básica con Scikit-Learn

    from sklearn.preprocessing import RobustScaler
    import pandas as pd
    
    df = pd.DataFrame({
        "salario": [20000, 25000, 28000, 30000, 32000, 35000, 500000]
    })
    
    scaler = RobustScaler()
    
    df["salario_robust"] = scaler.fit_transform(df[["salario"]])
    
    print(df)
    

    Escalado de varias variables

    from sklearn.preprocessing import RobustScaler
    
    scaler = RobustScaler()
    
    X_scaled = scaler.fit_transform(X)
    

    Personalización del Rango Intercuartílico

    Por defecto se utiliza el rango comprendido entre los percentiles 25 y 75. Sin embargo, puede modificarse:

    from sklearn.preprocessing import RobustScaler
    
    scaler = RobustScaler(
        quantile_range=(10, 90)
    )
    
    X_scaled = scaler.fit_transform(X)
    

    Uso dentro de un Pipeline

    from sklearn.pipeline import Pipeline
    from sklearn.preprocessing import RobustScaler
    from sklearn.linear_model import LogisticRegression
    
    pipeline = Pipeline([
        ("scaler", RobustScaler()),
        ("model", LogisticRegression())
    ])
    
    pipeline.fit(X_train, y_train)
    

    Esta es la forma recomendada para evitar problemas de data leakage durante el entrenamiento del modelo.

    Buenas Prácticas

    • Analizar previamente la presencia de outliers.
    • Comparar los resultados con StandardScaler y MinMaxScaler.
    • Ajustar el escalador únicamente con los datos de entrenamiento.
    • Aplicar la misma transformación a los datos de prueba.
    • Integrar el proceso dentro de un Pipeline.
    • Evaluar si los valores extremos representan errores o información relevante.

    Conclusión

    Robust Scaling es una técnica de escalado diseñada para trabajar eficazmente con conjuntos de datos que contienen valores atípicos. Al utilizar la mediana y el rango intercuartílico en lugar de la media y la desviación estándar, consigue reducir significativamente la influencia de los outliers sin necesidad de eliminarlos.

    Gracias a esta característica, se ha convertido en una herramienta fundamental dentro de los procesos modernos de preparación de datos para Machine Learning. Aunque no corrige problemas de asimetría ni transforma la distribución de los datos, proporciona una escala más estable y representativa cuando se trabaja con datos reales que contienen observaciones extremas.

  • Standard Scaling (Z-Score)

    Una de las técnicas más utilizadas para resolver rl problema de variables que poseen escalas muy diferentes, es la estandarización mediante Z-Score, también conocida como Standardization o Standard Scaling. A diferencia de Min-Max Scaling, esta técnica no transforma los datos a un rango fijo, sino que los centra alrededor de la media y los escala utilizando la desviación estándar.

    ¿Qué es Standardization (Z-Score)?

    La estandarización es una técnica de escalado que transforma una variable para que tenga:

    • Media igual a 0.
    • Desviación estándar igual a 1.
    • Una escala comparable con otras variables del conjunto de datos.

    Tras la transformación, los valores dejan de representar las unidades originales y pasan a indicar cuántas desviaciones estándar se encuentran por encima o por debajo de la media.

    Esta técnica es especialmente útil cuando se desea comparar variables con unidades diferentes o cuando se utilizan algoritmos sensibles a la magnitud de las características.

    ¿Cómo Funciona?

    La estandarización calcula la distancia de cada observación respecto a la media de la variable y posteriormente divide dicha distancia por la desviación estándar.

    La fórmula utilizada es:

    $$z=\frac{x-\mu}{\sigma}$$

    Donde:

    • x es el valor original.
    • μ es la media de la variable.
    • σ es la desviación estándar.
    • z es el valor estandarizado.

    El resultado indica la posición relativa de una observación dentro de la distribución.

    Interpretación del Z-Score

    Después de la transformación:

    • Un valor de 0 indica que la observación coincide con la media.
    • Un valor positivo indica que está por encima de la media.
    • Un valor negativo indica que está por debajo de la media.
    • Un valor de 2 significa que la observación se encuentra a dos desviaciones estándar por encima de la media.

    Ejemplo Práctico

    Supongamos una variable que representa edades:

    edad = [20, 30, 40, 50, 60]
    media = 40
    std_desviation = 14.14
    
    edad_zscore = [-1.41, -0.71, 0.00, 0.71, 1.41]

    Ahora todas las observaciones están expresadas en función de su distancia respecto a la media.

    Beneficios de Standardization

    Entre las principales ventajas de esta técnica destacan:

    • Permite comparar variables con unidades completamente diferentes.
    • Centra los datos alrededor de la media.
    • Facilita el entrenamiento de algoritmos basados en gradientes.
    • Reduce los problemas derivados de diferencias de escala.
    • Mejora la estabilidad numérica de muchos modelos.
    • Favorece la convergencia de algoritmos de optimización.
    • Es una de las técnicas de escalado más utilizadas en Machine Learning.

    ¿Cuándo Utilizar Standardization?

    • Las variables presentan escalas muy diferentes.
    • Se utilizan algoritmos sensibles a la magnitud de las características.
    • Los datos tienen una distribución aproximadamente normal.
    • Se desea comparar la importancia relativa de diferentes variables.
    • Se trabaja con métodos basados en distancia o componentes principales.

    Es especialmente útil cuando la distribución de los datos no necesita ser comprimida, sino simplemente escalada.

    Ventajas

    • Conserva la forma de la distribución original.
    • Facilita la comparación entre variables.
    • Es adecuada para variables con distribuciones aproximadamente normales.
    • Mejora el rendimiento de numerosos algoritmos de Machine Learning.
    • No restringe los datos a un rango fijo.

    Desventajas

    • Es sensible a valores atípicos.
    • Los outliers pueden afectar la media y la desviación estándar.
    • No corrige distribuciones altamente sesgadas.
    • No reduce el impacto de observaciones extremas.
    • No garantiza una distribución normal.
    • Los valores transformados pueden ser difíciles de interpretar para usuarios de negocio.

    Limitaciones

    • No elimina outliers.
    • No corrige problemas de asimetría.
    • No modifica la forma de la distribución.
    • Puede verse afectada por valores extremos.
    • No siempre es la mejor opción para datos con distribuciones muy sesgadas.

    En escenarios con muchos outliers suele ser preferible utilizar técnicas como RobustScaler.

    Aplicaciones en Data Science y Machine Learning

    La estandarización es especialmente útil en:

    • Regresión Lineal.
    • Regresión Logística.
    • Support Vector Machines (SVM).
    • Redes Neuronales.
    • PCA (Principal Component Analysis).
    • K-Means.
    • K-Nearest Neighbors (KNN).
    • Análisis de Clustering.
    • Métodos basados en gradientes.

    En estos algoritmos, la escala de las variables influye directamente sobre el rendimiento y la estabilidad del entrenamiento.

    Comparación con Min-Max Scaling

    CaracterísticaStandardizationMin-Max Scaling
    Media centrada en 0No
    Desviación estándar igual a 1No
    Rango fijoNo
    Sensible a outliers
    Conserva distribución
    Fácil interpretación relativaAltaMedia
    Adecuado para PCA
    Adecuado para redes neuronales

    Implementación en Python

    Aplicación Básica con Scikit-Learn

    from sklearn.preprocessing import StandardScaler
    import pandas as pd
    
    df = pd.DataFrame({
        "edad": [20, 30, 40, 50, 60]
    })
    
    scaler = StandardScaler()
    
    df["edad_estandarizada"] = scaler.fit_transform(df[["edad"]])
    
    print(df)
    

    Escalado de varias variables

    from sklearn.preprocessing import StandardScaler
    
    scaler = StandardScaler()
    
    X_scaled = scaler.fit_transform(X)
    

    Obtener la Media y la Desviación Estándar

    from sklearn.preprocessing import StandardScaler
    
    scaler = StandardScaler()
    
    scaler.fit(X)
    
    print(scaler.mean_)
    print(scaler.scale_)
    

    Uso dentro de un Pipeline

    from sklearn.pipeline import Pipeline
    from sklearn.preprocessing import StandardScaler
    from sklearn.linear_model import LogisticRegression
    
    pipeline = Pipeline([
        ("scaler", StandardScaler()),
        ("model", LogisticRegression())
    ])
    
    pipeline.fit(X_train, y_train)
    

    Esta es la práctica recomendada para evitar fugas de información (data leakage) entre los conjuntos de entrenamiento y prueba.

    Buenas Prácticas

    • Ajustar el escalador únicamente con los datos de entrenamiento.
    • Aplicar la misma transformación a los datos de validación y prueba.
    • Analizar previamente la presencia de outliers.
    • Comparar su rendimiento frente a Min-Max Scaling y RobustScaler.
    • Integrar la transformación dentro de un Pipeline.
    • Evaluar el impacto del escalado sobre el rendimiento del modelo.

    Conclusión

    La estandarización mediante Z-Score es una de las técnicas de escalado más importantes y utilizadas en Machine Learning. Su objetivo es centrar las variables alrededor de una media de cero y una desviación estándar de uno, permitiendo que todas las características contribuyan de forma equilibrada al entrenamiento de los modelos.

    Gracias a su simplicidad, interpretabilidad y compatibilidad con numerosos algoritmos, Standardization se ha convertido en una herramienta fundamental dentro de cualquier proceso moderno de preparación de datos. Aunque no corrige problemas de asimetría ni elimina valores atípicos, constituye una excelente opción cuando se necesita trabajar con variables en escalas comparables y mejorar la estabilidad de los algoritmos de aprendizaje automático.