Repasando la Regresión Lineal para Machine Learning

Cuando nos introducimos en el aprendizaje automático, la regresión lineal es, en la mayoría de los casos, el punto de partida. Se trata de un modelo estadístico que establece una relación  lineal entre los valores de las variables de entrada (x) y salida (y) de un sistema, de modo que el valor de y se puede obtener a partir de una combinación lineal de las variables de entrada x. En caso de una única variable de entrada, estaríamos hablando de una regresión lineal simple. Si el sistema tiene varias variables de entrada, nos referimos a una regresión lineal múltiple. 

Regresión lineal

El modelo de regresión lineal simple, para una sola variable de entrada, tendrá la forma:

y = b_0 + b_1 x

Donde b1 es el llamado coeficiente o factor de escala, y b0 es el sesgo. El entrenamiento del modelo consiste en determinar estos valores con el mínimo error o pérdida. En general, un modelo de aprendizaje automático trata de realizar predicciones lo más fiables posibles, es decir, con el mínimo error. Para el cálculo de estos valores se emplean propiedades estadísticas  como la media, la desviación estándar, la correlación y la covarianza.

Mínimos cuadrados

La técnica elemental para definir la regresión lineal se conoce como mínimos cuadrados. Consiste en encontrar una línea de regresión a través de los datos de modo que la suma de los cuadrados de las distancias de cada uno de los puntos a dicha línea sea mínima. Las fórmulas de regresión lineal fueron obtenidas independientemente por Gauss y Legendre. Definiendo la pérdida R2 como

R^2 = \sum_{i=1} ^n\left ( y_i - (b_0+b_1 x_i) \right )^2

 R2 será mínimo si 

\frac {\delta R^2}{\delta b_0} = -2 \sum_{i=1} ^n \left ( y_i - (b_0+b_1 x_i) \right ) = 0
\frac {\delta R^2}{\delta b_1} = -2 \sum_{i=1} ^n \left ( y_i - (b_0+b_1 x_i) \right )x_i = 0

O bien, 

 \sum_{i=1} ^n y_i  = b_0  n + b_1  \sum_{i=1} ^n x_i 
\sum_{i=1} ^n y_i x_i = b_0\sum_{i=1} ^n x_i +b_1 \sum_{i=1} ^n x_i ^2

De las anteriores ecuaciones despejamos b0 y b1 :

b_0 = \frac { \sum_{i=1} ^n y_i  - b_1  \sum_{i=1} ^n x_i}{n} 
b_1 = \frac { \sum_{i=1} ^n y_i x_i - \sum_{i=1} ^n x_i \sum_{i=1} ^n y_i}{n \sum_{i=1} ^n x_i^2 - (\sum_{i=1} ^n x_i)^2} 

La recta con los valores de b0 y b1 anteriores será la recta de mínimos cuadrados para ese conjunto de valores (xi,yi)

Las ecuaciones anteriores en forma matrícial se escriben como: 

\begin{bmatrix}
n & \sum_{i=1} ^n x_i 
 \\
\sum_{i=1} ^n x_i & \sum_{i=1} ^n x_i ^2 
\end{bmatrix}
\begin{bmatrix}
b_0\\
b_1
\end{bmatrix} = \begin{bmatrix}
\sum_{i=1} ^n y_i\\
\sum_{i=1} ^n y_i x_i
\end{bmatrix}

Luego, 

\begin{bmatrix}
b_0\\
b_1
\end{bmatrix} = 
{
\begin{bmatrix}
n & \sum_{i=1} ^n x_i 
 \\
\sum_{i=1} ^n x_i & \sum_{i=1} ^n x_i ^2 
\end{bmatrix}
}^{-1}
\begin{bmatrix}
\sum_{i=1} ^n y_i\\
\sum_{i=1} ^n y_i x_i
\end{bmatrix}

Y calculando la inversa de la matriz y operando el producto de matrices: 

\begin{bmatrix}
b_0\\
b_1
\end{bmatrix} = 

\frac{1}{n\sum_{i=1} ^n x_i ^2  -  \left (\sum_{i=1} ^n x_i \right)^2}


\begin{bmatrix}
\sum_{i=1} ^n x_i ^2  & - \sum_{i=1} ^n x_i 
 \\
- \sum_{i=1} ^n x_i & n 
\end{bmatrix}

\begin{bmatrix}
\sum_{i=1} ^n y_i\\
\sum_{i=1} ^n y_i x_i
\end{bmatrix}
\begin{bmatrix}
b_0\\
b_1
\end{bmatrix} = 

\frac{1}{n\sum_{i=1} ^n x_i ^2  -  \left (\sum_{i=1} ^n x_i \right)^2}


\begin{bmatrix}
\sum_{i=1} ^n x_i ^2  \sum_{i=1} ^n y_i& - \sum_{i=1} ^n x_i \sum_{i=1} ^n y_i x_i
 \\
- \sum_{i=1} ^n x_i \sum_{i=1} ^n y_i& n \sum_{i=1} ^n y_i x_i
\end{bmatrix}

Descenso de gradiente

Para entender el método del descenso del gradiente debemos conocer primero lo que llamamos la función de coste. Esta función cuantifica el error o diferencia entre los valores predichos por un modelo y los valores reales o esperados. Obviamente, deseamos que dicho error sea el mínimo. Por tanto, debemos crear un algoritmo que vaya reduciendo progresivamente ese error. Este algoritmo es precisamente el descenso del gradiente.  Partiremos de una hipótesis o parámetros iniciales, los cuales iremos modificado progresivamente reduciendo el valor de la función de costo. Matemáticamente, lo podemos expresar del siguiente modo. En primer lugar planteamos una hipótesis lineal con parámetros: 

h_{\theta} = \theta_0 + \theta_1x

Donde la función de coste es: 

J(\theta_0,\theta_1) = \frac {1}{2m} \sum _1 ^m \left ( h_{\theta}(x^{(i)}) - y^{(i)} \right )^2

Siendo el objetivo obtener el mínimo valor de J. Para ello, se emplea el algoritmo de descenso del gradiente, el cual consiste en modificar progresivamente los parámetros iniciales empleando una tasa de aprendizaje

\theta_j := \theta_j - \alpha  \frac {\delta J(\theta_0,\theta_1)}{\delta \theta_j}

para y . El proceso se repite hasta que se alcanza un error mínimo de suma al cuadrado o no es posible ninguna mejora adicional.

What do you think?

No Comments Yet.