CursosEmpresasBlogLiveConfPrecios

Introducción a la imputación basada en modelos

Clase 14 de 17 • Curso de Manejo de Datos Faltantes: Imputación

Clase anteriorSiguiente clase

Contenido del curso

Problemática de valores faltantes
  • 1
    El problema de trabajar con valores faltantes

    El problema de trabajar con valores faltantes

    10:56
  • 2
    Proceso de análisis y limpieza de datos

    Proceso de análisis y limpieza de datos

    13:19
  • 3
    Visualizar y eliminar valores faltantes

    Visualizar y eliminar valores faltantes

    08:19
  • 4
    Implicaciones de los distintos tipos de valores faltantes

    Implicaciones de los distintos tipos de valores faltantes

    09:43
  • 5
    Amplía tu conjunto de herramientas para explorar valores faltantes

    Amplía tu conjunto de herramientas para explorar valores faltantes

    11:55
  • 6
    Tratamiento de variables categóricas para imputación: codificación ordinal

    Tratamiento de variables categóricas para imputación: codificación ordinal

    15:59
  • 7
    Tratamiento de variables categóricas para imputación: one-hot encoding

    Tratamiento de variables categóricas para imputación: one-hot encoding

    12:51
  • 8
    Métodos de imputación de valores faltantes

    Métodos de imputación de valores faltantes

    04:41
Imputación basada en el donante
  • 9
    Imputación por media, mediana y moda

    Imputación por media, mediana y moda

    10:22
  • 10
    Imputación por llenado hacia atrás y hacia adelante

    Imputación por llenado hacia atrás y hacia adelante

    09:20
  • 11
    Imputación por interpolación

    Imputación por interpolación

    11:46
  • 12
    Imputación por KNN

    Imputación por KNN

    04:34
  • 13
    Imputación por KNN en Python

    Imputación por KNN en Python

    12:01
Imputación basada en modelos
  • 14
    Introducción a la imputación basada en modelos

    Introducción a la imputación basada en modelos

    13:27
  • 15
    Imputaciones Múltiples por Ecuaciones Encadenadas (MICE)

    Imputaciones Múltiples por Ecuaciones Encadenadas (MICE)

    13:05
Conclusión
  • 16
    Transformación inversa de los datos

    Transformación inversa de los datos

    07:07
  • 17
    ¿Cómo continuar practicando?

    ¿Cómo continuar practicando?

    03:09
    Jeinfferson Bernal G

    Jeinfferson Bernal G

    student•
    hace 3 años

    Proceso para la Imputacion basada en Modelos

    Cuando se utiliza un modelo para imputar, en principio no aceptan valores faltantes por lo que el primer paso es imputar los valores faltantes con dummies. Luego se utiliza el modelo y se va iterando hasta que los valores que hemos sustituido con dummies no cambien. Justo alli se llega a una optima imputacion.

    • Preparacion de los datos
    # preparamos los datos de la variable a imputar nhanes_model_df= ( nhanes_df .select_columns('height', 'weight', 'gender', 'age') # seleccionamos columnas .sort_values(by='height') # ordenamos en funcion de height # sustituir los valores faltantes con dummies .transform_column( 'weight', # variable de interes lambda x: x.ffill(), elementwise = False ) # matriz de sombra con el sufijo imp .missing.bind_shadow_matrix2( True, False, suffix='_imp', only_missing=False # matriz de sombra para todas las variables ) ) nhanes_model_df
    Untitled (8).png
    • Preparacion del modelo
    # para este ejemplo vamos a utilizar la regresion lineal como modelo height_ols = ( nhanes_model_df .pipe( lambda df: smf.ols('height ~ weight + gender + age', data=df) ) .fit() )
    • Generacion de los valores imputados mediante el modelo
    # obtener solo las observaciones con valores nulos en la variable height ( nhanes_model_df .pipe( lambda df: df[df.height.isna()] ) )
    Untitled (9).png
    # utilizamos el modelo para generar los valores imputados ols_imputed_values = ( nhanes_model_df .pipe( lambda df: df[df.height.isna()] ) # aplicamos el modelo. Los valores imputados se redondean debido a que son enteros .pipe( lambda df: height_ols.predict(df).round() ) ) ols_imputed_values
    Untitled (10).png
    • Sustitucion de los valores imputados en el Dataset
    # sustituimos los valores imputados generados con # el modelo en la variable asociada nhanes_model_df.loc[nhanes_model_df.height.isna(), ['height']] = ols_imputed_values nhanes_model_df
    Untitled (11).png
    • Visualizacion de los valores imputados
    ( nhanes_model_df .missing .scatter_imputation_plot( x = 'weight', # variable independiente y = 'height' # variable objetivo ) )
    Untitled (12).png

    La grafica nos muestra la imputacion de la variable height en funcion de la variable weight. Observamos dos bloques de datos lo que podria indicar que se trata de la diferencia en peso entre mujeres y hombres.

    El siguiente paso para aprovechar mejor el modelo es repetir todos los pasos anteriores pero en la preparacion de los datos, en vez de utilizar los valores dummies para weight, utilizamos la variable height con los valores imputados por el modelo. De esta manera ahora se busca imputar los valores de la variable weight en vez de los de height que ya han sido imputados.

      Julián Cárdenas

      Julián Cárdenas

      student•
      hace 2 años

      Que buen aporte! 👏

      Jorge Miguel Diaz

      Jorge Miguel Diaz

      student•
      hace 2 años

      Buen aporte! 👍

    Jeinfferson Bernal G

    Jeinfferson Bernal G

    student•
    hace 3 años

    Imputacion basada en Modelos

    Ventajas

    • Mejora sobre la imputacion basada en donantes sencilla
    • Presenta gran variedad de opciones para imputar. Puedes elegir tecnicas de Machine Learning como puede ser un SVM o tecnicas de Deep Learning como Redes Neuronales.
    • Preserva la relacion entre las variables

    Desventajas

    • Puede subestimar la varianza. Tambien arrastra todos los defecto que presente el modelo.
    • Los modelos funcionan mal si las variables observadas y faltantes son independientes.
    • Es mas complicado que la imputacion basada en donantes
    Mario Chavez

    Mario Chavez

    student•
    hace 2 años

    Lo que entendí del proceso fue:

    1. Se ordeno el dataset, se rellenaron los valores de weigth con un ffill() y se anadireon las columnas "_imp".
    2. Se creo height_ols que es un modelo predictivo para la variable height tomando en cuenta weight, gender y age basado en Ordinary Least Squares (OLS, una regrecion lineal).
    3. Del dataset se seleccionaron solo las tuplas donde faltaba la altura y se lleno usando el modelo predictivo.
    4. Finalmente se llenaron los valores faltantes del dataset original con los valores calculados.
      Julián Cárdenas

      Julián Cárdenas

      student•
      hace 2 años

      NICEE

      Pablo Alejandro Figueroa

      Pablo Alejandro Figueroa

      student•
      hace 2 años

      Gracias..!

    Andrés Cardona

    Andrés Cardona

    student•
    hace 2 años

    Proceso general

    • Hacer imputación con valores dummies (ffill o bfill) a una (o más) de las variables con datos faltantes con la matriz de confusión -> esta/s variable/s no son las que se van a predecir (imputar) sino se rellenan porque la regresión linean no permite NaN, (sirven de relleno provisional)
    • Ajustar un modelo de regresión lineal (ajustar ecuación de la recta) para la variables a predecir (la que no fue imputada con valores dummies)
    • Se aplica el modelo de regresión lineal (previamente ajustado ) para predecir la variable con datos faltantes
    • Se le pasa al DF original los nuevos valores imputados de la variable que se esta prediciendo (la que tenía valores faltantes)
    • Se grafica con un scatter plot la imputación para revisar

    Se continua con la imputación de las otras variables

    • Se hace otra copia del DF original
    • Se le pasan a la columna correspondiente los valores imputados de la variable anterior predicha
    • Crear en el nuevo DF una matriz de sombra
    • Nota: Si son 2 variables no hay necesidad de imputar con dummies porque ya una de las dos fue imputada con regresión lineal y sirve de "soporte" para imputar la que previamente se relleno con dummies. Si hay más de 2 variables, se deben rellenar con dummies, dejar una como variable a imputar por ols y pasar al nuevo DF la variable recien imputada
    • Se ajusta el modelo de regresión a la nueva variable a predecir (imputar)
    • Se imputa (se predice) la variable con la regresión lineal ajustada
    • Se le pasan los valores recien imputados al DF
    • Se grafica para revisar
    Bryan Carvajal

    Bryan Carvajal

    student•
    hace 3 años

    Copien y presten atención a la explicación!!

    nhanes_model_df = ( nhanes_df.select_columns('height','weight','gender','age') .sort_values(by='height') .transform_column( 'weight', lambda x: x.ffill(), elementwise=False ) .missing.bind_shadow_matrix( True, False, suffix='_imp', only_missing=False ) ) nhanes_model_df
    height_ols = ( nhanes_model_df .pipe(lambda df: smf.ols('height ~ weight + gender + age', data=df)) .fit() )
    ols_imputed_values = ( nhanes_model_df .pipe( lambda df: df[df.height.isna()] ) .pipe( lambda df: height_ols.predict(df).round() ) ) ols_imputed_values
    nhanes_model_df.loc[nhanes_model_df.height.isna(), ['height']] = ols_imputed_values nhanes_model_df
    ( nhanes_model_df.missing.scatter_imputation_plot( x='weight', y='height' ) )
    Mauro Benito Montoya Arenas

    Mauro Benito Montoya Arenas

    student•
    hace 3 años

    ¿Como vamos a trabajar ahora con la columna "weight", si esta ya no tiene valores nulos?

      Mario Chavez

      Mario Chavez

      student•
      hace 2 años

      Puedes extraerlos de dataset orginal (nhanes_df), ya que al principio hizo una copia de este llamada 'nhanes_model_df' para trabajarla y fue la que uso durante el video.

    Fabricio González Guasque

    Fabricio González Guasque

    student•
    hace 6 meses

    Para ayudar a entender la contra de variables independientes: La imputación basada en modelos utiliza algoritmos (como regresión, Random Forest, KNN, etc.) para predecir los valores faltantes en función de otras variables observadas. Por ejemplo, si falta el salario de una persona, un modelo podría predecirlo usando variables como edad, educación, experiencia, etc.

    ¿Por qué el modelo funciona mal si las variables observables y faltantes son independientes?

    La clave está en entender la relación entre las variables:

    1. Si las variables observables y las faltantes son independientes:
      • Esto significa que no hay una relación estadística entre ellas.
      • Por ejemplo, si el salario faltante (Y) es independiente de la edad (X), entonces X no ayuda a predecir Y.
      • En este caso, el modelo no tendrá poder predictivo, y la imputación será como adivinar al azar (usando la media, la mediana, etc.), lo cual no aporta información real.
    2. Si las variables observables y las faltantes están relacionadas:
      • Aquí el modelo sí puede encontrar patrones para predecir los valores faltantes.
      • Por ejemplo, si el salario (Y) está correlacionado con la educación (X), el modelo puede estimar Y usando X.
    Mario Alexander Vargas Celis

    Mario Alexander Vargas Celis

    student•
    hace un año

    La **imputación basada en modelos** es una técnica avanzada utilizada para tratar valores faltantes en los conjuntos de datos mediante el uso de modelos predictivos. A diferencia de métodos simples como la imputación por media o mediana, los modelos predictivos buscan capturar relaciones complejas entre las variables, utilizando información disponible en otras variables para estimar los valores faltantes de manera más precisa.

    ### Conceptos clave

    1. **Modelo predictivo**: Utiliza un algoritmo de aprendizaje automático para estimar los valores faltantes. Algunos de los modelos más comunes para este propósito incluyen regresión lineal, árboles de decisión, k-vecinos más cercanos (KNN), entre otros.

    2. **Ventajas de la imputación basada en modelos**:

    - **Mayor precisión**: Puede capturar relaciones complejas entre las variables, lo que resulta en estimaciones más exactas que los métodos tradicionales.

    - **Flexibilidad**: Puede adaptarse a diferentes tipos de datos (numéricos, categóricos).

    3. **Desventajas**:

    - **Mayor complejidad**: La implementación requiere un mayor conocimiento en machine learning.

    - **Riesgo de sobreajuste**: Si no se gestiona adecuadamente, el modelo puede ajustarse demasiado a los datos de entrenamiento, afectando su capacidad de generalización.

    ### Métodos comunes de imputación basada en modelos

    #### 1. **Regresión Lineal (para variables numéricas)**:

    Este método ajusta un modelo de regresión con las observaciones disponibles y utiliza la relación entre las variables para predecir los valores faltantes.

    - **Ejemplo**: Si tienes un conjunto de datos sobre precios de casas, podrías usar variables como tamaño de la casa, número de habitaciones, y ubicación para predecir los precios faltantes utilizando una regresión lineal.

    #### 2. **Árboles de Decisión**:

    Los árboles de decisión pueden manejar tanto variables numéricas como categóricas y encontrar patrones en los datos para imputar los valores faltantes.

    #### 3. **Imputación por Random Forest**:

    Utiliza múltiples árboles de decisión para construir un modelo robusto y predecir los valores faltantes. Es particularmente efectivo cuando las relaciones entre las variables son complejas.

    #### 4. **Imputación por MICE (Multiple Imputation by Chained Equations)**:

    Este método crea varios modelos iterativos para imputar los valores faltantes de manera secuencial. Cada variable con datos faltantes es imputada basándose en las demás, de manera cíclica. Este proceso se repite varias veces, y el resultado final es la media de las imputaciones.

    ### Implementación de la imputación basada en modelos en Python

    A continuación, te muestro cómo realizar la imputación basada en un modelo de **regresión lineal** utilizando la librería scikit-learn y un conjunto de datos con valores faltantes.

    #### Paso a paso:

    1. **Instalar las dependencias**:

    ```bash

    pip install scikit-learn pandas numpy

    ```

    2. **Ejemplo de imputación basada en regresión lineal**:

    ```python

    import pandas as pd

    import numpy as np

    from sklearn.linear_model import LinearRegression

    from sklearn.model_selection import train_test_split

    # Crear un DataFrame con valores faltantes

    data = {'A': [1, 2, 3, 4, 5],

    'B': [2, np.nan, 6, 8, 10],

    'C': [5, 7, np.nan, 9, 11]}

    df = pd.DataFrame(data)

    # Mostrar el DataFrame original

    print("DataFrame original con valores faltantes:")

    print(df)

    # Separar las observaciones con y sin valores faltantes en la columna 'B'

    df_complete = df[df['B'].notna()]

    df_missing = df[df['B'].isna()]

    # Definir las variables predictoras (features) y la variable objetivo (target)

    X_complete = df_complete[['A', 'C']]

    y_complete = df_complete['B']

    X_missing = df_missing[['A', 'C']]

    # Entrenar un modelo de regresión lineal con los datos completos

    model = LinearRegression()

    model.fit(X_complete, y_complete)

    # Predecir los valores faltantes

    df.loc[df['B'].isna(), 'B'] = model.predict(X_missing)

    # Mostrar el DataFrame con los valores imputados

    print("\nDataFrame con los valores imputados:")

    print(df)

    ```

    ### Explicación del código:

    - **DataFrame con valores faltantes**: Se genera un DataFrame con algunos valores faltantes en la columna 'B'.

    - **Modelo de regresión lineal**: Se entrena un modelo de regresión lineal utilizando las columnas 'A' y 'C' para predecir los valores de la columna 'B'.

    - **Imputación**: Se utilizan las predicciones del modelo para reemplazar los valores faltantes en la columna 'B'.

    ### Salida esperada:

    DataFrame original con valores faltantes:   A B C 0 1 2.0 5.0 1 2 NaN 7.0 2 3 6.0 NaN 3 4 8.0 9.0 4 5 10.0 11.0 DataFrame con los valores imputados:   A B C 0 1 2.0 5.0 1 2 4.0 7.0 2 3 6.0 NaN 3 4 8.0 9.0 4 5 10.0 11.0

    ### Consideraciones finales:

    - Es importante evaluar la calidad de las imputaciones generadas por el modelo para evitar sesgos.

    - Si bien la imputación basada en modelos ofrece mayor precisión que los métodos simples, también puede introducir error si el modelo predictivo no captura bien las relaciones subyacentes entre las variables.

    ### Conclusión:

    La **imputación basada en modelos** es una herramienta poderosa para manejar valores faltantes, especialmente en escenarios donde hay relaciones complejas entre las variables. Al aprovechar modelos de machine learning como regresión lineal, árboles de decisión o random forests, se puede mejorar la precisión de los análisis sin descartar datos importantes.

    Pablo Alejandro Figueroa

    Pablo Alejandro Figueroa

    student•
    hace 2 años

    Al menos hasta acá el que menos ha afectado a la curtosis es ffill en estos ejemplos:

    Captura de pantalla 2024-02-08 010637.png

    Diego Cesar Lerma Torres

    Diego Cesar Lerma Torres

    student•
    hace 2 años
    <img height="151" width="269" src="https://static.platzi.com/media/user_upload/image-1075a344-d5fa-4967-9ad1-fddf4deec710.jpg" />

    La imputación de datos faltantes basada en modelos es una técnica avanzada que utiliza modelos estadísticos o de aprendizaje automático para estimar y reemplazar los valores ausentes en un conjunto de datos. A diferencia de métodos más simples, que pueden depender de la media, mediana o modos, este enfoque intenta aprovechar las relaciones subyacentes entre las variables del conjunto de datos para realizar estimaciones más precisas y coherentes. Los modelos comúnmente empleados incluyen la regresión lineal, regresión logística, árboles de decisión, k-nearest neighbors (KNN), y redes neuronales, entre otros.

    Sintaxis o Etimología

    • Imputación: Proceso de reemplazo de datos faltantes con valores estimados.
    • Modelos Estadísticos o de Aprendizaje Automático: Herramientas que permiten establecer relaciones entre variables y hacer predicciones o estimaciones basadas en datos existentes.
    • Variables: Características o atributos medidos en un conjunto de datos.

    Ejemplos

    1. Imputación Mediante Regresión: Si se identifica una relación lineal entre la variable con datos faltantes y otras variables en el conjunto de datos, se puede emplear un modelo de regresión lineal para estimar los valores faltantes.
    2. Imputación con K-Nearest Neighbors (KNN): Este método selecciona los k registros más similares (donde "k" es un número definido por el usuario) para un registro con datos faltantes y utiliza el promedio (para variables continuas) o la moda (para variables categóricas) de estos registros cercanos para imputar el valor faltante.

    Puntos de Buena Práctica

    • Selección del Modelo: Elegir el modelo de imputación más apropiado basado en el tipo de datos (continuos vs. categóricos), la distribución de los datos, y la relación entre variables.
    • Validación Cruzada: Utilizar técnicas de validación cruzada para ajustar y evaluar la precisión del modelo de imputación, minimizando así el riesgo de sobreajuste.
    • Manejo de Variables Categóricas: En el caso de variables categóricas, considerar el uso de codificación previa (como one-hot encoding) para facilitar la imputación mediante modelos.
    • Evaluación del Impacto de la Imputación: Analizar cómo la imputación afecta los análisis subsiguientes, verificando que las conclusiones no se vean sesgadas o alteradas significativamente debido a las estimaciones de los valores faltantes.
    • Documentación y Transparencia: Registrar detalladamente el proceso de imputación, incluyendo la selección del modelo, los parámetros utilizados y cualquier supuesto relevante, para asegurar que el proceso sea reproducible y transparente.

    La imputación basada en modelos ofrece una forma sofisticada de manejar datos faltantes, permitiendo a los investigadores y analistas de datos aprovechar al máximo su conjunto de datos y realizar análisis más precisos y confiables.

    José Rodrigo Arana Hi

    José Rodrigo Arana Hi

    student•
    hace 2 años

    Vamos a predecir e imputar los nuevos valores de 'weight':

    nhanes_model_df2 = nhanes_df.copy(deep=True)
    nhanes_model_df2.loc[nhanes_model_df2.height.isna(), 'height'] = ols_imputed_values nhanes_model_df2
    nhanes_model_df2 = ( nhanes_model_df2 .select_columns( 'height', 'weight', 'age', 'gender' ) .missing.bind_shadow_matrix(True, False, suffix='_imp') )
    weight_ols = ( nhanes_model_df2 .pipe( lambda df: smf.ols('weight ~ height + gender + age', data=df) ) .fit() )
    ols_weight_imputed_values = ( nhanes_model_df2 .pipe( lambda df: df[df.weight.isna()] ) .pipe( lambda df: weight_ols.predict(df).round() ) ) ols_weight_imputed_values
    nhanes_model_df2.loc[nhanes_model_df2.weight.isna(), 'weight'] = ols_weight_imputed_values nhanes_model_df2
    ( nhanes_model_df2 .missing .scatter_imputation_plot( x='height', y='weight' ) )

    ![](

    output.png

    Jesús Alberto Romero Hernández

    Jesús Alberto Romero Hernández

    student•
    hace 5 meses

    Imputación por Regresión Lineal (Basada en Modelos)

    La imputación por regresión lineal es un método avanzado que utiliza las relaciones entre las variables para estimar los valores faltantes. A diferencia de métodos más simples como la media o la mediana, que solo consideran la distribución de una única variable, la regresión lineal aprovecha la información de otras variables presentes en el dataset.

    Este es un método fundamental y efectivo cuando existe una relación lineal (o curvilínea) entre la variable con valores faltantes y otras variables en el conjunto de datos.

    Concepto

    La idea central es tratar la variable con valores faltantes como una variable dependiente ($Y$) y las otras variables completas y relevantes en el dataset como variables independientes o predictoras ($X$ ). Se construye un modelo de regresión (lineal, polinomial, Ridge, Lasso, etc.) utilizando las observaciones donde la variable dependiente no tiene valores faltantes. Una vez que este modelo está "entrenado" o ajustado, se utiliza para predecir los valores faltantes.

    La ecuación general de una regresión lineal múltiple es:

    $$ Y_{estimado}=β_0+β_1X_1+β_2X_2+⋯+β_nX_n+ϵ $$

    Donde:

    • $Y_{estimado}$: Es la variable dependiente (la que tiene valores faltantes y queremos imputar).
    • $X_1,X_2,…,X_n$: Son las variables independientes o predictoras.
    • $β_0$: Es el intercepto (el valor de Y cuando todas las X son cero).
    • $β_1,β_2,…,β_n$: Son los coeficientes de regresión, que representan el cambio en $Y$ por cada unidad de cambio en la $X$ correspondiente, manteniendo las otras $X$ constantes.
    • $ϵ$: Es el término de error o residuo, que representa la parte de $Y$ que no puede ser explicada por las variables $X$.

    ¿Cómo funciona?

    1. Selección de Variables: Identifica la variable con valores faltantes (Y) y las variables predictoras ($X_1, X_2, ... X_n$).
    2. Entrenamiento del Modelo: Ajusta un modelo de regresión (por ejemplo, Regresión Lineal Simple o Múltiple) utilizando solo las filas donde Y tiene valores presentes:

    $$ Y_{estimado}=β_0+β_1X_1+β_2X_2+⋯+β_nX_n+ϵ $$

    1. Predicción: Utiliza el modelo entrenado para predecir los valores de Y para las filas donde Y tiene valores faltantes, usando los valores de $X_1, X_2, ... X_n$ de esas mismas filas.

    Proceso Detallado Paso a Paso

    Vamos a desglosar el proceso con un ejemplo.

    Escenario de Ejemplo:

    Imaginemos que estamos analizando datos de una tienda en línea y tenemos un dataset con la siguiente información para algunos clientes:

    • Edad (años)
    • Ingresos_Anuales (USD)
    • Horas_Conectado_Sitio (horas por semana)
    • Compras_Ultimo_Mes (cantidad de compras)

    Supongamos que la variable Ingresos_Anuales tiene algunos valores faltantes, y creemos que los ingresos están relacionados con la Edad y las Horas_Conectado_Sitio.

    Nuestro objetivo: Imputar los valores faltantes en Ingresos_Anuales utilizando la imputación por regresión lineal.

    Dataset de Ejemplo (con un valor faltante):

    ClienteEdadHoras_Conectado_SitioCompras_Ultimo_MesIngresos_Anuales1301555000024510375000325207400004508280000535124NaN64018665000

    En este caso, la variable a imputar ($Y$) es Ingresos_Anuales. Las variables predictoras ($X_1,X_2$) que usaremos son Edad y Horas_Conectado_Sitio. Compras_Ultimo_Mes no la usaremos en este ejemplo para simplificar.

    Pasos de la Imputación por Regresión Lineal:

    Paso 1: Separar los datos en dos conjuntos.

    • Conjunto de Entrenamiento (Known Data): Contiene todas las filas donde la variable objetivo (Ingresos_Anuales) no tiene valores faltantes.
    • Conjunto de Predicción (Missing Data): Contiene las filas donde la variable objetivo (Ingresos_Anuales) sí tiene valores faltantes.

    En nuestro ejemplo:

    Conjunto de Entrenamiento:

    ClienteEdad ($X_1$)Horas_Conectado_Sitio ($X_2$)Ingresos_Anuales ($Y$)1301550000245107500032520400004508800006401865000

    Conjunto de Predicción:

    ClienteEdad (X1)Horas_Conectado_Sitio (X2)Ingresos_Anuales (Y)53512NaN

    Paso 2: Entrenar un Modelo de Regresión Lineal.

    Utilizamos el Conjunto de Entrenamiento para construir el modelo. Aquí, Ingresos_Anuales es la variable dependiente (lo que queremos predecir), y Edad y Horas_Conectado_Sitio son las variables independientes.

    El software estadístico o la librería de Machine Learning (como scikit-learn en Python) realizará los cálculos para encontrar los coeficientes $β_0,β_1,β_2$ que mejor ajusten los datos, minimizando la suma de los cuadrados de los residuos.

    Supongamos que, tras entrenar el modelo, obtenemos la siguiente ecuación de regresión (estos son valores ficticios para el ejemplo):

    $$ Ingresos-Anuales_{estimado}=15000+1200×Edad+500×Horas-Conectado-Sitio $$

    Donde:

    • $β_0$=15000 (Intercepto)
    • $β_1$=1200 (Coeficiente para Edad)
    • $β_2$=500 (Coeficiente para Horas_Conectado_Sitio)

    Interpretación de los coeficientes (en este ejemplo ficticio):

    • Por cada año adicional de Edad, los Ingresos_Anuales estimados aumentan en 1200 USD, manteniendo las Horas_Conectado_Sitio constantes.
    • Por cada hora adicional de Horas_Conectado_Sitio, los Ingresos_Anuales estimados aumentan en 500 USD, manteniendo la Edad constante.

    Paso 3: Predecir los valores faltantes.

    Ahora, utilizamos la ecuación del modelo entrenado y los valores de las variables predictoras (Edad, Horas_Conectado_Sitio) del Conjunto de Predicción para estimar los valores faltantes de Ingresos_Anuales.

    Para el Cliente 5:

    • Edad = 35
    • Horas_Conectado_Sitio = 12

    Aplicamos estos valores a nuestra ecuación:

    $$ Ingresos-Anuales_{imputado}=15000+(1200×35)+(500×12) $$

    $$ Ingresos-Anuales_{imputado}=15000+42000+6000 $$

    $$ Ingresos-Anuales_{imputado}=63000 $$

    Paso 4: Reemplazar los valores faltantes.

    Finalmente, el valor imputado de 63000 se inserta en el lugar del NaN en el dataset original.

    Dataset Imputado (Cliente 5):

    ClienteEdadHoras_Conectado_SitioCompras_Ultimo_MesIngresos_Anuales13015550000245103750003252074000045082800005351246300064018665000

    Variantes y Consideraciones Avanzadas en la Imputación por Regresión:

    1. Imputación Estocástica por Regresión:
      • La regresión lineal simple predice el valor promedio esperado para los valores faltantes, lo que puede subestimar la variabilidad natural de los datos.
      • La imputación estocástica aborda esto agregando un residuo aleatorio (error) a la predicción. Este residuo se toma de la distribución de los residuos del modelo de regresión ajustado en el conjunto de entrenamiento.
      • Fórmula: $Y_{imputado}=β_0+β_1X_1+⋯+β_nX_n+Error Aleatorio$
      • Esto ayuda a mantener la variabilidad y a que la distribución de la variable imputada sea más similar a la original, lo que es crucial para la inferencia estadística.
    2. Imputación por Regresión con Otros Modelos:
      • Aunque el ejemplo usó regresión lineal, el mismo principio puede aplicarse con otros modelos de regresión más complejos si las relaciones no son lineales.
      • Regresión Polinomial: Si la relación es curvilínea (e.g., $Y=β_0+β_1X+β_2X_2$).
      • Regresión Logística: Si la variable a imputar es binaria o categórica (aunque para múltiples categorías se suele preferir regresión logística multinomial o modelos de árboles).
      • Árboles de Regresión (CART, Random Forest): Como vimos en el punto 4 de la explicación general, estos pueden manejar relaciones no lineales y heterogéneas. La imputación con Random Forest (como en MissForest) es una forma muy poderosa de regresión para imputación.
    3. Manejo de Variables Categóricas:
      • Si las variables predictoras (X) son categóricas, deben ser codificadas (e.g., One-Hot Encoding) antes de usarlas en un modelo de regresión lineal.
      • Si la variable a imputar (Y) es categórica, no se usa regresión lineal; se usaría un modelo de clasificación (e.g., regresión logística, árbol de clasificación, etc.) y se imputaría la clase predicha o una muestra aleatoria de las probabilidades de clase.
    4. Múltiples Variables Faltantes:
      • Si hay múltiples variables con valores faltantes, la imputación por regresión lineal una a una puede ser problemática porque ignora la interdependencia de los valores faltantes.
      • Aquí es donde MICE (Multiple Imputation by Chained Equations) brilla, ya que utiliza la regresión (o modelos de clasificación) de manera iterativa y encadenada, permitiendo que las imputaciones de una variable influyan en las de otras.

    Ventajas:

    • Considera las Relaciones: Produce estimaciones más precisas al tener en cuenta la correlación entre variables.
    • Reduce el Sesgo: Las imputaciones están más cerca de los valores verdaderos si la relación es fuerte.
    • Mantiene la Varianza (con estocástica): La versión estocástica ayuda a preservar la variabilidad de los datos, lo cual es vital para la inferencia.
    • Fácil de entender e implementar.

    Desventajas:

    • Asunción de Relación: Si la relación entre las variables no es lineal (y no se usa una regresión más compleja), las imputaciones pueden ser inexactas.
    • Dependencia de Predictoras: Si las variables predictoras no tienen una buena relación con la variable faltante, la imputación no será mucho mejor que la media.
    • Subestimación de Varianza (sin estocástica): La imputación determinística (sin añadir error) puede hacer que la varianza de la variable imputada sea menor de lo que realmente es, lo que lleva a errores estándar subestimados y p-valores inflados en análisis posteriores.
    • No maneja MNAR: Si los datos son Missing Not At Random (MNAR), la regresión no corregirá el sesgo inherente a ese patrón de pérdida.
    • Ignora la incertidumbre de la imputación si no se agregan errores estocásticos (ver más adelante).
    • Puede subestimar la variabilidad de los datos si el error residual del modelo es muy pequeño.
    Mauricio Escobar

    Mauricio Escobar

    student•
    hace un año

    Estuve intentado un ratote con un iterative imputer:

    https://scikit-learn.org/stable/modules/generated/sklearn.impute.KNNImputer.html

    • pero al analizar los resultados con MAE y MSE me daban siempre 0, o sea, una convergencia perfecta. por lo que según yo estaría pasando algo raro.
    • en un principio pensé que estaban usándose los mismos datos para entrenamiento y test, cuestión que pude confirmar que no era así. el train test se hizo correctamente.

    Es posible que haya pasado por alto algo o simplemente estoy haciendo algo mal y no me doy cuenta.

    En fin, al margen de eso intenté hacer lo que dijo el profesor al final de la clase. Aunque confieso de tampoco estar 100% seguro de haber hecho bien el proceso. Esta metodología es nueva para mi:

    # (8) imputación para "weight" weight_ols = (df_model_sm .pipe(lambda df: smf.ols('weight ~ height + sex + age', data = df)) .fit()) # (9) valores reales (solo nulos) para "weight" + predicción de nulos weight_ols_nulls = df_model_sm.pipe(lambda df: df[df['weight'].isna()]) weight_ols_pred = weight_ols.predict(weight_ols_nulls).round() df_model_sm.loc[df_model_sm.weight.isna(),['weight']] = weight_ols_pred print(f'Conteo de nulos en weight\ndespués de agregar los nulos imputados: {df_model_sm.weight.isna().sum()}') # Reimputamos height con los vals imputados (weight) height_ols = (df_model_sm .pipe(lambda df: smf.ols('height ~ weight + sex + age', data=df)) .fit()) # Extraer nulos (height) height_ols_nulls = df_model_sm.pipe(lambda df: df[df['height'].isna()]) # predicción: nulos en height height_ols_pred = height_ols.predict(height_ols_nulls).round() # Añadimos las predicciones al df con la shadow matrix df_model_sm.loc[df_model_sm.height.isna(), 'height'] = height_ols_pred print(f'conteo de nulos en height\ndespués de agregar los nulos imputados: {df_model_sm.height.isna().sum()}') ## Graficamos (x -> la variable que ha sido imputada) df_model_sm.missing_plot.scatter_imputation_plot(x= 'height', y = 'weight', imputation_suffix= '__is_imputed')
      Mauricio Escobar

      Mauricio Escobar

      student•
      hace un año

      Spoiler: El iterative imputer lo vemos en la siguiente clase... lol

    Antonio Demarco Bonino

    Antonio Demarco Bonino

    student•
    hace un año

    Me encantaron los modelos!!!! Claramente NO me equivoque de carrera!!!!

    GUSTAVO CHIAPPE

    GUSTAVO CHIAPPE

    student•
    hace 2 años
    Diego Cesar Lerma Torres

    Diego Cesar Lerma Torres

    student•
    hace 2 años

Escuelas

  • Desarrollo Web
    • Fundamentos del Desarrollo Web Profesional
    • Diseño y Desarrollo Frontend
    • Desarrollo Frontend con JavaScript
    • Desarrollo Frontend con Vue.js
    • Desarrollo Frontend con Angular
    • Desarrollo Frontend con React.js
    • Desarrollo Backend con Node.js
    • Desarrollo Backend con Python
    • Desarrollo Backend con Java
    • Desarrollo Backend con PHP
    • Desarrollo Backend con Ruby
    • Bases de Datos para Web
    • Seguridad Web & API
    • Testing Automatizado y QA para Web
    • Arquitecturas Web Modernas y Escalabilidad
    • DevOps y Cloud para Desarrolladores Web
  • English Academy
    • Inglés Básico A1
    • Inglés Básico A2
    • Inglés Intermedio B1
    • Inglés Intermedio Alto B2
    • Inglés Avanzado C1
    • Inglés para Propósitos Específicos
    • Inglés de Negocios
  • Marketing Digital
    • Fundamentos de Marketing Digital
    • Marketing de Contenidos y Redacción Persuasiva
    • SEO y Posicionamiento Web
    • Social Media Marketing y Community Management
    • Publicidad Digital y Paid Media
    • Analítica Digital y Optimización (CRO)
    • Estrategia de Marketing y Growth
    • Marketing de Marca y Comunicación Estratégica
    • Marketing para E-commerce
    • Marketing B2B
    • Inteligencia Artificial Aplicada al Marketing
    • Automatización del Marketing
    • Marca Personal y Marketing Freelance
    • Ventas y Experiencia del Cliente
    • Creación de Contenido para Redes Sociales
  • Inteligencia Artificial y Data Science
    • Fundamentos de Data Science y AI
    • Análisis y Visualización de Datos
    • Machine Learning y Deep Learning
    • Data Engineer
    • Inteligencia Artificial para la Productividad
    • Desarrollo de Aplicaciones con IA
    • AI Software Engineer
  • Ciberseguridad
    • Fundamentos de Ciberseguridad
    • Hacking Ético y Pentesting (Red Team)
    • Análisis de Malware e Ingeniería Forense
    • Seguridad Defensiva y Cumplimiento (Blue Team)
    • Ciberseguridad Estratégica
  • Liderazgo y Habilidades Blandas
    • Fundamentos de Habilidades Profesionales
    • Liderazgo y Gestión de Equipos
    • Comunicación Avanzada y Oratoria
    • Negociación y Resolución de Conflictos
    • Inteligencia Emocional y Autogestión
    • Productividad y Herramientas Digitales
    • Gestión de Proyectos y Metodologías Ágiles
    • Desarrollo de Carrera y Marca Personal
    • Diversidad, Inclusión y Entorno Laboral Saludable
    • Filosofía y Estrategia para Líderes
  • Diseño de Producto y UX
    • Fundamentos de Diseño UX/UI
    • Investigación de Usuarios (UX Research)
    • Arquitectura de Información y Usabilidad
    • Diseño de Interfaces y Prototipado (UI Design)
    • Sistemas de Diseño y DesignOps
    • Redacción UX (UX Writing)
    • Creatividad e Innovación en Diseño
    • Diseño Accesible e Inclusivo
    • Diseño Asistido por Inteligencia Artificial
    • Gestión de Producto y Liderazgo en Diseño
    • Diseño de Interacciones Emergentes (VUI/VR)
    • Desarrollo Web para Diseñadores
    • Diseño y Prototipado No-Code
  • Contenido Audiovisual
    • Fundamentos de Producción Audiovisual
    • Producción de Video para Plataformas Digitales
    • Producción de Audio y Podcast
    • Fotografía y Diseño Gráfico para Contenido Digital
    • Motion Graphics y Animación
    • Contenido Interactivo y Realidad Aumentada
    • Estrategia, Marketing y Monetización de Contenidos
  • Desarrollo Móvil
    • Fundamentos de Desarrollo Móvil
    • Desarrollo Nativo Android con Kotlin
    • Desarrollo Nativo iOS con Swift
    • Desarrollo Multiplataforma con React Native
    • Desarrollo Multiplataforma con Flutter
    • Arquitectura y Patrones de Diseño Móvil
    • Integración de APIs y Persistencia Móvil
    • Testing y Despliegue en Móvil
    • Diseño UX/UI para Móviles
  • Diseño Gráfico y Arte Digital
    • Fundamentos del Diseño Gráfico y Digital
    • Diseño de Identidad Visual y Branding
    • Ilustración Digital y Arte Conceptual
    • Diseño Editorial y de Empaques
    • Motion Graphics y Animación 3D
    • Diseño Gráfico Asistido por Inteligencia Artificial
    • Creatividad e Innovación en Diseño
  • Programación
    • Fundamentos de Programación e Ingeniería de Software
    • Herramientas de IA para el trabajo
    • Matemáticas para Programación
    • Programación con Python
    • Programación con JavaScript
    • Programación con TypeScript
    • Programación Orientada a Objetos con Java
    • Desarrollo con C# y .NET
    • Programación con PHP
    • Programación con Go y Rust
    • Programación Móvil con Swift y Kotlin
    • Programación con C y C++
    • Administración Básica de Servidores Linux
  • Negocios
    • Fundamentos de Negocios y Emprendimiento
    • Estrategia y Crecimiento Empresarial
    • Finanzas Personales y Corporativas
    • Inversión en Mercados Financieros
    • Ventas, CRM y Experiencia del Cliente
    • Operaciones, Logística y E-commerce
    • Gestión de Proyectos y Metodologías Ágiles
    • Aspectos Legales y Cumplimiento
    • Habilidades Directivas y Crecimiento Profesional
    • Diversidad e Inclusión en el Entorno Laboral
    • Herramientas Digitales y Automatización para Negocios
  • Blockchain y Web3
    • Fundamentos de Blockchain y Web3
    • Desarrollo de Smart Contracts y dApps
    • Finanzas Descentralizadas (DeFi)
    • NFTs y Economía de Creadores
    • Seguridad Blockchain
    • Ecosistemas Blockchain Alternativos (No-EVM)
    • Producto, Marketing y Legal en Web3
  • Recursos Humanos
    • Fundamentos y Cultura Organizacional en RRHH
    • Atracción y Selección de Talento
    • Cultura y Employee Experience
    • Gestión y Desarrollo de Talento
    • Desarrollo y Evaluación de Liderazgo
    • Diversidad, Equidad e Inclusión
    • AI y Automatización en Recursos Humanos
    • Tecnología y Automatización en RRHH
  • Finanzas e Inversiones
    • Fundamentos de Finanzas Personales y Corporativas
    • Análisis y Valoración Financiera
    • Inversión y Mercados de Capitales
    • Finanzas Descentralizadas (DeFi) y Criptoactivos
    • Finanzas y Estrategia para Startups
    • Inteligencia Artificial Aplicada a Finanzas
    • Domina Excel
    • Financial Analyst
    • Conseguir trabajo en Finanzas e Inversiones
  • Startups
    • Fundamentos y Validación de Ideas
    • Estrategia de Negocio y Product-Market Fit
    • Desarrollo de Producto y Operaciones Lean
    • Finanzas, Legal y Fundraising
    • Marketing, Ventas y Growth para Startups
    • Cultura, Talento y Liderazgo
    • Finanzas y Operaciones en Ecommerce
    • Startups Web3 y Blockchain
    • Startups con Impacto Social
    • Expansión y Ecosistema Startup
  • Cloud Computing y DevOps
    • Fundamentos de Cloud y DevOps
    • Administración de Servidores Linux
    • Contenerización y Orquestación
    • Infraestructura como Código (IaC) y CI/CD
    • Amazon Web Services
    • Microsoft Azure
    • Serverless y Observabilidad
    • Certificaciones Cloud (Preparación)
    • Plataforma Cloud GCP

Platzi y comunidad

  • Platzi Business
  • Live Classes
  • Lanzamientos
  • Executive Program
  • Trabaja con nosotros
  • Podcast

Recursos

  • Manual de Marca

Soporte

  • Preguntas Frecuentes
  • Contáctanos

Legal

  • Términos y Condiciones
  • Privacidad
  • Tyc promociones
Reconocimientos
Reconocimientos
Logo reconocimientoTop 40 Mejores EdTech del mundo · 2024
Logo reconocimientoPrimera Startup Latina admitida en YC · 2014
Logo reconocimientoPrimera Startup EdTech · 2018
Logo reconocimientoCEO Ganador Medalla por la Educación T4 & HP · 2024
Logo reconocimientoCEO Mejor Emprendedor del año · 2024
De LATAM conpara el mundo
YoutubeInstagramLinkedInTikTokFacebookX (Twitter)Threads