Predicciones

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.

Regresión lineal (ajustar una línea a unos datos)

https://statquest.org/video-index/

El aprendizaje automático supervisado por regresión lineal es una técnica que se usa para hacer predicciones de valores continuos. Un valor continuo es un tipo de variable que puede asumir inifinitos valores dentro de un intervalo dado.

Consiste simplemente en ajustar los pares de datos entrada-salida a una línea recta.

Si tenemos datos de la altura de una persona en función de su peso podríamos predecir la altura de una persona cuyos datos no estaban inicialmente en la base de datos. La forma más sencilla sería trazar una línea recta cuya inclinación dependerá de los datos de entrada.

Predicciones 1

En ocasiones, será más apropiado trazar una línea curva para intentar hacer un cálculo más aproximado.

Predicciones 2
Nomencaltura
  • Los datos de partida se pueden llamar training set, las características de cada elemento, features, y los datos que queremos descubrir targets.
  • Cada par de datos feature-target es representado como (x,y).
  • Del training set que nos dan, (x3,y3) hace referencia al dato que ocupa la tercera posición de la lista.
  • Toda esta información es enviada a un algoritmo de aprendizaje, que producirá una función (f) que también se denomina modelo.
  • El modelo recibirá un dato de entrada x y predicirá su target correspondiente. A la predicción del modelo, se la denomina y-hat o ŷ.

Calculo de la función del error cuadrático medio para determinar la bondad de una regresión

Utilizaremos una regresión líneal (una línea recta)

La fórmula que define una línea recta es: fw,b(x) = wx + b o f(x) = wx + b si simplificamos un poco la sintaxis.

Este tipo de modelo se denomina regresión lineal univariante.

  • Lineal porque su gráfica es una línea.
  • Univariante porque el dato de entrada del que depende la función es una única variable.

En esta fórmula, w y b determinarán el valor de y en función de x (ŷ). w y b se denominan parámetros del modelo, coeficientes o ponderadores.

Como se puede observar en las siguientes gráficas, b determina la altura en la que comienza la línea y w su inclinación.

Predicciones 3
Python
pip install numpy

Definimos y mostramos los arrays de features y targets:

import numpy as np
x_train = np.array([1.0, 2.0]) # Definimos el array de datos de entrada (features)
y_train = np.array([300.0, 500.0]) /# Definimos el array de datos de salida (targets)
print(x_train) # [1. 2.] Imprimimos el array de features
print(y_train) # [300. 500.] Imprimimos el array de targets

print(x_train.shape) # (2,) Imprimimos la longitud del array de features
m = x_train.shape[0]
print(f"Number of training examples is: {m}") # Number of training examples is: 2

Accedemos al elemento que ocupa la posición i de los arrays de features y targets:

i = 0 # Change this to 1 to see (x^1, y^1)
x_i = x_train[i]
y_i = y_train[i]
print(f"(x^({i}), y^({i})) = ({x_i}, {y_i})") # (x^(0), y^(0)) = (1.0, 300.0)

Para mostrar una gráfica con las coordenadas de las features y los targets, usaremos:

pip install matplotlib
import numpy as np
import matplotlib.pyplot as plt

x_train = np.array([1.0, 2.0])
y_train = np.array([300.0, 500.0])

# Plot the data points
plt.scatter(x_train, y_train, marker='x', c='r')
# Set the title
plt.title("Housing Prices")
# Set the y-axis label
plt.ylabel('Price (in 1000s of dollars)')
# Set the x-axis label
plt.xlabel('Size (1000 sqft)')
plt.show()
Predicciones 4

Ahora vamos a hacer una gráfica del modelo, suponiendo que conocemos los valores de w y b:

import numpy as np
import matplotlib.pyplot as plt

x_train = np.array([1.0, 2.0])
y_train = np.array([300.0, 500.0])
w = 100
b = 100

def compute_model_output(x, w, b):
    m = x.shape[0]
    f_wb = np.zeros(m) # Esta función crea un nuevo array lleno de ceros
    for i in range(m):
        f_wb[i] = w * x[i] + b    
    return f_wb # Devolvemos el array con los valores de y


f_wb = compute_model_output(x_train, w, b,)

# Mostramos la gráfica de la regresión lineal
plt.plot(x_train, f_wb, c='b',label='Our Prediction')

plt.title("Housing Prices")
plt.ylabel('Price (in 1000s of dollars)')
plt.xlabel('Size (1000 sqft)')
plt.legend()
plt.show()
Predicciones 5

Encontrar los valores de w y b utilizando la estimación de los mínimos cuadrados

Vamos a buscar la los parámetros de la línea recta que predicirá la altura en función del peso de una persona con un margen de error menor.

Para ello, partiremos de los siguientes datos de entrada:

Peso(x)(Kg)Altura(y)(cm)
60150
70160
80180

La gráfica con la correspondencia entre peso y altura es la siguiente:

Predicciones 6

La línea que mejor hará las predicciones podría ser cualquier de las siguientes:

Predicciones 7

Cálculo del error cuadrático medio

En los dos ejemplos siguientes, vamos a eliminar cada uno de estos dos parámetros de la ecuación para comprender más fácilmente como calcular el error cuadrático. Al eliminar uno de estos dos parámetros obtendremos una curva bidimensional. Si no eliminasemos ninguno, obtendríamos una curva tridimensional que es la que realmente se utiliza para calcular W y B.

Eliminamos w

Si para simplificar prescindimos del valor de w, la línea no tendrá inclinación. En la siguiente gráfica, la suma de cada uno de los errores entre nuestra predicción (le línea naranja) y la posición de y real (los puntos naranjas) sería:

(b-y1) + (b-y2) + (b – y3)

Predicciones 8

Para que los errores con valor negativo no disminuyan el valor absoluto del error, elevamos cada uno de los sumandos anteriores al cuadro (alguién demostró que matemáticamente esto era mejor que simplemente tomar el valor absoluto del error).

Medida del margen de error de nuestra predicción = (b-y1)2 + (b-y2)2 + (b – y3)2 = (170 – 150)2 + (170 – 160)2 + (170 – 180)2 = 400 + 100 + 100 = 600

Si ponemos la suma de los residuos cuadrados en una gráfica, el punto que más se aproxime a 0 estará más cerca de la menor magnitud del de error.

Predicciones 9

Eliminamos b

Análogamente, podemos repetir el mismo proceso para calcular w, suponiendo b = 0.

Predicciones 10
Predicciones 11

La fórmula quedaría así: (w*x1-y1)2 + (w*x2 – y2)2 + (w*x3 – y3)2

Sin embargo, para obtener la fórmula del error cuadrático medio, todavía faltaría hacer algunas modificaciones en la ecuación:

  • Dividimos por N (cantidad de muestras). Al dividir por mmm, se está normalizando la suma de los errores cuadráticos, lo que permite comparar el coste entre diferentes tamaños de conjuntos de datos. Sin esta normalización, el coste absoluto crecería con el número de ejemplos, haciendo difícil comparar la magnitud del error entre distintos tamaños de conjuntos de datos.
J ( w ) = 1 2 N i = 1 N ( w x ( i ) ) y i ) 2
Cálculo del error cuadrático sin eliminar w ni b.
J ( w , b ) = 1 2 m i = 1 m ( y ^ ( i ) y i ) 2

Esta fórmula nos permite calcular J en función de w y b. Pero nuestro objetivo final es obtener los valores de w y b para los que J (el error) vale lo mínimo posible. Para ello, utilizaremos la función del error cuadrático mínimo, que veremos a continuación.

La ecuación anterior, en la que tenemos en cuenta b y w da lugar a una gráfica de plano, en lugar de una gráfica de una línea.

Predicciones 12

Puede ocurrir que haya varios valores mínimos de J(w, b).

Como utiliza el gradiente de descenso un ordenador para encontrar el valor mínimo de J. Pasos

1. Inicialización. Tomaremos un punto a partir de w y b. Por ejemplo, w=3, b=4.

2. Cálculo del gradiente. Buscaremos cual es la dirección en la que debemos ir para que J(w,b) descienda de la manera más pronunciada. Para esto utilizaremos una derivada, ya que la derivada determina la pendiente de una recta.

3. Actualización de parámetros. Probamos valores de w y b en busca del descenso más pronunciado de J(w,b). Para ello, usaremos la siguiente fórmula:

w n u e v o = w a c t u a l α w a c t u a l J ( w a c t u a l , b a c t u a l )
b n u e v o = b a c t u a l α b a c t u a l J ( w a c t u a l , b a c t u a l )

α es también llamado tasa de aprendizaje. Suele ser un número positivo pequeño, entre 0 y 1, por ejemplo 0.01. Este parámetro representa la magnitud del paso que vamos a dar. Si es muy largo, puede que nos pasemos al otro lado del valle y si es muy corto avanzaremos muy lentamente.

La derivada indica la pendiente en la que nos vamos a mover. Cuando la derivada sea 0, la pendiente será cero y por tanto estaremos en el fondo de un valle y wnuevo será igual a wactual y ese será el valor de w buscado. Lo mismo para b.

4. Iteración. Se repiten los pasos 2 y 3 hasta que se cumpla algún criterio de parada, como un número máximo de iteraciones o cuando el cambio en los parámetros sea lo suficientemente pequeño, en cuyo caso estaremos cerca del fondo del valle.

Predicciones 13

Por 9.99€ al mes tendrás acceso completo a todos los cursos. Sin matrícula ni permanencia.