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
Practice
Projects
Quizzes & Challenges
Quizzes
Challenges
/
Introduzione alle Reti Neurali con Python

bookValutazione del Modello

Suddivisione dei dati

Dopo l'addestramento di una rete neurale, è fondamentale valutare quanto bene 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 il 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 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;
  • 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—soprattutto 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 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 alto richiamo è 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?

bookValutazione del Modello

Scorri per mostrare il menu

Suddivisione dei dati

Dopo l'addestramento di una rete neurale, è fondamentale valutare quanto bene 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 il 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 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;
  • 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—soprattutto 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 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 alto richiamo è 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