Iterare senza overfitting

Progettare workflow di Machine Learning in Python

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Uno schema che indica che una pipeline di machine learning può essere ulteriormente ottimizzata dopo la messa in produzione.

Progettare workflow di Machine Learning in Python

Nello stesso schema, è indicato che più dati possono essere estratti dalla produzione per migliorare l’ulteriore tuning del modello.

Progettare workflow di Machine Learning in Python

Nello stesso schema, si mostra che gli esperti di dominio possono fornire nuove intuizioni che potrebbero cambiare il modello, ad esempio nuove loss function.

Progettare workflow di Machine Learning in Python

Nello stesso schema, il modello messo in produzione è etichettato come champion e quello in sviluppo come challenger.

Progettare workflow di Machine Learning in Python

Risultati della cross-validation

grid_search = GridSearchCV(pipe, params, cv=3, return_train_score=True)
gs = grid_search.fit(X_train, y_train)
results = pd.DataFrame(gs.cv_results_)
results[['mean_train_score', 'std_train_score', 
   'mean_test_score', 'std_test_score']]
   mean_train_score  std_train_score  mean_test_score  std_test_score
0             0.829            0.006            0.735           0.009
1             0.829            0.006            0.725           0.009
2             0.961            0.008            0.716           0.019
3             0.981            0.005            0.749           0.024
...
Progettare workflow di Machine Learning in Python

Risultati della cross-validation

   mean_train_score  std_train_score  mean_test_score  std_test_score
0             0.829            0.006            0.735           0.009
1             0.829            0.006            0.725           0.009
2             0.961            0.008            0.716           0.019
3             0.981            0.005            0.749           0.024
4             0.986            0.003            0.728           0.009
5             0.995            0.002            0.751           0.008

Osservazioni:

  • Training score molto più alto del test score.
  • Deviazione standard del test score elevata.
Progettare workflow di Machine Learning in Python

Un dataset diviso in training e test, con il training ulteriormente suddiviso in blocchi dalla cross-validation.

Progettare workflow di Machine Learning in Python

Un dataset diviso in training e validation, con il training ulteriormente suddiviso in blocchi dalla cross-validation.

Progettare workflow di Machine Learning in Python

Rilevare l’overfitting

  • CV training score >> CV test score
    • overfitting nella fase di training del modello
    • riduci la complessità del classificatore
    • ottieni più dati di training
    • aumenta il numero di fold CV
  • CV test score >> validation score
    • overfitting nella fase di tuning
    • riduci il numero di fold CV
    • riduci la dimensione della griglia di parametri

Un dataset diviso in training e validation, con il training ulteriormente suddiviso in blocchi dalla cross-validation.

Progettare workflow di Machine Learning in Python

Un dataset diviso in training e validation, con il training ulteriormente suddiviso in blocchi dalla cross-validation.

Progettare workflow di Machine Learning in Python

Un dataset diviso in training, validation e dati di produzione, con il training ulteriormente suddiviso in blocchi dalla cross-validation.

Progettare workflow di Machine Learning in Python

"Esperto di CV" nel tuo CV!

Progettare workflow di Machine Learning in Python

Preparing Video For Download...