REGRESIÓN LINEAL
Regresión
La regresión es una técnica estadística utilizada para simular la relación existente entre dos o más variables. Por lo tanto se puede emplear para construir un modelo que permita predecir el comportamiento de una variable dada.
La regresión es muy utilizada para interpretar situaciones reales, pero es necesario realizar una selección adecuada de las variables que van a construir las ecuaciones de la regresión, ya que tomar variables que no tengan relación en la práctica, nos arrojará un modelo carente de sentido, es decir ilógico.
Según sea la dispersión de los datos (nube de puntos) en el plano cartesiano, pueden darse alguna de las siguientes relaciones, Lineal, Logarítmica, Exponencial, Cuadrática, entre otras. En la siguiente imagen vemos tres de ellas.
En nuestro aprendizaje nos vamos a centrar en la primera de ellas, en la regresión lineal, para poder hacer modelos de predicción de Machine Learning.
La Regresión Lineal puede ser simple o múltiple, la primera se refiere cuando solamente tenemos una sola variable independiente para realizar la predicción, en cambio en la Regresión Lineal Múltiple se manejan múltiples variables independientes que contribuyen a la variable dependiente.
Matemáticamente, la Regresión Lineal Simple usa una función lineal para aproximar o predecir la variable dependiente, se usa la ecuación de abajo a la izquierda. En el caso de la Regresión Lineal Múltiple se puede observar que está ecuación es muy parecida a la de Regresión Lineal simple solamente que en este caso se incluyen n variables independientes con su respectivo coeficiente. Por lo tanto, se manejan múltiples coeficientes y, a su vez, es analíticamente más compleja debido a las variables añadidas.
REGRESIÓN LINEAL SIMPLE.
Los siguientes vídeos nos ilustran sobre que es el modelo de regresión lineal simple y su implementación con Scikit-Learn
Práctica 2.1. Regresión Lineal Simple.
En esta primera práctica de regresión lineal simple nos vamos a centrar en crear el modelo de regresión sin entrar en su evaluación, cosa que haremos en la práctica 2.2, cuando veamos la regresión lineal múltiple. Los ficheros necesarios para replicar la práctica del vídeo conforme vamos atendiendo las explicaciones son:
Fichero de la práctica. (Recuerda hacer una copia, cambiarle el nombre, compartirlo y subir a drive el fichero descargado una vez finalizado.
Fichero de datos: "Ingreso.csv"
Lo novedoso en esta práctica son los módulos para crear la regresión lineal en Scikit-Learn, los repasamos brevemente, en primer lugar:
Regresión lineal de mínimos cuadrados ordinarios.
LinearRegression ajusta un modelo lineal con coeficientes w = (w1, …, wp) para minimizar la suma residual de cuadrados entre los objetivos observados en el conjunto de datos y los objetivos predichos por la aproximación lineal.
sklearn.linear_model.LinearRegression(*, fit_intercept=True, copy_X=True, n_jobs=None, positive=False)
Parámetros :
fit_intercept: booleano, por defecto=Verdadero
Si calcular la intersección para este modelo. Si se establece en False, no se utilizará ninguna intersección en los cálculos (es decir, se espera que los datos estén centrados).
copy_X: booleano, predeterminado=Verdadero
Si es Verdadero, se copiará X; de lo contrario, se puede sobrescribir.
n_jobs: entero, predeterminado=Ninguno
El número de trabajos a utilizar para el cálculo.
positive: Booleano , predeterminado=Falso
Cuando se establece en True, obliga a que los coeficientes sean positivos. Esta opción solo se admite para matrices densas.
Atributos :
coef_: array de forma (n_features, ) o (n_targets, n_features)
Coeficientes estimados para el problema de regresión lineal. Si se pasan múltiples objetivos durante el ajuste (y 2D), esta es una matriz 2D de forma (n_objetivos, n_características), mientras que si solo se pasa un objetivo, esta es una matriz 1D de longitud n_características.
rank_: entero
Rango de matriz X. Solo disponible cuando X es denso.
singular_: array de forma (min(X, y),)
Valores singulares de X. Solo disponible cuando X es denso.
intercept_: float o matriz de forma (n_targets,)
Término independiente en el modelo lineal. Establézcalo en 0.0 si .fit_intercept = False
n_features_in_: entero
Número de características vistas durante el ajuste .
REGRESIÓN LINEAL MÚLTIPLE.
En este ejercicio vamos a evaluar la calidad del modelo aprendido usando solamente los datos de entrenamiento. Podemos evaluar la calidad del modelo midiendo el error cuadrático medio y el coeficiente de determinación R2 entre otros. Para entender lo que se va a hacer además de trabajar el modelo de regresión múltiple es necesario ver este vídeo.
Práctica 2.2. Regresión Lineal Múltiple.
El objetivo del ejercicio es crear un modelo de regresión lineal (en este caso múltiple) que evalúe el impacto de la inversión publicitaria en televisión (TV), Radio y Prensa escrita en la venta de un determinado producto.
Los datos los podemos obtener del fichero "Publicidad.csv" que nos presentará 4 columnas (TV, Radio, Prensa y Ventas) las tres primeras indican cifras de inversión en € y la última las ventas realizadas en €.
El proceso guiado de creación del modelo es el siguiente:
Extraemos y separamos las columnas de datos (TV, Radio y Prensa) de la columna de resultados (Ventas).
El método usado para la entrenar nuestra regresión (linreg) es el módulo fit con sus datos de entrenamiento X_train e y_train. Podemos ver sus características y parámetros en la web oficial. https://scikit-learn.org/stable/modules/generated/sklearn.linear_model.LinearRegression.html
Analíticamente, nuestro modelo quedaría:
y=2.88+0.0466×TV+0.179×Radio+0.00345×Prensa
¿Cómo interpretamos el Coeficiente TV (0.0466)?
Para una cantidad determinada de inversión publicitaria en radio y periódico, un aumento de " una unidad" en la inversión publicitaria de televisión se asocia con un aumento de 0,0466 "unidades" en las ventas.
O más claramente: para una cantidad determinada de gastos publicitarios en radio y periódicos, 1000 € adicionales gastados en anuncios televisivos se asocian con un aumento en las ventas de 46,6 artículos.
Notas importantes:
Esta es una declaración de asociación, no de causalidad.
Si un aumento en el gasto publicitario en televisión estuviera asociado con una disminución en las ventas, β1 sería negativo.
Una vez obtenido el modelo de regresión establecido por Scikit Learn tenemos que pasar a la segunda fase que es la de realizar predicciones (y_pred) con el set de datos (X_test) reservado para ello.
Vamos a crear algunos ejemplos de predicciones numéricas y calcular tres métricas de evaluación comunes para problemas de regresión. Partimos de una evaluación de los datos obtenidos en la predicción del modelo y los datos reales que tenemos. Estos datos aportados son para entender las métricas no tienen nada que ver con los valores de la predicción de nuestro ejercicio.
ERROR ABSOLUTO MEDIO (MAE).
Vamos a explicar esto. Se define el error absoluto como la cantidad de error en las medidas realizadas. Es la diferencia entre el valor medido y el valor “verdadero”. Por ejemplo, si una medida indica 90 pero sabe que la medida real es 89, entonces se tiene un error absoluto de 90– 89 = 1. Pero la medida tomada podría haber sido 88 y siendo la real 89 el error absoluto en este caso sería 88-89 = -1. El error en este caso es el mismo, una vez en exceso y otra en defecto. Para obviar esto, matemáticamente usamos el modulo de la diferencia para establecer el error absoluto.
Donde:
x i es la medida,
x es el valor verdadero.
El error absoluto medio (MAE) es el promedio de todos los errores absolutos. La fórmula es:
La fórmula puede parecer un poco desalentadora, pero los pasos son fáciles:
Encuentre todos sus errores absolutos, xi – x.
Súmalos todos.
Dividimos por el número de errores. En nuestro caso son 4, divide por 4.
2. ERROR CUADRÁTICO MEDIO (MSE).
Otra forma de evaluar la "veracidad" de nuestras predicciones es el MSE. En este caso no vamos es explicar su sentido matemático (no es objeto de este curso estudiar estadística), baste con conocer la relación matemática que aplica y su evaluación de valor.
3. RAÍZ DEL ERROR CUADRÁTICO MEDIO (RMSE).
Para finalizar, la última técnica de evaluación de nuestro modelo es la RMSE (Raíz del error Cuadrático Medio).
Comparando estas métricas:
MAE es el más fácil de entender, porque es el error promedio.
MSE es más popular que MAE, porque MSE "castiga" errores mayores.
RMSE es incluso más popular que MSE.
En la siguiente imagen vemos el valor obtenido para nuestra evaluación, lógicamente en cada caso es distinto y no son comparables entre sí. Los que saben de esto indican que el más preciso es el primero, el RMSE.
Como digo, el valor obtenido de 1,4 nos da una idea de la validez del modelo ya que cuanto más próximo a 1 esté será mejor. Lo que si es importante y podemos valorar es como afectan a la calidad de la evaluación el uso o no de distintas variables de entrada. En la siguiente imagen podemos ver el resultado a la pregunta de si tomar en cuenta los datos de la variable prensa hacen que nuestro modelo de regresión sea más preciso o no. Por tanto vamos a repetir el proceso pero extrayendo los datos de la columna prensa.
El RMSE disminuyó cuando eliminamos Prensa del modelo. (El error es algo que queremos minimizar, por lo que un número más bajo para RMSE es mejor). Por lo tanto, es poco probable que esta función sea útil para predecir las ventas y debería eliminarse del modelo.
Práctica 2.3. Proyecto de Modelo de Regresión Lineal Múltiple.
Investiga en la red en general o en plataformas como Youtube, Kaggle o Github para crear un ejercicio de regresión lineal múltiple adecuado a los conocimientos de Python, Numpy, Matplotlib y Scikit Learn adquiridos en este curso.
¿Qué tengo que hacer?
Realizar una investigación sobre proyectos realizados en la web de nuestro nivel o crear uno desde cero. Para esto, te recomiendo que busques en Youtube y Github. Github es una plataforma donde programadores pueden almacenar sus programas para controlar el desarrollo de sus versiones o para compartir sus códigos de manera abierta. Este es un buen lugar para buscar información.
También puedes buscar dentro de los set de datos públicos que ofrece la plataforma Kaggle para buscar un DataSet que se acomode a lo aprendido y crear un modelo con ellos. Muchas veces los datos suministrados están en formato xlxs y no en formato csv, pero esto no es problema ya que cuando estudiamos Pandas aprendimos a realizar las conversiones de datos.
Es muy importante a la hora de diseñar el ejercicio que este se ajuste a lo aprendido. Durante tu investigación observarás ejemplos que resuelven modelos con código complejo que no hemos usado, esto no quiere decir que no puedas usarlo. Para poder hacerlo, en tu documento Colab deberás explicar el código que utilizas haciendo uso de todas las herramientas a tu alcance. Se puede, por tanto, usar código no comentado previamente pero hay que explicarlo.
El ejercicio debe constar de un enunciado donde se plantea el problema que vamos a afrontar. Debe compartir de forma descargable en Data Set sobre el que se va a trabajar y, como mínimo el modelo debe incluir:
Tratamiento de datos. Aquí debemos tener especial cuidado en que los rangos en que se muevan los valores de los datos no sean muy dispares, si es necesario repasa la primera práctica de este bloque de Scikit Learn.
Visualización de datos. Debes imprimir el principio y final del DataFrame con las herramientas de pandas aprendidas y presentar el formato y descripción de los datos del DataFrame.
Representación gráfica de los datos haciendo uso de Matplotlib. Como nuestro proyecto de modelo es de regresión lineal múltiple debemos tener un Data Set que tenga al menos tres columnas una que represente la variable dependiente y otras dos (como mínimo) que representen las variables independientes. Representaremos gráficamente la relación entre la variable dependiente y cada una de las variables independientes para demostrar que para el set de datos elegidos es adecuado hacer uso del modelo de regresión lineal múltiple.
Una vez maquetados y representado los datos debemos separar los datos del DataFrame y datos para entrenamiento y en datos de verificación.
A continuación debemos generar el modelo y entrenarlo.
Por último debemos evaluar el modelo. Hay que aplicarle las tres métricas de evaluación analizadas y tomando una de ellas (la que quieras) como referencia, hacer un estudio sobre si eliminando alguna de las variables independientes, la calidad predictiva de nuestro modelo mejora o empeora.