Saltar al contenido
Introducción a Scikit-learn

Aprendizaje supervisado: Regresión lineal

Introducción

Una de las ramas fundamentales del aprendizaje supervisado es la regresión lineal. La idea principal detrás de la regresión lineal es encontrar la línea que mejor se ajuste a los datos, para así poder predecir valores futuros. Se utiliza principalmente para establecer una relación entre una o varias variables independientes y una variable dependiente continua. En términos matemáticos, se trata de establecer una ecuación lineal que contemple las variables y sus coeficientes para representar el modelo que se busca. A través de esta ecuación, se puede estimar un valor para la variable dependiente en función de las variables independientes.

Scikit-learn es una de las herramientas más utilizadas en Python para implementar modelos de regresión lineal. Este paquete proporciona una amplia gama de herramientas para preprocesar los datos y ajustar el modelo a los datos de entrenamiento. Algunas de las técnicas que se pueden utilizar en scikit-learn son el análisis de componentes principales, la evaluación de la eficacia del modelo y la selección de características. Una vez construido el modelo, se puede utilizar para predecir nuevos valores y evaluar la precisión de las predicciones.

Resumen

El aprendizaje supervisado es un método de aprendizaje automático donde los datos que se utilizan para enseñar al modelo están etiquetados con la respuesta correcta. En otras palabras, se le muestra al modelo cómo se deben clasificar los datos para que pueda hacer predicciones precisas sobre datos nuevos. La regresión lineal es un tipo de modelo de aprendizaje supervisado que se utiliza para predecir una respuesta continua en función de una o más variables predictoras continuas. Se trata de un modelo estadístico que establece una relación lineal entre las variables predictoras y la variable de respuesta. El objetivo de la regresión lineal es minimizar la suma de los errores cuadráticos entre las predicciones del modelo y los valores reales de la variable de respuesta. A medida que se ajusta el modelo, se modifica la pendiente y la intercepción de la línea de regresión para encontrar la mejor explicación de la variabilidad en los datos.

Para utilizar la regresión lineal en scikit-learn, primero se debe importar la biblioteca y luego crear el modelo:

from sklearn.linear_model import LinearRegression
modelo = LinearRegression()

A continuación, se deben separar los datos entre los conjuntos de entrenamiento y de prueba. El conjunto de entrenamiento es el que se utiliza para ajustar el modelo, mientras que el conjunto de prueba se utiliza para evaluar la precisión del modelo. Después, se ajusta el modelo utilizando los datos de entrenamiento:

modelo.fit(X_entrenamiento, y_entrenamiento)

Por último, se evalúa el modelo utilizando los datos de prueba:

y_prediccion = modelo.predict(X_prueba)

La regresión lineal es útil para predecir un valor continuo, como la estimación de un precio de una casa en función de ciertas características o la predicción de las ventas de un producto en función del gasto en publicidad.

Aplicación teórica

Fundamentos Matemáticos de la Regresión Lineal

La regresión lineal es una técnica fundamental en estadística y aprendizaje automático utilizada para modelar la relación entre una variable dependiente y una o más variables independientes. Su objetivo principal es encontrar la mejor línea recta (en el caso de una sola variable independiente) que prediga la variable dependiente. A continuación, exploraremos los fundamentos matemáticos detrás de la regresión lineal, incluyendo la formulación del modelo, el ajuste de parámetros y la evaluación del modelo.

 1. Modelo de Regresión Lineal

El modelo de regresión lineal busca representar la relación entre una variable dependiente \(y\) y una variable independiente \(x\) mediante una ecuación lineal. La forma general del modelo de regresión lineal simple (con una sola variable independiente) es:

\[
y = \beta_0 + \beta_1 x + \epsilon
\]

Donde:
- \(y\) es la variable dependiente.
- \(x\) es la variable independiente.
- \(\beta_0\) es el intercepto de la línea (el valor de \(y\) cuando \(x = 0\)).
- \(\beta_1\) es la pendiente de la línea (el cambio en \(y\) por unidad de cambio en \(x\)).
- \(\epsilon\) es el término de error, que captura la variación en \(y\) que no puede ser explicada por la relación lineal con \(x\).

2. Estimación de Parámetros

Para ajustar el modelo a los datos, necesitamos estimar los parámetros \(\beta_0\) y \(\beta_1\). Este proceso se realiza típicamente mediante el método de los mínimos cuadrados ordinarios (OLS, por sus siglas en inglés).

Objetivo del Método de Mínimos Cuadrados

El objetivo es encontrar los valores de \(\beta_0\) y \(\beta_1\) que minimicen la suma de los cuadrados de los residuos, que son las diferencias entre los valores observados y los valores predichos por el modelo:

\[
\text{Suma de los cuadrados de los residuos (SSR)} = \sum_{i=1}^{n} (y_i - (\beta_0 + \beta_1 x_i))^2
\]

Donde \(n\) es el número de observaciones, y \( (y_i - (\beta_0 + \beta_1 x_i)) \) es el residuo para la \(i\)-ésima observación.

Estimación de los Parámetros

Para encontrar los valores óptimos de \(\beta_0\) y \(\beta_1\), derivamos la función de la suma de los cuadrados de los residuos con respecto a \(\beta_0\) y \(\beta_1\) y resolvemos el sistema de ecuaciones resultante.

Las fórmulas para las estimaciones de \(\beta_0\) y \(\beta_1\) son:

\[
\beta_1 = \frac{n \sum_{i=1}^{n} (x_i y_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}
\]

\[
\beta_0 = \bar{y} - \beta_1 \bar{x}
\]

Donde:
- \(\bar{x}\) y \(\bar{y}\) son las medias de \(x\) e \(y\), respectivamente.

3. Evaluación del Modelo

Una vez que hemos estimado los parámetros del modelo, debemos evaluar su desempeño. Las métricas comunes incluyen:

Coeficiente de Determinación (\(R^2\))

El coeficiente de determinación \(R^2\) mide la proporción de la variabilidad total de \(y\) que es explicada por el modelo:

\[
R^2 = 1 - \frac{\text{SSR}}{\text{SST}}
\]

Donde la suma total de los cuadrados (SST) es:

\[
\text{SST} = \sum_{i=1}^{n} (y_i - \bar{y})^2
\]

Error Cuadrático Medio (MSE) y Raíz del Error Cuadrático Medio (RMSE)

El MSE mide la media de los cuadrados de los errores:

\[
\text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - (\beta_0 + \beta_1 x_i))^2
\]

El RMSE es la raíz cuadrada del MSE y proporciona una medida de la magnitud promedio del error:

\[
\text{RMSE} = \sqrt{\text{MSE}}
\]

4. Regresión Lineal Múltiple

La regresión lineal puede extenderse a múltiples variables independientes. El modelo de regresión lineal múltiple se representa como:

\[
y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \cdots + \beta_p x_p + \epsilon
\]

Donde \(x_1, x_2, \ldots, x_p\) son las variables independientes. La estimación de los parámetros se realiza de manera similar, utilizando la matriz de diseño y la inversa de la matriz de covarianza.

5. Supuestos de la Regresión Lineal

Para que los resultados de la regresión lineal sean válidos, deben cumplirse ciertos supuestos:

- Linealidad: La relación entre las variables independientes y la dependiente debe ser lineal.
- Independencia de los Errores: Los errores deben ser independientes entre sí.
- Homoscedasticidad: La varianza de los errores debe ser constante para todos los niveles de las variables independientes.
- Normalidad de los Errores: Los errores deben seguir una distribución normal.

Conclusión

La regresión lineal proporciona una herramienta poderosa para modelar y entender la relación entre variables. A través del método de mínimos cuadrados, podemos estimar los parámetros del modelo, evaluar su desempeño y aplicar estos conocimientos para hacer predicciones y tomar decisiones basadas en datos.

Evaluación del Modelo de Regresión Lineal

La evaluación de un modelo de regresión lineal es crucial para entender su desempeño y la calidad de las predicciones que realiza. Esta evaluación implica el análisis de diversos indicadores estadísticos y métricas que reflejan cuán bien el modelo se ajusta a los datos y qué tan confiables son sus predicciones. A continuación, se detallan los aspectos clave para evaluar un modelo de regresión lineal.

1. Coeficiente de Determinación (\(R^2\))

El coeficiente de determinación \(R^2\) mide la proporción de la variabilidad en la variable dependiente \(y\) que es explicada por las variables independientes del modelo. Su valor oscila entre 0 y 1, donde 1 indica que el modelo explica toda la variabilidad en los datos, y 0 indica que no explica nada.

\[
R^2 = 1 - \frac{\text{SSR}}{\text{SST}}
\]

Donde:
- \(\text{SSR}\) es la suma de los cuadrados de los residuos.
- \(\text{SST}\) es la suma total de los cuadrados.

2. Error Cuadrático Medio (MSE) y Raíz del Error Cuadrático Medio (RMSE)

El Error Cuadrático Medio (MSE) mide la media de los cuadrados de las diferencias entre los valores observados y los valores predichos por el modelo. Se calcula como:

\[
\text{MSE} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2
\]

Donde:
- \(y_i\) son los valores observados.
- \(\hat{y}_i\) son los valores predichos por el modelo.
- \(n\) es el número de observaciones.

La Raíz del Error Cuadrático Medio (RMSE) es la raíz cuadrada del MSE y proporciona una medida de la magnitud promedio del error:

\[
\text{RMSE} = \sqrt{\text{MSE}}
\]

3. Error Absoluto Medio (MAE)

El Error Absoluto Medio (MAE) mide la media de las diferencias absolutas entre los valores observados y los predichos. Es útil para entender el error promedio en las mismas unidades que la variable dependiente:

\[
\text{MAE} = \frac{1}{n} \sum_{i=1}^{n} |y_i - \hat{y}_i|
\]

4. Pruebas de Significancia de los Parámetros

Para evaluar la importancia de cada variable independiente, se utilizan pruebas de significancia como el valor p asociado con los coeficientes del modelo. El valor p indica si el coeficiente de una variable es significativamente diferente de cero.

- Valor p: Un valor p bajo (por lo general menor a 0.05) sugiere que el coeficiente es significativamente diferente de cero y que la variable independiente tiene un impacto significativo en la variable dependiente.

5. Análisis de Residuos

El análisis de residuos implica examinar las diferencias entre los valores observados y los valores predichos. Los residuos deben ser examinados para verificar que cumplen con los supuestos del modelo de regresión lineal.

- Residuos vs. Valores Ajustados: Un gráfico de residuos frente a valores ajustados puede mostrar patrones que indican problemas como heteroscedasticidad o no linealidad.

- Histograma de Residuos: Un histograma de residuos ayuda a verificar la normalidad de los errores.

- Gráfico Q-Q (Quantile-Quantile): Un gráfico Q-Q compara la distribución de los residuos con una distribución normal.

6. Multicolinealidad

La multicolinealidad se refiere a la existencia de correlaciones altas entre las variables independientes. Puede hacer que las estimaciones de los coeficientes sean inestables y difíciles de interpretar. Se puede evaluar mediante:

- Índice de Condición: Un índice alto puede indicar multicolinealidad.

- VIF (Variance Inflation Factor): Mide cuánto la varianza de un coeficiente estimado se inflaciona debido a la colinealidad con otras variables.

\[
\text{VIF}_i = \frac{1}{1 - R_i^2}
\]

Donde \(R_i^2\) es el coeficiente de determinación obtenido al ajustar la variable \(x_i\) contra todas las otras variables independientes.

7. Pruebas de Supuestos del Modelo

Para validar la regresión lineal, los supuestos del modelo deben ser revisados:

- Linealidad: La relación entre las variables independientes y la dependiente debe ser lineal.

- Independencia de los Errores: Los errores deben ser independientes.

- Homoscedasticidad: Los errores deben tener varianza constante.

- Normalidad de los Errores: Los errores deben estar distribuidos normalmente.

8. Validez Externa y Generalización

La validez externa se refiere a la capacidad del modelo para generalizar a nuevos datos. Esto se evalúa mediante técnicas de validación como:

- Validación Cruzada: Divide el conjunto de datos en subconjuntos para entrenar y evaluar el modelo repetidamente.

- Conjunto de Prueba: Se evalúa el rendimiento del modelo en un conjunto de datos independiente que no fue utilizado en el entrenamiento.

Conclusión

La evaluación de un modelo de regresión lineal implica el análisis de varias métricas y pruebas para asegurar que el modelo sea adecuado y confiable. Al interpretar estas métricas y resultados, se puede determinar la calidad del modelo y hacer ajustes necesarios para mejorar su rendimiento.

Regularización en Regresión Lineal: Ridge y Lasso

La regularización en regresión lineal es una técnica utilizada para mejorar el rendimiento del modelo y evitar el sobreajuste al penalizar los coeficientes de las variables independientes. Entre los métodos de regularización más comunes se encuentran la regresión Ridge y la regresión Lasso. A continuación, se exploran en detalle ambos enfoques, sus fundamentos matemáticos y sus aplicaciones.

1. Regularización en Regresión Lineal

En regresión lineal, el objetivo es encontrar los coeficientes \(\beta\) que minimicen la función de pérdida basada en los errores cuadrados. Sin embargo, cuando hay muchas variables independientes o multicolinealidad, el modelo puede sobreajustarse a los datos de entrenamiento, lo que resulta en un rendimiento deficiente en datos nuevos. La regularización añade una penalización a los coeficientes para mitigar estos problemas.

La función de costo regularizada en regresión lineal se modifica añadiendo un término de penalización:

\[
\text{Costo Regularizado} = \text{MSE} + \lambda \cdot \text{Penalización}
\]

Donde \(\lambda\) es el parámetro de regularización que controla la magnitud de la penalización. Dependiendo del tipo de regularización, la penalización puede ser diferente.

2. Regresión Ridge (Regularización L2)

La regresión Ridge, también conocida como regularización L2, añade una penalización proporcional al cuadrado de la magnitud de los coeficientes. La función de costo para la regresión Ridge se define como:

\[
\text{Costo Ridge} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 + \lambda \sum_{j=1}^{p} \beta_j^2
\]

Donde:
- \(\sum_{i=1}^{n} (y_i - \hat{y}_i)^2\) es la suma de los cuadrados de los residuos (MSE).
- \(\lambda\) es el parámetro de regularización.
- \(\sum_{j=1}^{p} \beta_j^2\) es la penalización L2, que suma los cuadrados de todos los coeficientes \(\beta_j\).

Matemáticas de Ridge

Para minimizar la función de costo de Ridge, se derivan las ecuaciones normales que incluyen la penalización L2. La solución para los coeficientes \(\beta\) en la regresión Ridge se obtiene resolviendo:

\[
\hat{\beta} = (X^T X + \lambda I)^{-1} X^T y
\]

Donde:
- \(X\) es la matriz de diseño (incluye las variables independientes).
- \(I\) es la matriz identidad.
- \(y\) es el vector de la variable dependiente.

La inclusión de \(\lambda I\) en la inversa de \(X^T X\) ayuda a estabilizar la inversa cuando \(X^T X\) es casi singular, lo que mejora la estabilidad y reduce la varianza del modelo.

3. Regresión Lasso (Regularización L1)

La regresión Lasso, o regularización L1, añade una penalización proporcional al valor absoluto de los coeficientes. La función de costo para la regresión Lasso se define como:

\[
\text{Costo Lasso} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 + \lambda \sum_{j=1}^{p} |\beta_j|
\]

Donde:
- \(\sum_{i=1}^{n} (y_i - \hat{y}_i)^2\) es la suma de los cuadrados de los residuos (MSE).
- \(\lambda\) es el parámetro de regularización.
- \(\sum_{j=1}^{p} |\beta_j|\) es la penalización L1, que suma los valores absolutos de todos los coeficientes \(\beta_j\).

Matemáticas de Lasso

La regularización L1 tiene la propiedad de promover la esparsidad en los coeficientes, es decir, puede hacer que algunos coeficientes sean exactamente cero. Esto es útil para la selección de características y simplificación del modelo.

La solución para los coeficientes \(\beta\) en la regresión Lasso no tiene una solución analítica directa como en Ridge. En cambio, se utilizan métodos de optimización iterativa, como el algoritmo de coordenada o técnicas de optimización convexa.

4. Comparación entre Ridge y Lasso

- Ridge: Penaliza la magnitud de los coeficientes mediante el cuadrado de los coeficientes. Es adecuado cuando todas las variables tienen una contribución pequeña o moderada. No tiende a eliminar completamente ninguna variable.

- Lasso: Penaliza la magnitud de los coeficientes mediante el valor absoluto. Puede llevar a coeficientes exactamente iguales a cero, por lo que es útil para la selección de características y crear modelos más simples.

5. Elastic Net

El **Elastic Net** combina las penalizaciones de Ridge y Lasso y se define como:

\[
\text{Costo Elastic Net} = \frac{1}{n} \sum_{i=1}^{n} (y_i - \hat{y}_i)^2 + \lambda_1 \sum_{j=1}^{p} |\beta_j| + \frac{\lambda_2}{2} \sum_{j=1}^{p} \beta_j^2
\]

Donde:
- \(\lambda_1\) controla la penalización L1 (Lasso).
- \(\lambda_2\) controla la penalización L2 (Ridge).

Elastic Net es útil cuando se tiene una gran cantidad de variables y se espera que algunas sean correlacionadas entre sí.

Conclusión

La regularización es una herramienta esencial para mejorar la capacidad generalizadora de los modelos de regresión lineal. Ridge y Lasso proporcionan enfoques diferentes para penalizar los coeficientes, con Ridge favoreciendo la estabilidad y Lasso la simplicidad del modelo. Elastic Net ofrece una solución intermedia que combina lo mejor de ambos métodos. La elección entre estos métodos depende de la naturaleza de los datos y los objetivos del modelo.

Aplicación práctica

Un ejemplo práctico de cómo se puede utilizar el aprendizaje supervisado para resolver un problema de regresión lineal. Supongamos que tenemos un conjunto de datos que representan el precio de algunas casas en una determinada ciudad, y queremos predecir el precio de una casa en función de su tamaño en metros cuadrados. Lo primero que debemos hacer es importar las librerías necesarias. En este caso, utilizaremos NumPy para trabajar con matrices y scikit-learn para construir nuestro modelo de regresión lineal:

import numpy as np
from sklearn.linear_model import LinearRegression

A continuación, creamos nuestra matriz de datos X y el vector objetivo y. Supongamos que tenemos los datos en un archivo CSV llamado datos_casas.csv, donde la primera columna representa el tamaño de la casa en metros cuadrados y la segunda columna su precio:

datos = np.loadtxt('datos_casas.csv', delimiter=',')
X = datos[:, 0].reshape(-1, 1)
y = datos[:, 1]

En este caso, utilizamos la función loadtxt de NumPy para cargar los datos desde el archivo CSV. La función reshape nos permite convertir el vector X en una matriz de una sola columna. A continuación, creamos una instancia de la clase LinearRegression y ajustamos nuestro modelo a los datos:

modelo = LinearRegression()
modelo.fit(X, y)

¡Y ya tenemos nuestro modelo de regresión lineal entrenado! Ahora podemos utilizarlo para predecir el precio de una casa en función de su tamaño. Por ejemplo, si queremos predecir el precio de una casa de 100 metros cuadrados, podemos hacer:

precio_predicho = modelo.predict([[100]])
print(precio_predicho)

Y obtendríamos el precio predicho por nuestro modelo. Es importante destacar que este ejemplo es muy sencillo y que, en la práctica, sería necesario realizar una exploración más detallada de los datos, seleccionar las características más relevantes para nuestra predicción, evaluar el rendimiento del modelo, etc. No obstante, espero que este ejemplo te sea de utilidad para entender cómo se puede utilizar el aprendizaje supervisado para resolver un problema de regresión lineal.