Iterera utan att överanpassa

Att designa maskininlärningsflöden i Python

Dr. Chris Anagnostopoulos

Honorary Associate Professor

Ett schema som visar att en maskininlärningspipeline kan finjusteras även efter att den satts i produktion.

Att designa maskininlärningsflöden i Python

I samma schema visas att mer data även kan hämtas från produktion för att hjälpa till att finjustera modellen.

Att designa maskininlärningsflöden i Python

I samma schema visas att domänexperter kan ge nya insikter som kan förändra modellen, till exempel nya förlustfunktioner.

Att designa maskininlärningsflöden i Python

I samma schema är modellen i produktion märkt som champion och den under utveckling som challenger.

Att designa maskininlärningsflöden i Python

Korsvalideringsresultat

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
...
Att designa maskininlärningsflöden i Python

Korsvalideringsresultat

   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

Observationer:

  • Träningspoängen är betydligt högre än testpoängen.
  • Standardavvikelsen för testpoängen är stor.
Att designa maskininlärningsflöden i Python

En datamängd uppdelad i tränings- och testdata, där träningsdata är ytterligare uppdelad i delar av korsvalidering.

Att designa maskininlärningsflöden i Python

En datamängd uppdelad i tränings- och valideringsdata, där träningsdata är ytterligare uppdelad i delar av korsvalidering.

Att designa maskininlärningsflöden i Python

Identifiera överanpassning

  • CV-träningspoäng >> CV-testpoäng
    • överanpassning i modellträningstadiet
    • minska klassificerarens komplexitet
    • hämta mer träningsdata
    • öka antalet CV-delningar
  • CV-testpoäng >> valideringspoäng
    • överanpassning i modeljusteringstadiet
    • minska antalet CV-delningar
    • minska parameternätets storlek

En datamängd uppdelad i tränings- och valideringsdata, där träningsdata är ytterligare uppdelad i delar av korsvalidering.

Att designa maskininlärningsflöden i Python

En datamängd uppdelad i tränings- och valideringsdata, där träningsdata är ytterligare uppdelad i delar av korsvalidering.

Att designa maskininlärningsflöden i Python

En datamängd uppdelad i tränings-, validerings- och produktionsdata, där träningsdata är ytterligare uppdelad i delar av korsvalidering.

Att designa maskininlärningsflöden i Python

"Expert på korsvalidering" i ditt CV!

Att designa maskininlärningsflöden i Python

Preparing Video For Download...