Valutazione 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.
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=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 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=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 importanti. Questo è utile quando il dataset è sbilanciato, ovvero quando una classe appare significativamente più 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
Awesome!
Completion rate improved to 4
Valutazione 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.
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=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 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=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 importanti. Questo è utile quando il dataset è sbilanciato, ovvero quando una classe appare significativamente più 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!