Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Metriche | Scelta del Modello Migliore
Regressione Lineare con Python

bookMetriche

Quando si costruisce un modello, è importante misurarne le prestazioni.
È necessario associare al modello un punteggio che descriva accuratamente quanto bene si adatta ai dati. Questo punteggio è noto come metrica, e sono disponibili numerose metriche.
In questo capitolo, ci concentreremo su quelle più comunemente utilizzate.

Utilizzeremo la seguente notazione:

Siamo già familiari con una metrica, SSR (Somma dei Residui Quadrati), che abbiamo minimizzato per identificare i parametri ottimali.
Utilizzando la nostra notazione, possiamo esprimere la formula per SSR come segue:

o, in modo equivalente:

Questa metrica era utile per confrontare modelli con lo stesso numero di istanze. Tuttavia, non fornisce una comprensione di quanto bene il modello si comporti. Ecco perché:
Supponiamo di avere due modelli su diversi set di addestramento (mostrati nell'immagine qui sotto).

Si può vedere che il primo modello si adatta bene ma ha comunque un SSR più alto rispetto al secondo modello, che visivamente si adatta peggio ai dati. Questo è accaduto solo perché il primo modello ha molti più punti dati, quindi la somma è più alta, ma in media i residui del primo modello sono inferiori. Quindi, prendere la media dei residui al quadrato come metrica descriverebbe meglio il modello. Questo è esattamente ciò che fa il Mean Squared Error (MSE).

MSE

o, in modo equivalente:

Per calcolare la metrica MSE utilizzando Python, è possibile usare le funzioni di NumPy:

mse = np.mean((y_true-y_pred)**2)

Oppure si può utilizzare il metodo mean_squared_error() di Scikit-learn:

from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_true, y_pred)

Dove y_true è un array di valori target reali e y_pred è un array di valori target previsti per le stesse caratteristiche.

Il problema è che l'errore mostrato è elevato al quadrato. Ad esempio, supponiamo che l'MSE del modello che predice i prezzi delle case sia 49 dollari². Siamo interessati al prezzo, non al prezzo elevato al quadrato, come indicato dall'MSE, quindi vorremmo calcolare la radice quadrata dell'MSE e ottenere 7 dollari. Ora abbiamo una metrica con la stessa unità del valore previsto. Questa metrica è chiamata Root Mean Squared Error (RMSE).

RMSE

Per calcolare la metrica RMSE utilizzando Python, è possibile utilizzare le funzioni di NumPy:

rmse = np.sqrt(np.mean((y_true-y_pred)**2))

Oppure è possibile utilizzare il metodo mean_squared_error() di Scikit-learn con squared=False:

from sklearn.metrics import mean_squared_error
rmse = mean_squared_error(y_true, y_pred, squared=False)

MAE

Nella SSR, i residui sono stati elevati al quadrato per eliminare il segno. Un secondo approccio consiste nel prendere il valore assoluto dei residui invece di elevarli al quadrato. Questa è l'idea alla base del Mean Absolute Error (MAE).

o allo stesso modo

È equivalente al MSE, ma invece di elevare al quadrato i residui, si considerano i loro valori assoluti.

Sebbene MAE sia simile a MSE, poiché utilizza i valori assoluti dei residui, risulta più robusto agli outlier, in quanto non amplifica gli errori grandi quanto fa il MSE. Di conseguenza, MAE è spesso preferibile quando il dataset contiene outlier, poiché il suo valore non aumenta in modo sproporzionato a causa di pochi errori estremi.

Per calcolare la metrica MAE utilizzando Python, è possibile usare le funzioni di NumPy:

mae = np.mean(np.fabs(y_true-y_pred))

Oppure si può utilizzare il metodo mean_absolute_error() di Scikit-learn:

from sklearn.metrics import mean_absolute_error
mae = mean_absolute_error(y_true, y_pred)

Per la scelta dei parametri, abbiamo utilizzato la metrica SSR. Questo perché era adatta ai calcoli matematici e ci ha permesso di ottenere l'Equazione Normale. Tuttavia, per confrontare ulteriormente i modelli, è possibile utilizzare qualsiasi altra metrica.

Note
Nota

Per il confronto tra modelli, SSR, MSE e RMSE selezioneranno sempre in modo identico quale modello è migliore e quale è peggiore. MAE, invece, può talvolta preferire un modello diverso rispetto a SSR/MSE/RMSE, poiché queste ultime penalizzano molto di più i residui elevati. Solitamente, è consigliabile scegliere una metrica a priori e concentrarsi sulla sua minimizzazione.

Ora puoi sicuramente affermare che il secondo modello è migliore, poiché tutte le sue metriche sono inferiori. Tuttavia, metriche più basse non significano sempre che il modello sia migliore.

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 1

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Awesome!

Completion rate improved to 5.26

bookMetriche

Scorri per mostrare il menu

Quando si costruisce un modello, è importante misurarne le prestazioni.
È necessario associare al modello un punteggio che descriva accuratamente quanto bene si adatta ai dati. Questo punteggio è noto come metrica, e sono disponibili numerose metriche.
In questo capitolo, ci concentreremo su quelle più comunemente utilizzate.

Utilizzeremo la seguente notazione:

Siamo già familiari con una metrica, SSR (Somma dei Residui Quadrati), che abbiamo minimizzato per identificare i parametri ottimali.
Utilizzando la nostra notazione, possiamo esprimere la formula per SSR come segue:

o, in modo equivalente:

Questa metrica era utile per confrontare modelli con lo stesso numero di istanze. Tuttavia, non fornisce una comprensione di quanto bene il modello si comporti. Ecco perché:
Supponiamo di avere due modelli su diversi set di addestramento (mostrati nell'immagine qui sotto).

Si può vedere che il primo modello si adatta bene ma ha comunque un SSR più alto rispetto al secondo modello, che visivamente si adatta peggio ai dati. Questo è accaduto solo perché il primo modello ha molti più punti dati, quindi la somma è più alta, ma in media i residui del primo modello sono inferiori. Quindi, prendere la media dei residui al quadrato come metrica descriverebbe meglio il modello. Questo è esattamente ciò che fa il Mean Squared Error (MSE).

MSE

o, in modo equivalente:

Per calcolare la metrica MSE utilizzando Python, è possibile usare le funzioni di NumPy:

mse = np.mean((y_true-y_pred)**2)

Oppure si può utilizzare il metodo mean_squared_error() di Scikit-learn:

from sklearn.metrics import mean_squared_error
mse = mean_squared_error(y_true, y_pred)

Dove y_true è un array di valori target reali e y_pred è un array di valori target previsti per le stesse caratteristiche.

Il problema è che l'errore mostrato è elevato al quadrato. Ad esempio, supponiamo che l'MSE del modello che predice i prezzi delle case sia 49 dollari². Siamo interessati al prezzo, non al prezzo elevato al quadrato, come indicato dall'MSE, quindi vorremmo calcolare la radice quadrata dell'MSE e ottenere 7 dollari. Ora abbiamo una metrica con la stessa unità del valore previsto. Questa metrica è chiamata Root Mean Squared Error (RMSE).

RMSE

Per calcolare la metrica RMSE utilizzando Python, è possibile utilizzare le funzioni di NumPy:

rmse = np.sqrt(np.mean((y_true-y_pred)**2))

Oppure è possibile utilizzare il metodo mean_squared_error() di Scikit-learn con squared=False:

from sklearn.metrics import mean_squared_error
rmse = mean_squared_error(y_true, y_pred, squared=False)

MAE

Nella SSR, i residui sono stati elevati al quadrato per eliminare il segno. Un secondo approccio consiste nel prendere il valore assoluto dei residui invece di elevarli al quadrato. Questa è l'idea alla base del Mean Absolute Error (MAE).

o allo stesso modo

È equivalente al MSE, ma invece di elevare al quadrato i residui, si considerano i loro valori assoluti.

Sebbene MAE sia simile a MSE, poiché utilizza i valori assoluti dei residui, risulta più robusto agli outlier, in quanto non amplifica gli errori grandi quanto fa il MSE. Di conseguenza, MAE è spesso preferibile quando il dataset contiene outlier, poiché il suo valore non aumenta in modo sproporzionato a causa di pochi errori estremi.

Per calcolare la metrica MAE utilizzando Python, è possibile usare le funzioni di NumPy:

mae = np.mean(np.fabs(y_true-y_pred))

Oppure si può utilizzare il metodo mean_absolute_error() di Scikit-learn:

from sklearn.metrics import mean_absolute_error
mae = mean_absolute_error(y_true, y_pred)

Per la scelta dei parametri, abbiamo utilizzato la metrica SSR. Questo perché era adatta ai calcoli matematici e ci ha permesso di ottenere l'Equazione Normale. Tuttavia, per confrontare ulteriormente i modelli, è possibile utilizzare qualsiasi altra metrica.

Note
Nota

Per il confronto tra modelli, SSR, MSE e RMSE selezioneranno sempre in modo identico quale modello è migliore e quale è peggiore. MAE, invece, può talvolta preferire un modello diverso rispetto a SSR/MSE/RMSE, poiché queste ultime penalizzano molto di più i residui elevati. Solitamente, è consigliabile scegliere una metrica a priori e concentrarsi sulla sua minimizzazione.

Ora puoi sicuramente affermare che il secondo modello è migliore, poiché tutte le sue metriche sono inferiori. Tuttavia, metriche più basse non significano sempre che il modello sia migliore.

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 1
some-alt