Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Overfitting | Scelta del Modello Migliore
Regressione Lineare con Python

bookOverfitting

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)
question-icon

In base ai punteggi MSE dei modelli, determina se sovra-adattano/sotto-adattano il set di addestramento (il dataset è lo stesso).

Model 1: Training set's MSE=0.2, Test set's MSE=0.215 .
Model 2: Training set's MSE=0.14, Test set's MSE=0.42
.
Model 3: Training set's MSE=0.5, Test set's MSE=0.47
.

Click or drag`n`drop items and fill in the blanks

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 2

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Awesome!

Completion rate improved to 5.26

bookOverfitting

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)
question-icon

In base ai punteggi MSE dei modelli, determina se sovra-adattano/sotto-adattano il set di addestramento (il dataset è lo stesso).

Model 1: Training set's MSE=0.2, Test set's MSE=0.215 .
Model 2: Training set's MSE=0.14, Test set's MSE=0.42
.
Model 3: Training set's MSE=0.5, Test set's MSE=0.47
.

Click or drag`n`drop items and fill in the blanks

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 4. Capitolo 2
some-alt