Itereren zonder overfitting

Machine Learning-workflows ontwerpen in Python

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Een schema dat aangeeft dat een ML-pijplijn verder kan worden getuned nadat deze in productie staat.

Machine Learning-workflows ontwerpen in Python

In hetzelfde schema staat dat extra data uit productie kan worden gehaald om het model verder te tunen.

Machine Learning-workflows ontwerpen in Python

In hetzelfde schema geven domeinexperts nieuwe inzichten die het model kunnen veranderen, zoals nieuwe loss-functies.

Machine Learning-workflows ontwerpen in Python

In hetzelfde schema heet het model in productie de champion en het model in ontwikkeling de challenger.

Machine Learning-workflows ontwerpen in Python

Resultaten van cross-validatie

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
...
Machine Learning-workflows ontwerpen in Python

Resultaten van cross-validatie

   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

Observaties:

  • Trainingsscore veel hoger dan testscore.
  • Standaarddeviatie van testscore is groot.
Machine Learning-workflows ontwerpen in Python

Een dataset gesplitst in training en test, waarbij training verder in delen is gesplitst via cross-validatie.

Machine Learning-workflows ontwerpen in Python

Een dataset gesplitst in training en validatie, waarbij training verder in delen is gesplitst via cross-validatie.

Machine Learning-workflows ontwerpen in Python

Overfitting detecteren

  • CV-trainingsscore >> CV-testscore
    • overfitting bij model fitten
    • modelcomplexiteit verlagen
    • meer trainingsdata verzamelen
    • aantal folds verhogen
  • CV-testscore >> Validatiescore
    • overfitting bij modeltuning
    • aantal folds verlagen
    • parameterrooster verkleinen

Een dataset gesplitst in training en validatie, waarbij training verder in delen is gesplitst via cross-validatie.

Machine Learning-workflows ontwerpen in Python

Een dataset gesplitst in training en validatie, waarbij training verder in delen is gesplitst via cross-validatie.

Machine Learning-workflows ontwerpen in Python

Een dataset gesplitst in training, validatie en productiedata, waarbij training verder in delen is gesplitst via cross-validatie.

Machine Learning-workflows ontwerpen in Python

"Expert in CV" op je cv!

Machine Learning-workflows ontwerpen in Python

Preparing Video For Download...