0% encontró este documento útil (0 votos)
63 vistas10 páginas

Introducción a la Regresión Lineal

Apuntes 6° Clase Ciencia de Datos en Python

Cargado por

Franco Valentini
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
63 vistas10 páginas

Introducción a la Regresión Lineal

Apuntes 6° Clase Ciencia de Datos en Python

Cargado por

Franco Valentini
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como DOCX, PDF, TXT o lee en línea desde Scribd

No se grabó la clase, se sustituye con un video sobre regresión lineal:

Regresión Lineal
- Regresión Lineal Simple:

Es un Modelo Matemático: Representación abstracta, que se puede abordar de forma


abstracta, conceptual o visual, que permite plantear y/o resolver un problema.

Mantiene relación entre variables independientes (Que en el plano cartesiano son ejes
y en los datasets son features/columnas) y variables dependientes (La Target Value, o
lo que es lo mismo, la columna cuyos valores queremos predecir).

Ejemplo:

X: N° de Ambientes de un Inmueble -> Feature


Y: Precio Final -> Target Value

Este ejemplo se trata de un caso que se representaría en un espacio bidimensional; la


idea del modelo de regresión lineal es predecir, a partir de varios puntos identificados
con coordenadas según valores en los ejes, el valor en el Target Value (En este caso,
valor en el eje Y) que corresponda según el nuevo valor que asignemos al feature (En
este caso, el eje X).

Fórmulas (En dos dimensiones) de:

Recta: y = a + mx
Plano: z = a + bx + cy

Concepto de ‘Error’: Diferencia entre el valor Predicho y el valor Real.

En Machine Learning, en vez de usarse letras del abecedario, se usa ‘wn’, dado que la
cantidad de letras del ABC podrían no ser suficientes (Dependiendo del caso):

Recta: y = w0 + w1x
Plano: z = w0 + w1x + w2y

Cuando trabajamos en más de dos dimensiones, hablamos de hiperespacio e


hiperplano (Rn>2 -> Hiperplano e Hiperplano). Ejemplo de un hiperplano:

R4 Hiperplano = w0 + w1x + w2y + w3z

Ahora bien, podría darse la situación de que tengamos tantas dimensiones que
tampoco no alcance letras del abecedario para identificarlas, por lo que una mejor
manera de expresar el hiperplano sería:
R4 Hiperplano = w0 + w1x1 + w2x2 + w3x3

Siendo xn como el n-ésimo feature

La regresión lineal simple lo que hace es quedarse con la recta más acertada posible
para la predicción de los siguientes puntos en el plano a partir de los ya conocidos.

Ejemplo:

import numpy as np
import [Link] as plt

x = [Link](30)
noise = ([Link](30)-0.25)*0.5
y = 3*x + noise

[Link](x,y)
El mejor modelo de regresión posible para encontrar la recta mas indicada se crea trabajando
con el error (Valor real y el valor predicho por el modelo).

Puede darse la situación de que la diferencia en dos alturas distintas del eje x se cancelen entre
sí por valer lo mismo, pero con distinto signo (Ejemplo, e1 = 5 y e2 = -5); por eso, para conocer el
MAE (Mean Absolute Error, o lo que es lo mismo, media del error absoluto) se aplica el módulo
y división entre ‘n’ (Siendo ‘n’ la cantidad de registros):

Sin embargo, esta fórmula tiene un error, que supuestamente radica en que no todas las
funciones con módulo son derivables (No entendí por que corno eso es un problema), por eso,
nos metemos el módulo en el orto y nos ahorramos todas estas dificultades aplicando un
cuadrado en su lugar, obteniendo el MSE (Mean Squared Error, media del error cuadrado):

Para modelos de Machine Learning, además del MSE, usaremos el RMSE:

Para comenzar a hacer un modelo de regresión lineal, vamos a instalar la librería de scikit
learn; escribimos en el cmd:

pip install -U scikit-learn

Una vez instalado, importamos en nuestro jupyter notebook algún dataset de los que ofrece
esta librería:

from [Link] import load_boston

boston = load_boston()
print([Link])

Nos devolverá texto indicando las features y el target value del dataset, que en este caso es el
precio de los inmuebles; como hay múltiples variables, un modelo de regresión simple no será
lo más apropiado, sino que será mas indicado un modelo de regresión múltiple.

Veamos los valores de la columna 5 (Número de ambientes):

X = [Link][:,5]
X
Nos devolverá el array con los valores de la columna.

Para visualizar los valores de la columna con el Target Value…

Y = [Link]
Y

Nos devolverá el array con los valores de la columna.

Ahora visualicemos esto:

[Link](x=X,y=Y)

Cambiemos la opacidad del gráfico para distinguir mejor la concentración de la mayoría de los

Valores en un área similar:

[Link](x=X,y=Y,alpha=0,3)

Nos devolverá el siguiente gráfico:


Pasemos a hacer el modelo de regresión lineal de una vez por todas:

from sklearn.linear_model import LinearRegression

Esta función va a agarrar los datos, hacer la recta de regresión, y calcular la función de error,

minimizar (Deriva igual a cero) esa función de error, e indicar cuales son los mejores

coeficientes para crear la recta, que mejor se ajuste a la nube de puntos que graficamos.

Nota: En el contexto de Machine Learning, los parámetros se los llama hiperparametros, pues
son parámetros que podremos controlar nosotros.

model = LinearRegression(normalize=True)

[Link](X,Y)

Puede suceder que esto nos devuelva un error en el que se nos indique que introdujimos una
sola columna cuando redactamos todo como para un contexto bidimensional; dependiendo de
cual columna no esté reconociendo (En este caso será la X), la someteremos a la siguiente
corrección:

X = [Link](-1,1)
-1: Calcula automáticamente el tamaño de manera que el vector X se ajuste al arreglo original.

1: Agarra el Array X, cuenta la cantidad de filas, y la ubica en una columna en particular; Vector
columna: El arreglo resultante tiene que ser un vector columna.

model.coef_

Te preguntarás que es ese tal ‘coef’, pues es nada más ni nada menos que el valor de la
pendiente (m) de la recta de regresión

y_pred = [Link](X)

Este comando infiere, a partir de los valores encontrados con el ‘coef’, cuales van a ser los
valores en Y futuros (Siguiendo el ejemplo en cuestión, los precios futuros).

y_pred

Nos devolverá los valores de Y futuros.

Ahora dibujemos esto:

[Link](X,Y, alpha=0.3)
[Link](X,y_pred,color='red')
[Link]()
Entonces, esta sería la recta más apropiada para hacer predicciones tomando de referencia los
puntos de esta nube de dispersión.

Como ya vimos, la pendiente se averigua con la función ‘model.coef_’; ahora bien, para saber
la ordenada al origen debemos redactar:

model.intercept_

Las funciones para calcular el error son:

from [Link] import mean_absolute_error,


mean_squared_error, r2_score

Lo que Busco es que el error (MSE, MAE, Error) sea lo más cercano a cero posible; redactamos:
mae = mean_absolute_error(y_pred,Y) # y_pred [], Y []
print("mae : ", mae)
mse = mean_squared_error(y_pred,Y) # y_pred [], Y []
print("mse : ", mse)

Esto nos devolverá:

Algo importante será el R2:

print("R2: ",r2_score(Y,y_pred))

Lo importante de éste último coeficiente es que es un valor entre 0 y 1; la función ‘R2’ nos va a
permitir comparar modelos entre sí para saber cual devuelve el valor de r2 más cercano a 1
posible y quedarnos con ese modelo.

Esta medida cuantifica cuanta varianza en la variante dependiente (Target Value) es explicada
por la variante independiente. Esto quiere decir que, volviendo a nuestro ejemplo, el 48% de la
varianza de nuestra variable Y (Precio del inmueble) queda explicada por el número de
habitaciones del mismo (Variable X); si se diera el caso de comparar este modelo con otro en el
que la varianza del precio de los inmuebles fuera del, por ejemplo, 80% (R2: 0.8), nos
deberíamos quedar con este segundo modelo, pero si fuera del, supongamos, 26%, nos
quedaremos con el primero.

Cuando el r2 es del 100%, hablamos de una situación de ‘overfitting’.

HIPÓTESIS DE LA REGRESIÓN:

 Relación lineal
 Normalidad
 No multicolinealidad
 Varianzas iguales

Si se cumplen estas hipótesis, recién ahí puedo aplicar mi modelo lineal con perfección
(Esto es en la teoría, en la práctica/vida real ningún modelo es perfecto).
COEFICIENTES DE HIPERPLANO DE REGRESIÓN

Se los representa con la letra beta:

También podría gustarte