Identificando Relaciones Lineales Entre Variables En Machine Learning

Los modelos lineales suponen que las variables independientes, X, adoptan una relación lineal con la variable dependiente, Y. Esta relación puede ser dictada por la siguiente ecuación (Ecuación de una línea recta)

Screenshot%20from%202021-02-23%2009-03-29.png

Aquí, X especifica las variables independientes y β son los coeficientes que indican un cambio de unidad en Y para un cambio de unidad en X. Si este supuesto no se cumple, el rendimiento del modelo puede ser deficiente. Las relaciones lineales pueden evaluarse mediante gráficos de dispersión y gráficos de residuos. Los gráficos de dispersión muestran la relación entre la variable independiente "X" y el objetivo "Y".

Los residuos (Pérdida - error) son la diferencia entre la estimación lineal de Y utilizando X y el objetivo real

Screenshot%20from%202021-02-23%2009-04-17.png

Los modelos lineales suponen que las variables dependientes X adoptan una relación lineal con la variable dependiente Y. Si la suposición no es cierta, el modelo puede mostrar un mal rendimiento. Vamos a visualizar las relaciones lineales entre X y Y.

En la siguiente celda importa las siguientes librerías: pandas, numpy, matplotlib, seaborn, y sklearn LinearRegression

Ahora vamos a importar el conjunto de datos de Boston Houses de skit-learn. Importa load_boston de sklearn.datasets

Asigna a la variable boston_dataset la instancia load_boston()

A continuación, creamos el dataframe con las variables independientes, recuerda que puedes accede3r a ellas llamando a boston_dataset.data y a los nombre de las columnas puedes acceder de la siguiente manera boston_dataset.feature_names. Asigna este nuevo dataframe a la variable boston.

Para acceder a los valores de y, lo hacemos de la siguiente manera = boston_dataset.target. Crea una nueva columna llamada MEDV con la función que acabamos de mostrar, e imprime de nuevo el dataframe de boston

Aquí está la información sobre el conjunto de datos. Familiarícese con las variables antes de continuar con el ejercicio.

El objetivo es predecir el "Valor Medio de la Casa" La columna MEDV en este conjunto de datos y tenemos variables con características sobre las casas y los barrios. Ejecute la siguiente línea, imprima boston_dataset.DESCR y revise en detalleel dataset

Ahora sabemos que el valor de y en ese conjunto de datos es MEDV porque es la variable que queremos predecir, es decir, ¡el precio! Mientras que los valores de x son todas las demás columnas del conjunto de datos. Los gráficos de dispersión sólo nos permiten comparar dos variables, así que debemos hacer un gráfico de dispersión para cada variable x. Veamos dos de ellos

Grafica un scatterplot con seaborn que lleve el valor de x a la columna LSTAT y el valor de y a MEDV

Aunque no es perfecta, la relación es bastante lineal. Pero fíjese en que es una relación lineal negativa, ya que a medida que aumenta el LSTAT, disminuye el precio del MEDV.

Dibuje ahora la relación entre el CRIM y el MEDV.

Como ya hemos visto, las relaciones lineales también pueden evaluarse mediante la valoración de los residuos. Los residuos son la diferencia entre el valor estimado (predicho) y el real. Si la relación es lineal, los residuos deberían estar distribuidos normalmente y centrados en torno a cero.

Cree el modelo instanciando LinearRegression() de scikit learn y asignándolo a la variable linreg.

Muy bien. Ahora vamos a hacer los pasos del análisis de residuos, y teniendo en cuenta sólo una Variable/Columna = LSTAT.

En la siguiente celda, siga todos los pasos del entrenamiento del modelo y la predicción del modelo. Para esto ultimo, asigne los resultados de la predicción a la variable pred

Calcule ahora los residuos, esto se hace restando la variable objetivo a las predicciones. El resultado asignelo a la variable error

Ahora realice un scatterplot con matplotlib entre pred (para X) y la variable objetivo MEDV para y. Esto seria un grafico para comparar los valores predichos contra los valores reales

Ahora realice el mismo scatterplot pero entre errors como eje y y la columna LSTAT como x. Si la relación es lineal, el ruido debe ser aleatorio, centrado en cero, y seguir una distribución normal.

Dibuja ahora un histograma con seaborn de los residuos (error) y con 30 bins. El histograma sigue una distribución gaussiana? Porque?

Conclusión

En este caso concreto, los residuos están centrados en torno a cero, pero no se distribuyen de forma homogénea entre los valores de LSTAT. Los valores de LSTAT más grandes y más pequeños muestran valores residuales más altos. Además, vemos en el histograma que los residuos no adoptan una distribución estrictamente gaussiana.

Tienes un dataset con más columnas para jugar, que tal si pruebas otras y revisas las distribuciones una por una. O que tal si corres un comando que permita dibujar un histograma para todas las caracteristicas, sin necesidad de ir uno por uno? En pandas ya existe, haz una pequeña busqeuda en Google y demuestrale a la comunidad lo que encontraste!