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
- Importació de Llibreries: Importem les llibreries necessàries, com ara
numpy
per a la manipulació de matrius,matplotlib
per a la visualització iLinearRegression
desklearn
per al model de regressió. - Dades d'Exemple: Definim les dades d'exemple per a les variables independents \( X \) i la variable dependent \( y \).
- Creació del Model: Creem una instància del model de regressió lineal i l'ajustem a les dades.
- Prediccions: Utilitzem el model ajustat per fer prediccions sobre les dades.
- 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
- Importació de Llibreries: Importem les llibreries necessàries, incloent
PolynomialFeatures
per transformar les dades imake_pipeline
per crear un pipeline. - Dades d'Exemple: Definim les dades d'exemple per a les variables independents \( X \) i la variable dependent \( y \).
- Creació del Model: Creem un pipeline que inclou la transformació polinòmica de grau 2 i el model de regressió lineal.
- Prediccions: Utilitzem el model ajustat per fer prediccions sobre les dades.
- 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
- Importació de Llibreries: Importem les llibreries necessàries, incloent
Ridge
iLasso
desklearn
. - Creació del Model Ridge: Creem una instància del model de regressió Ridge i l'ajustem a les dades.
- Creació del Model Lasso: Creem una instància del model de regressió Lasso i l'ajustem a les dades.
- Prediccions: Utilitzem els models ajustats per fer prediccions sobre les dades.
- 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.
Algoritmes Avançats
Mòdul 1: Introducció als Algoritmes Avançats
Mòdul 2: Algoritmes d'Optimització
- Programació Lineal
- Algoritmes d'Optimització Combinatòria
- Algoritmes Genètics
- Optimització de Colònia de Formigues
Mòdul 3: Algoritmes en Grafs
- Representació de Grafs
- Cerca en Grafs: BFS i DFS
- Algoritmes de Camins Mínims
- Algoritmes de Flux Màxim
- Algoritmes d'Aparellament en Grafs
Mòdul 4: Algoritmes de Cerca i Ordenació
Mòdul 5: Algoritmes d'Aprenentatge Automàtic
- Introducció a l'Aprenentatge Automàtic
- Algoritmes de Classificació
- Algoritmes de Regressió
- Xarxes Neuronals i Deep Learning
- Algoritmes de Clustering
Mòdul 6: Casos d'Estudi i Aplicacions
- Optimització en la Indústria
- Aplicacions de Grafs en Xarxes Socials
- Cerca i Ordenació en Grans Volums de Dades
- Aplicacions d'Aprenentatge Automàtic en la Vida Real