1. Il modello di regressione lineare
Nel caso più semplice, la regressione lineare cerca una retta che approssimi la relazione tra una variabile di ingresso $x$ e una di uscita $y$:
ŷ = w * x + b
In forma vettoriale, con più feature, possiamo scrivere:
ŷ = wT x + b
L'obiettivo dell'addestramento è trovare i parametri $w$ e $b$ che minimizzano una funzione di errore (tipicamente l'errore quadratico medio) sui dati storici.
2. Significato dei coefficienti
I coefficienti della regressione lineare sono interessanti perché sono direttamente interpretabili:
- w: quanto varia $y$ in media quando $x$ aumenta di una unità.
- b: il valore atteso di $y$ quando tutte le feature valgono zero.
In un contesto di data science, questo permette di rispondere a domande come "quanto incide una certa variabile sul risultato?".
3. Metriche di valutazione
Per valutare una regressione lineare si usano spesso le metriche viste nella pagina sulle Metriche di Valutazione per il Machine Learning:
- MSE (Errore Quadratico Medio): penalizza di più gli errori grandi.
- RMSE: radice quadrata del MSE, riporta l'errore nell'unità di misura di $y$.
- MAE: errore assoluto medio, più robusto agli outlier.
- R²: quanta parte della variabilità di $y$ è spiegata dal modello.
Nessuna metrica è perfetta in assoluto: va scelta in base al dominio applicativo e al costo degli errori.
4. Esempio in Python con scikit-learn
Di seguito un mini-esempio di regressione lineare con scikit-learn.
Usiamo dati sintetici per semplicità.
import numpy as np
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# Dati di esempio: x = ore di studio, y = punteggio all'esame
X = np.array([[1], [2], [3], [4], [5]]) # feature 2D
y = np.array([55, 60, 65, 70, 80]) # target 1D
# Creazione e addestramento del modello
model = LinearRegression()
model.fit(X, y)
# Predizioni
y_pred = model.predict(X)
print("w (coefficiente):", model.coef_)
print("b (intercetta):", model.intercept_)
print("MSE:", mean_squared_error(y, y_pred))
print("R^2:", r2_score(y, y_pred))
Il codice mostra come creare il modello, addestrarlo e calcolare alcune metriche di base. Su fuzzypython.org puoi estendere questo esempio con visualizzazioni dei punti e della retta di regressione.
5. Prossimi passi
- Provare la regressione lineare multivariata con più feature.
- Esplorare la regolarizzazione (Ridge, Lasso) per evitare overfitting.
- Confrontare i risultati con modelli non lineari (es. alberi di decisione).
La regressione lineare è spesso il primo passo per capire come collegare formalmente dati, matematica e decisioni in un contesto di machine learning.