Introducció

Els algoritmes de regressió són una part fonamental de l'aprenentatge automàtic supervisat. Aquests algoritmes es fan servir per predir valors continus, com ara preus, temperatures o qualsevol altra variable numèrica. En aquesta secció, explorarem els conceptes bàsics de la regressió, els tipus d'algoritmes de regressió més comuns i com implementar-los.

Conceptes Bàsics

Definició de Regressió

La regressió és una tècnica estadística que modela la relació entre una variable dependent (o resposta) i una o més variables independents (o predictors). L'objectiu és trobar una funció que descrigui aquesta relació i que pugui predir els valors de la variable dependent.

Tipus de Regressió

Hi ha diversos tipus d'algoritmes de regressió, cadascun amb les seves pròpies característiques i aplicacions. Alguns dels més comuns són:

  • Regressió Lineal
  • Regressió Polinòmica
  • Regressió Logística
  • Regressió Ridge
  • Regressió Lasso

Regressió Lineal

Descripció

La regressió lineal és el tipus més senzill de regressió. Assumeix que hi ha una relació lineal entre la variable dependent i les variables independents.

Fórmula

La fórmula de la regressió lineal és: \[ y = \beta_0 + \beta_1 x_1 + \beta_2 x_2 + \ldots + \beta_n x_n + \epsilon \] on:

  • \( y \) és la variable dependent.
  • \( \beta_0 \) és la intersecció.
  • \( \beta_1, \beta_2, \ldots, \beta_n \) són els coeficients de les variables independents \( x_1, x_2, \ldots, x_n \).
  • \( \epsilon \) és l'error residual.

Exemple en Python

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

# Dades d'exemple
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([1, 3, 2, 5, 4])

# Crear el model de regressió lineal
model = LinearRegression()
model.fit(X, y)

# Prediccions
y_pred = model.predict(X)

# Visualitzar els resultats
plt.scatter(X, y, color='blue')
plt.plot(X, y_pred, color='red')
plt.xlabel('X')
plt.ylabel('y')
plt.title('Regressió Lineal')
plt.show()

Explicació del Codi

  1. Importació de Llibreries: Importem les llibreries necessàries, com ara numpy per a la manipulació de matrius, matplotlib per a la visualització i LinearRegression de sklearn per al model de regressió.
  2. Dades d'Exemple: Definim les dades d'exemple per a les variables independents \( X \) i la variable dependent \( y \).
  3. Creació del Model: Creem una instància del model de regressió lineal i l'ajustem a les dades.
  4. Prediccions: Utilitzem el model ajustat per fer prediccions sobre les dades.
  5. Visualització: Visualitzem les dades originals i la línia de regressió ajustada.

Regressió Polinòmica

Descripció

La regressió polinòmica és una extensió de la regressió lineal que permet modelar relacions no lineals entre les variables.

Fórmula

La fórmula de la regressió polinòmica de grau \( d \) és: \[ y = \beta_0 + \beta_1 x + \beta_2 x^2 + \ldots + \beta_d x^d + \epsilon \]

Exemple en Python

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

# Dades d'exemple
X = np.array([[1], [2], [3], [4], [5]])
y = np.array([1, 3, 2, 5, 4])

# Crear el model de regressió polinòmica de grau 2
poly_model = make_pipeline(PolynomialFeatures(degree=2), LinearRegression())
poly_model.fit(X, y)

# Prediccions
y_poly_pred = poly_model.predict(X)

# Visualitzar els resultats
plt.scatter(X, y, color='blue')
plt.plot(X, y_poly_pred, color='red')
plt.xlabel('X')
plt.ylabel('y')
plt.title('Regressió Polinòmica')
plt.show()

Explicació del Codi

  1. Importació de Llibreries: Importem les llibreries necessàries, incloent PolynomialFeatures per transformar les dades i make_pipeline per crear un pipeline.
  2. Dades d'Exemple: Definim les dades d'exemple per a les variables independents \( X \) i la variable dependent \( y \).
  3. Creació del Model: Creem un pipeline que inclou la transformació polinòmica de grau 2 i el model de regressió lineal.
  4. Prediccions: Utilitzem el model ajustat per fer prediccions sobre les dades.
  5. Visualització: Visualitzem les dades originals i la corba de regressió ajustada.

Regressió Ridge i Lasso

Descripció

La regressió Ridge i Lasso són tècniques de regularització que s'utilitzen per prevenir el sobreajustament en models de regressió.

Fórmules

  • Regressió Ridge: \[ \text{Minimitzar} \quad \sum_{i=1}^{n} (y_i - \hat{y}i)^2 + \lambda \sum{j=1}^{p} \beta_j^2 \]
  • Regressió Lasso: \[ \text{Minimitzar} \quad \sum_{i=1}^{n} (y_i - \hat{y}i)^2 + \lambda \sum{j=1}^{p} |\beta_j| \]

Exemple en Python

from sklearn.linear_model import Ridge, Lasso

# Crear el model de regressió Ridge
ridge_model = Ridge(alpha=1.0)
ridge_model.fit(X, y)
y_ridge_pred = ridge_model.predict(X)

# Crear el model de regressió Lasso
lasso_model = Lasso(alpha=0.1)
lasso_model.fit(X, y)
y_lasso_pred = lasso_model.predict(X)

# Visualitzar els resultats
plt.scatter(X, y, color='blue')
plt.plot(X, y_ridge_pred, color='red', label='Ridge')
plt.plot(X, y_lasso_pred, color='green', label='Lasso')
plt.xlabel('X')
plt.ylabel('y')
plt.title('Regressió Ridge i Lasso')
plt.legend()
plt.show()

Explicació del Codi

  1. Importació de Llibreries: Importem les llibreries necessàries, incloent Ridge i Lasso de sklearn.
  2. Creació del Model Ridge: Creem una instància del model de regressió Ridge i l'ajustem a les dades.
  3. Creació del Model Lasso: Creem una instància del model de regressió Lasso i l'ajustem a les dades.
  4. Prediccions: Utilitzem els models ajustats per fer prediccions sobre les dades.
  5. Visualització: Visualitzem les dades originals i les línies de regressió ajustades per Ridge i Lasso.

Exercicis Pràctics

Exercici 1: Regressió Lineal

Utilitza les dades següents per ajustar un model de regressió lineal i predir els valors de \( y \) per a \( X \) nous.

# Dades d'exemple
X_train = np.array([[1], [2], [3], [4], [5]])
y_train = np.array([1, 3, 2, 5, 4])

# Nous valors de X per predir
X_new = np.array([[6], [7], [8]])

Solució

# Crear el model de regressió lineal
model = LinearRegression()
model.fit(X_train, y_train)

# Prediccions
y_new_pred = model.predict(X_new)
print(y_new_pred)

Exercici 2: Regressió Polinòmica

Utilitza les dades següents per ajustar un model de regressió polinòmica de grau 3 i predir els valors de \( y \) per a \( X \) nous.

# Dades d'exemple
X_train = np.array([[1], [2], [3], [4], [5]])
y_train = np.array([1, 3, 2, 5, 4])

# Nous valors de X per predir
X_new = np.array([[6], [7], [8]])

Solució

# Crear el model de regressió polinòmica de grau 3
poly_model = make_pipeline(PolynomialFeatures(degree=3), LinearRegression())
poly_model.fit(X_train, y_train)

# Prediccions
y_new_poly_pred = poly_model.predict(X_new)
print(y_new_poly_pred)

Conclusió

En aquesta secció, hem explorat diversos tipus d'algoritmes de regressió, incloent la regressió lineal, polinòmica, Ridge i Lasso. Hem vist com implementar aquests models en Python i com utilitzar-los per fer prediccions. A més, hem proporcionat exercicis pràctics per reforçar els conceptes apresos. En la següent secció, explorarem les xarxes neuronals i el deep learning, que són tècniques més avançades per a problemes de predicció complexos.

© Copyright 2024. Tots els drets reservats