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 e si adatta 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 riesce nemmeno ad adattarsi bene ai dati di addestramento. In questi casi, anche le previsioni delle istanze non viste risultano errate.
È possibile cercare di capire se il modello presenta underfitting o overfitting anche visivamente.
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
Vogliamo sapere come il modello si comporterà su istanze mai viste. Per questo, abbiamo bisogno di istanze non viste con i veri valori target. E abbiamo i veri valori target solo nel set di addestramento. Il metodo corretto consiste nel suddividere il set di addestramento in due insiemi: un set di addestramento e un set di test.
Ora possiamo costruire il modello utilizzando il set di addestramento, calcolare le metriche sul set di addestramento (istanze viste) e poi calcolare le metriche sul set di test (istanze non viste).
È fondamentale suddividere il set di addestramento in modo casuale. 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 fornisce una funzione semplice per suddividere casualmente il set:
Ad esempio, per suddividere il set di addestramento in 70% addestramento/30% test, puoi 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 e si adatta 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 riesce nemmeno ad adattarsi bene ai dati di addestramento. In questi casi, anche le previsioni delle istanze non viste risultano errate.
È possibile cercare di capire se il modello presenta underfitting o overfitting anche visivamente.
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
Vogliamo sapere come il modello si comporterà su istanze mai viste. Per questo, abbiamo bisogno di istanze non viste con i veri valori target. E abbiamo i veri valori target solo nel set di addestramento. Il metodo corretto consiste nel suddividere il set di addestramento in due insiemi: un set di addestramento e un set di test.
Ora possiamo costruire il modello utilizzando il set di addestramento, calcolare le metriche sul set di addestramento (istanze viste) e poi calcolare le metriche sul set di test (istanze non viste).
È fondamentale suddividere il set di addestramento in modo casuale. 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 fornisce una funzione semplice per suddividere casualmente il set:
Ad esempio, per suddividere il set di addestramento in 70% addestramento/30% test, puoi 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!