Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Valutazione del Modello | Rete Neurale da Zero
Introduzione alle Reti Neurali

bookValutazione del Modello

Suddivisione dei dati

Una volta che una rete neurale è stata addestrata, è necessario un metodo per valutare le sue prestazioni su dati non visti. Questo ci aiuta a capire se il modello ha realmente appreso schemi utili o se ha semplicemente memorizzato i dati di addestramento. Per ottenere ciò, il dataset viene suddiviso in due parti:

  • Training set: questa porzione dei dati viene utilizzata per addestrare la rete neurale, consentendole di regolare pesi e bias tramite backpropagation;
  • Test set: dopo l'addestramento, il modello viene valutato su questo dataset separato per misurare quanto bene generalizza su nuovi esempi non visti.

Una suddivisione tipica è 80% training / 20% testing, anche se questa può variare in base alla dimensione e complessità del dataset.

La suddivisione train/test viene solitamente effettuata utilizzando la funzione train_test_split() dal modulo sklearn.model_selection:

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=...)

Il parametro test_size specifica la proporzione del dataset da utilizzare come test set. Ad esempio, impostando test_size=0.1 significa che il 10% dei dati verrà utilizzato per il test, mentre il restante 90% verrà utilizzato per l'addestramento.

Se un modello ottiene buoni risultati sui dati di addestramento ma scarsi sui dati di test, potrebbe essere soggetto a overfitting, ovvero ha memorizzato il training set invece di apprendere schemi generalizzabili. L'obiettivo è ottenere una alta accuratezza sul test mantenendo una buona generalizzazione.

Una volta addestrato il modello, è necessario quantificare le sue prestazioni utilizzando delle metriche. La scelta della metrica dipende dal compito di classificazione specifico.

Metriche di classificazione

Per i problemi di classificazione, possono essere utilizzate diverse metriche chiave per valutare le previsioni del modello:

  • accuratezza;
  • precisione;
  • recall;
  • F1-score.

Poiché un percettrone esegue una classificazione binaria, la creazione di una matrice di confusione aiuterà a comprendere meglio queste metriche.

Note
Definizione

Una matrice di confusione è una tabella che riassume le prestazioni di classificazione del modello confrontando le etichette predette con quelle reali. Fornisce informazioni sul numero di previsioni corrette e errate per ciascuna classe (1 e 0).

Accuratezza misura la proporzione di campioni classificati correttamente sul totale. Se un modello classifica correttamente 90 su 100 immagini, la sua accuratezza è 90%.

accuracy=correctall=TP+TNTP+TN+FP+FN\text{accuracy} = \frac {\text{correct}} {\text{all}} = \frac {TP + TN} {TP + TN + FP + FN}

Sebbene l'accuratezza sia utile, potrebbe non fornire sempre una visione completa—specialmente per dataset sbilanciati. Ad esempio, in un dataset in cui il 95% dei campioni appartiene a una sola classe, un modello potrebbe raggiungere il 95% di accuratezza semplicemente prevedendo sempre la classe maggioritaria—senza apprendere realmente nulla di utile. In questi casi, precisione, richiamo o F1-score possono essere più informativi.

Precisione è la percentuale di casi positivi previsti correttamente su tutti i positivi previsti. Questa metrica è particolarmente utile quando i falsi positivi sono costosi, come nel rilevamento di spam o frodi.

precision=correct positivepredicted positive=TPTP+FP\text{precision} = \frac {\text{correct positive}} {\text{predicted positive}} = \frac {TP} {TP + FP}

Richiamo (sensibilità) misura quanti dei casi effettivamente positivi il modello identifica correttamente. Un richiamo elevato è essenziale in scenari in cui i falsi negativi devono essere minimizzati, come nelle diagnosi mediche.

recall=correct positiveall positive=TPTP+FN\text{recall} = \frac {\text{correct positive}} {\text{all positive}} = \frac {TP} {TP + FN}

F1-score è la media armonica di precisione e richiamo, fornendo una misura bilanciata quando sia i falsi positivi che i falsi negativi sono importanti. Questo è utile quando il dataset è sbilanciato, ovvero quando una classe appare significativamente più dell'altra.

F1=2×precision×recallprecision+recall\text{F1} = \frac {2 \times \text{precision} \times \text{recall}} {\text{precision} + \text{recall}}

1. Qual è lo scopo principale della suddivisione del dataset in set di addestramento e di test?

2. Perché l'F1-score potrebbe essere preferito rispetto all'accuratezza su un dataset sbilanciato?

question mark

Qual è lo scopo principale della suddivisione del dataset in set di addestramento e di test?

Select the correct answer

question mark

Perché l'F1-score potrebbe essere preferito rispetto all'accuratezza su un dataset sbilanciato?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 11

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 4

bookValutazione del Modello

Scorri per mostrare il menu

Suddivisione dei dati

Una volta che una rete neurale è stata addestrata, è necessario un metodo per valutare le sue prestazioni su dati non visti. Questo ci aiuta a capire se il modello ha realmente appreso schemi utili o se ha semplicemente memorizzato i dati di addestramento. Per ottenere ciò, il dataset viene suddiviso in due parti:

  • Training set: questa porzione dei dati viene utilizzata per addestrare la rete neurale, consentendole di regolare pesi e bias tramite backpropagation;
  • Test set: dopo l'addestramento, il modello viene valutato su questo dataset separato per misurare quanto bene generalizza su nuovi esempi non visti.

Una suddivisione tipica è 80% training / 20% testing, anche se questa può variare in base alla dimensione e complessità del dataset.

La suddivisione train/test viene solitamente effettuata utilizzando la funzione train_test_split() dal modulo sklearn.model_selection:

from sklearn.model_selection import train_test_split

X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=...)

Il parametro test_size specifica la proporzione del dataset da utilizzare come test set. Ad esempio, impostando test_size=0.1 significa che il 10% dei dati verrà utilizzato per il test, mentre il restante 90% verrà utilizzato per l'addestramento.

Se un modello ottiene buoni risultati sui dati di addestramento ma scarsi sui dati di test, potrebbe essere soggetto a overfitting, ovvero ha memorizzato il training set invece di apprendere schemi generalizzabili. L'obiettivo è ottenere una alta accuratezza sul test mantenendo una buona generalizzazione.

Una volta addestrato il modello, è necessario quantificare le sue prestazioni utilizzando delle metriche. La scelta della metrica dipende dal compito di classificazione specifico.

Metriche di classificazione

Per i problemi di classificazione, possono essere utilizzate diverse metriche chiave per valutare le previsioni del modello:

  • accuratezza;
  • precisione;
  • recall;
  • F1-score.

Poiché un percettrone esegue una classificazione binaria, la creazione di una matrice di confusione aiuterà a comprendere meglio queste metriche.

Note
Definizione

Una matrice di confusione è una tabella che riassume le prestazioni di classificazione del modello confrontando le etichette predette con quelle reali. Fornisce informazioni sul numero di previsioni corrette e errate per ciascuna classe (1 e 0).

Accuratezza misura la proporzione di campioni classificati correttamente sul totale. Se un modello classifica correttamente 90 su 100 immagini, la sua accuratezza è 90%.

accuracy=correctall=TP+TNTP+TN+FP+FN\text{accuracy} = \frac {\text{correct}} {\text{all}} = \frac {TP + TN} {TP + TN + FP + FN}

Sebbene l'accuratezza sia utile, potrebbe non fornire sempre una visione completa—specialmente per dataset sbilanciati. Ad esempio, in un dataset in cui il 95% dei campioni appartiene a una sola classe, un modello potrebbe raggiungere il 95% di accuratezza semplicemente prevedendo sempre la classe maggioritaria—senza apprendere realmente nulla di utile. In questi casi, precisione, richiamo o F1-score possono essere più informativi.

Precisione è la percentuale di casi positivi previsti correttamente su tutti i positivi previsti. Questa metrica è particolarmente utile quando i falsi positivi sono costosi, come nel rilevamento di spam o frodi.

precision=correct positivepredicted positive=TPTP+FP\text{precision} = \frac {\text{correct positive}} {\text{predicted positive}} = \frac {TP} {TP + FP}

Richiamo (sensibilità) misura quanti dei casi effettivamente positivi il modello identifica correttamente. Un richiamo elevato è essenziale in scenari in cui i falsi negativi devono essere minimizzati, come nelle diagnosi mediche.

recall=correct positiveall positive=TPTP+FN\text{recall} = \frac {\text{correct positive}} {\text{all positive}} = \frac {TP} {TP + FN}

F1-score è la media armonica di precisione e richiamo, fornendo una misura bilanciata quando sia i falsi positivi che i falsi negativi sono importanti. Questo è utile quando il dataset è sbilanciato, ovvero quando una classe appare significativamente più dell'altra.

F1=2×precision×recallprecision+recall\text{F1} = \frac {2 \times \text{precision} \times \text{recall}} {\text{precision} + \text{recall}}

1. Qual è lo scopo principale della suddivisione del dataset in set di addestramento e di test?

2. Perché l'F1-score potrebbe essere preferito rispetto all'accuratezza su un dataset sbilanciato?

question mark

Qual è lo scopo principale della suddivisione del dataset in set di addestramento e di test?

Select the correct answer

question mark

Perché l'F1-score potrebbe essere preferito rispetto all'accuratezza su un dataset sbilanciato?

Select the correct answer

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 2. Capitolo 11
some-alt