Introducción

Los algoritmos de regresión son una clase de algoritmos de aprendizaje supervisado utilizados para predecir un valor continuo. A diferencia de los algoritmos de clasificación, que predicen categorías discretas, los algoritmos de regresión predicen valores numéricos. Estos algoritmos son fundamentales en diversas aplicaciones, como la predicción de precios, la estimación de ventas y la modelización de relaciones entre variables.

Conceptos Clave

  1. Variable Dependiente (Y): La variable que se desea predecir.
  2. Variable Independiente (X): Las variables que se utilizan para hacer la predicción.
  3. Función de Pérdida: Una función que mide el error de las predicciones del modelo.
  4. Coeficientes: Parámetros del modelo que se ajustan durante el entrenamiento.

Tipos de Algoritmos de Regresión

  1. Regresión Lineal

La regresión lineal es uno de los algoritmos de regresión más simples y ampliamente utilizados. Se basa en la suposición de que existe una relación lineal entre la variable dependiente y las variables independientes.

Fórmula

\[ Y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + ... + \beta_n X_n + \epsilon \]

  • \( Y \): Variable dependiente.
  • \( \beta_0 \): Intercepto.
  • \( \beta_1, \beta_2, ..., \beta_n \): Coeficientes de las variables independientes.
  • \( X_1, X_2, ..., X_n \): Variables independientes.
  • \( \epsilon \): Error residual.

Ejemplo en Python

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

# Datos de ejemplo
X = np.array([[1], [2], [3], [4], [5]])
Y = np.array([1, 3, 2, 5, 4])

# Crear el modelo de regresión lineal
model = LinearRegression()
model.fit(X, Y)

# Predicciones
Y_pred = model.predict(X)

# Visualización
plt.scatter(X, Y, color='blue')
plt.plot(X, Y_pred, color='red')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Regresión Lineal')
plt.show()

Explicación del Código

  1. Importación de Bibliotecas: Se importan las bibliotecas necesarias.
  2. Datos de Ejemplo: Se crean los datos de entrada \(X\) y las etiquetas \(Y\).
  3. Creación del Modelo: Se crea un objeto LinearRegression y se ajusta a los datos.
  4. Predicciones: Se realizan predicciones utilizando el modelo ajustado.
  5. Visualización: Se visualizan los datos originales y la línea de regresión.

  1. Regresión Polinómica

La regresión polinómica es una extensión de la regresión lineal que permite modelar relaciones no lineales entre las variables independientes y la variable dependiente.

Fórmula

\[ Y = \beta_0 + \beta_1 X + \beta_2 X^2 + ... + \beta_n X^n + \epsilon \]

Ejemplo en Python

from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline

# Datos de ejemplo
X = np.array([[1], [2], [3], [4], [5]])
Y = np.array([1, 3, 2, 5, 7])

# Crear el modelo de regresión polinómica
degree = 2
model = make_pipeline(PolynomialFeatures(degree), LinearRegression())
model.fit(X, Y)

# Predicciones
Y_pred = model.predict(X)

# Visualización
plt.scatter(X, Y, color='blue')
plt.plot(X, Y_pred, color='red')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Regresión Polinómica')
plt.show()

Explicación del Código

  1. Importación de Bibliotecas: Se importan las bibliotecas necesarias.
  2. Datos de Ejemplo: Se crean los datos de entrada \(X\) y las etiquetas \(Y\).
  3. Creación del Modelo: Se crea un pipeline que incluye la transformación polinómica y la regresión lineal.
  4. Predicciones: Se realizan predicciones utilizando el modelo ajustado.
  5. Visualización: Se visualizan los datos originales y la curva de regresión.

  1. Regresión Ridge

La regresión Ridge es una variante de la regresión lineal que incluye una penalización para los coeficientes del modelo, lo que ayuda a prevenir el sobreajuste.

Fórmula

\[ Y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + ... + \beta_n X_n + \epsilon \]

Con una penalización:

\[ \text{Penalización} = \lambda \sum_{i=1}^{n} \beta_i^2 \]

Ejemplo en Python

from sklearn.linear_model import Ridge

# Datos de ejemplo
X = np.array([[1], [2], [3], [4], [5]])
Y = np.array([1, 3, 2, 5, 4])

# Crear el modelo de regresión Ridge
model = Ridge(alpha=1.0)
model.fit(X, Y)

# Predicciones
Y_pred = model.predict(X)

# Visualización
plt.scatter(X, Y, color='blue')
plt.plot(X, Y_pred, color='red')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Regresión Ridge')
plt.show()

Explicación del Código

  1. Importación de Bibliotecas: Se importan las bibliotecas necesarias.
  2. Datos de Ejemplo: Se crean los datos de entrada \(X\) y las etiquetas \(Y\).
  3. Creación del Modelo: Se crea un objeto Ridge con una penalización \(\alpha\) y se ajusta a los datos.
  4. Predicciones: Se realizan predicciones utilizando el modelo ajustado.
  5. Visualización: Se visualizan los datos originales y la línea de regresión.

Ejercicios Prácticos

Ejercicio 1: Regresión Lineal

Instrucciones: Utiliza el conjunto de datos proporcionado para ajustar un modelo de regresión lineal y realiza predicciones.

Datos:

X = np.array([[1], [2], [3], [4], [5], [6], [7], [8], [9], [10]])
Y = np.array([2, 4, 5, 4, 5, 7, 8, 9, 10, 12])

Solución:

import numpy as np
import matplotlib.pyplot as plt
from sklearn.linear_model import LinearRegression

# Datos de ejemplo
X = np.array([[1], [2], [3], [4], [5], [6], [7], [8], [9], [10]])
Y = np.array([2, 4, 5, 4, 5, 7, 8, 9, 10, 12])

# Crear el modelo de regresión lineal
model = LinearRegression()
model.fit(X, Y)

# Predicciones
Y_pred = model.predict(X)

# Visualización
plt.scatter(X, Y, color='blue')
plt.plot(X, Y_pred, color='red')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Regresión Lineal')
plt.show()

Ejercicio 2: Regresión Polinómica

Instrucciones: Ajusta un modelo de regresión polinómica de grado 3 a los siguientes datos y realiza predicciones.

Datos:

X = np.array([[1], [2], [3], [4], [5], [6], [7], [8], [9], [10]])
Y = np.array([1, 3, 2, 5, 7, 8, 7, 10, 12, 15])

Solución:

from sklearn.preprocessing import PolynomialFeatures
from sklearn.pipeline import make_pipeline

# Datos de ejemplo
X = np.array([[1], [2], [3], [4], [5], [6], [7], [8], [9], [10]])
Y = np.array([1, 3, 2, 5, 7, 8, 7, 10, 12, 15])

# Crear el modelo de regresión polinómica
degree = 3
model = make_pipeline(PolynomialFeatures(degree), LinearRegression())
model.fit(X, Y)

# Predicciones
Y_pred = model.predict(X)

# Visualización
plt.scatter(X, Y, color='blue')
plt.plot(X, Y_pred, color='red')
plt.xlabel('X')
plt.ylabel('Y')
plt.title('Regresión Polinómica')
plt.show()

Conclusión

En esta sección, hemos explorado varios tipos de algoritmos de regresión, incluyendo la regresión lineal, la regresión polinómica y la regresión Ridge. Cada uno de estos algoritmos tiene sus propias ventajas y aplicaciones, y es importante seleccionar el algoritmo adecuado según la naturaleza del problema y los datos disponibles. Los ejercicios prácticos proporcionados ayudan a reforzar los conceptos aprendidos y a aplicar estos algoritmos en situaciones reales.

© Copyright 2024. Todos los derechos reservados