Valutazione 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.
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=allcorrect=TP+TN+FP+FNTP+TNSebbene 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=predicted positivecorrect positive=TP+FPTPRichiamo (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=all positivecorrect positive=TP+FNTPF1-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=precision+recall2×precision×recall1. 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?
Grazie per i tuoi commenti!
Chieda ad AI
Chieda ad AI
Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione
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
Valutazione 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.
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=allcorrect=TP+TN+FP+FNTP+TNSebbene 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=predicted positivecorrect positive=TP+FPTPRichiamo (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=all positivecorrect positive=TP+FNTPF1-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=precision+recall2×precision×recall1. 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?
Grazie per i tuoi commenti!