Regresión Lineal Múltiple con Python
En este, mi primer post en Medium, me eh decidido por compartir mi Proyecto 2 del Bootcamp de Data Analytics en Ironhack México.
Con la Regresión Lineal analizamos la relación que tienen dos o mas variables y se puede utilizar para realizar predicciones.
En este proyecto, nos tocó analizar un análisis de un data set de Kaggle, el cual contiene el precio al que fue vendida una casa y todas las características de dicha casa.
Tenemos 81 columnas de datos y unas 1460 filas de información.
No me detendré mucho en la parte de la manipulación de los datos, porque fue un trabajo bastante extenso, pero se los resumo un poco.
Primero revisamos a profundidad el diccionario de los datos, vemos que información nos es útil y cual podemos eliminar sin mayor detenimiento.
Hay algunas variables que podemos convertir directamente en binarias, otras que se puede trabajar con las etiquetas y unas mas que se pueden convertir en dummies para que el análisis sea mas sencillo.
Una transformación muy útil es pasar el precio a Logaritmo, de esa manera reducimos la dimensión en la que se encuentra el rango de precios y será mas fácil para el modelo poder trabajar.
Hasta aquí la parte general de la transformación de los datos. Si deseas verla a profundidad, te invito a ver el código completo en mi GitHub.
Regresión Lineal
Las librerías que usaré específicamente para la regresión son las siguientes:
Para poder realizar una Regresión Lineal buena, tenemos que saber si los datos cumplen con las siguientes características:
1. Normalidad → se cumple ya que realizamos una transformación log en uno de los datos
2. Multicolinearidad → Vamos a revisarlo con el método Factor Inflación de Variación (VIF)
Este método nos indica cuales de las columnas están muy relacionadas unas con otras.
Las reglas son las siguientes:
VIF = 1, no hay multicolinearidad
1 < VIF < 5 = se considera buena la multicolinearidad
5 a 10 < VIF = hay una multicolinearidad muy grande, por lo que podemos eliminar dicha variable.
Así que para este proyecto, voy a eliminar todas aquellas que tengan una multicolinearidad >5. Y esto resultó que mas del 50% de los datos tienen una alta colinealidad.
Previo a eliminarlas, se puede implementar algún PCA o algo similar, para primero tratar de agrupar esa información y no perderla. Yo no lo apliqué, pero si gustas, puedes hacerlo.
Ya con unas cuantas variables menos, primero hay que ver cuales son realmente útiles para nuestra Regresión Lineal, por lo que haremos una pequeña prueba de hipótesis.
H0 = Todas las variables son necesarias para predecir el valor de una casa
P_Value = 95%
Se rechazará esta hipótesis nula si nuestro P_Value resulta menor a 0.05
Para poder hacer esta prueba de hipótesis, lo que haremos es realizar una regresión linear a cada variable contra el precio y obtendremos el p_value, posteriormente, si mas del 30% de las variables determinamos que no nos sirven para la predicción, procederemos a eliminarlas del modelo de regresión lineal
Con esta función, validamos que tenemos un porcentaje de 38.18% de variables útiles, por lo que nuestra hipótesis de que todas las variables son útiles no es valida.
Eliminamos dichas variables y continuamos.
Ahora si lo bueno, la Regresión Lineal.
Primero hacemos una copia de nuestros datos
Establecemos nuestras variables “X” y “Y”
Normalizamos los datos para tenerlos en una sola dimensión (El precio ya no lo hacemos ya que lo tenemos en escala logarítmica)
Separamos los datos en prueba y testeo considerando para prueba un 80% de los datos y un 20% para las testeo.
Y le colocamos un random de 77 para que siempre nos salgan los mismos datos.
Asignamos el modelo a una variable, lo entrenamos con nuestros datos de entrenamiento y por ultimo hacemos una variable con las predicciones.
Ya tengo la Regresión Lineal!!
Vamos a comparar nuestras predicciones vs los datos que ya teníamos, para verlo mas bonito, hare una grafica.
Podemos observar que las predicciones fueron bastante buenas para las casas cuyos precios se encuentran mas en el medio, mientras que para los que tienen precios mas altos o bajos no fueron tan buenas, para corregir esto podemos volver a revisar el tratamiento de nuestras variables categóricas y numéricas.
Vamos a realizar una grafica para los residuos
Podemos observar que tenemos una distribución bastante uniforme.
Por ultimo, vamos a obtener la R² de nuestro modelo:
Y obtenemos un grandioso 81.46%, lo que significa que el 81.46% de nuestros datos está explicado por el modelo. Bastante bueno en realidad.
Hasta aquí llega el proyecto de Regresión Lineal.
Espero les haya gustado.