Overfitting
Overfitting
Considera le due linee di regressione qui sotto. Quale delle due è migliore?
Secondo le metriche, la seconda è migliore. Quindi la useremo per prevedere nuovi valori! Abbiamo bisogno delle previsioni per X_new = [0.2,0.5,2.7]
. Tuttavia, quando abbiamo ottenuto i valori target reali per gli X_new
appena previsti, si è scoperto che il primo modello aveva una previsione molto migliore.
Questo accade perché il secondo modello overfitta il set di addestramento. Overfitting si verifica quando il modello costruito è troppo complesso, tanto da adattarsi perfettamente ai dati di addestramento, ma non riesce a prevedere altre istanze non viste altrettanto bene.
Underfitting
Esiste anche un altro concetto, underfitting. Si verifica quando il modello costruito è troppo semplice e non si adatta nemmeno bene ai dati di addestramento. In questi casi, anche le previsioni delle istanze non viste risultano errate.
È possibile cercare di determinare visivamente se il modello presenta underfitting o overfitting.
Sappiamo già che non è possibile visualizzare la Regressione Lineare Multipla con molte variabili. Esiste un altro modo per capire se il modello presenta overfitting o underfitting? In effetti, esiste.
Suddivisione Train-Test
È importante valutare come il modello si comporterà su istanze non viste. Per questo, sono necessarie istanze non viste con i veri valori target. I veri valori target sono disponibili solo nel set di addestramento. La soluzione consiste nel suddividere il set di addestramento in due insiemi: un set di addestramento e un set di test.
A questo punto è possibile costruire il modello utilizzando il set di addestramento, calcolare le metriche sul set di addestramento (istanze viste) e successivamente calcolare le metriche sul set di test (istanze non viste).
È fondamentale suddividere casualmente il set di addestramento. Solitamente si utilizza circa il 20-30% del set di addestramento come set di test, mentre il restante 70-80% viene lasciato come set di addestramento. Scikit-learn mette a disposizione una funzione semplice per suddividere casualmente il set:
Ad esempio, per suddividere il set di addestramento in 70% addestramento/30% test, è possibile utilizzare il seguente codice:
from sklearn.model_selection import train_test_split # import the function
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
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 5.26
Overfitting
Scorri per mostrare il menu
Overfitting
Considera le due linee di regressione qui sotto. Quale delle due è migliore?
Secondo le metriche, la seconda è migliore. Quindi la useremo per prevedere nuovi valori! Abbiamo bisogno delle previsioni per X_new = [0.2,0.5,2.7]
. Tuttavia, quando abbiamo ottenuto i valori target reali per gli X_new
appena previsti, si è scoperto che il primo modello aveva una previsione molto migliore.
Questo accade perché il secondo modello overfitta il set di addestramento. Overfitting si verifica quando il modello costruito è troppo complesso, tanto da adattarsi perfettamente ai dati di addestramento, ma non riesce a prevedere altre istanze non viste altrettanto bene.
Underfitting
Esiste anche un altro concetto, underfitting. Si verifica quando il modello costruito è troppo semplice e non si adatta nemmeno bene ai dati di addestramento. In questi casi, anche le previsioni delle istanze non viste risultano errate.
È possibile cercare di determinare visivamente se il modello presenta underfitting o overfitting.
Sappiamo già che non è possibile visualizzare la Regressione Lineare Multipla con molte variabili. Esiste un altro modo per capire se il modello presenta overfitting o underfitting? In effetti, esiste.
Suddivisione Train-Test
È importante valutare come il modello si comporterà su istanze non viste. Per questo, sono necessarie istanze non viste con i veri valori target. I veri valori target sono disponibili solo nel set di addestramento. La soluzione consiste nel suddividere il set di addestramento in due insiemi: un set di addestramento e un set di test.
A questo punto è possibile costruire il modello utilizzando il set di addestramento, calcolare le metriche sul set di addestramento (istanze viste) e successivamente calcolare le metriche sul set di test (istanze non viste).
È fondamentale suddividere casualmente il set di addestramento. Solitamente si utilizza circa il 20-30% del set di addestramento come set di test, mentre il restante 70-80% viene lasciato come set di addestramento. Scikit-learn mette a disposizione una funzione semplice per suddividere casualmente il set:
Ad esempio, per suddividere il set di addestramento in 70% addestramento/30% test, è possibile utilizzare il seguente codice:
from sklearn.model_selection import train_test_split # import the function
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
Grazie per i tuoi commenti!