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

Dopo l'addestramento di una rete neurale, è fondamentale valutare quanto bene essa si comporta su dati non visti. Questa valutazione aiuta a determinare se il modello ha appreso schemi significativi o se ha semplicemente memorizzato gli esempi di addestramento. Per fare ciò, il dataset viene suddiviso in due parti:

  • Training set — utilizzato per addestrare la rete neurale regolando pesi e bias tramite backpropagation;
  • Test set — utilizzato dopo l'addestramento per valutare quanto bene il modello generalizza su nuovi dati non visti.

Una suddivisione comune è 80% per l'addestramento e 20% per il test, anche se questo rapporto può variare a seconda della dimensione e complessità del dataset.

La suddivisione dei dati viene solitamente eseguita 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 determina la proporzione di dati riservata al test. Ad esempio, impostando test_size=0.1 significa che 10% dei dati verrà utilizzato per il test, mentre 90% verrà utilizzato per l'addestramento.

Se il modello si comporta bene sul training set ma male sul test set, potrebbe esserci overfitting — apprendimento di schemi troppo specifici ai dati di addestramento invece di generalizzare su nuovi esempi. L'obiettivo è ottenere buone prestazioni su entrambi i dataset, assicurando che il modello generalizzi correttamente.

Una volta suddivisi i dati e addestrato il modello, le prestazioni devono essere misurate utilizzando metriche di valutazione appropriate, che dipendono dallo specifico compito di classificazione.

Metriche di classificazione

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

  • Accuratezza;
  • Precisione;
  • Richiamo;
  • 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 previste 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 nulla di utile. In questi casi, precisione, richiamo o F1-score possono essere metriche più informative.

Precisione è la percentuale di casi positivi previsti correttamente sul totale dei 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 rilevanti. Questo è utile quando il dataset è sbilanciato, ovvero quando una classe appare significativamente più spesso 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

Suggested prompts:

Can you explain what a confusion matrix is and how to interpret it?

How do I choose which evaluation metric to use for my classification problem?

Can you give examples of when to prioritize precision over recall, or vice versa?

Awesome!

Completion rate improved to 4

bookValutazione del Modello

Scorri per mostrare il menu

Suddivisione dei dati

Dopo l'addestramento di una rete neurale, è fondamentale valutare quanto bene essa si comporta su dati non visti. Questa valutazione aiuta a determinare se il modello ha appreso schemi significativi o se ha semplicemente memorizzato gli esempi di addestramento. Per fare ciò, il dataset viene suddiviso in due parti:

  • Training set — utilizzato per addestrare la rete neurale regolando pesi e bias tramite backpropagation;
  • Test set — utilizzato dopo l'addestramento per valutare quanto bene il modello generalizza su nuovi dati non visti.

Una suddivisione comune è 80% per l'addestramento e 20% per il test, anche se questo rapporto può variare a seconda della dimensione e complessità del dataset.

La suddivisione dei dati viene solitamente eseguita 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 determina la proporzione di dati riservata al test. Ad esempio, impostando test_size=0.1 significa che 10% dei dati verrà utilizzato per il test, mentre 90% verrà utilizzato per l'addestramento.

Se il modello si comporta bene sul training set ma male sul test set, potrebbe esserci overfitting — apprendimento di schemi troppo specifici ai dati di addestramento invece di generalizzare su nuovi esempi. L'obiettivo è ottenere buone prestazioni su entrambi i dataset, assicurando che il modello generalizzi correttamente.

Una volta suddivisi i dati e addestrato il modello, le prestazioni devono essere misurate utilizzando metriche di valutazione appropriate, che dipendono dallo specifico compito di classificazione.

Metriche di classificazione

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

  • Accuratezza;
  • Precisione;
  • Richiamo;
  • 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 previste 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 nulla di utile. In questi casi, precisione, richiamo o F1-score possono essere metriche più informative.

Precisione è la percentuale di casi positivi previsti correttamente sul totale dei 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 rilevanti. Questo è utile quando il dataset è sbilanciato, ovvero quando una classe appare significativamente più spesso 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