Informed search: van grof naar fijn

Hyperparameter Tuning in Python

Alex Scriven

Data Scientist

Informed vs. uninformed search

 

Tot nu toe deden we uninformed search:

Uninformed search: elke iteratie van hyperparametertuning leert niet van eerdere iteraties.

Zo kunnen we paralleliseren. Maar is dit efficiënt?

Hyperparameter Tuning in Python

Informed vs. uninformed

Het proces tot nu toe:

proceskaart uninformed

Een alternatieve manier:

proceskaart informed

Hyperparameter Tuning in Python

Van grof naar fijn tunen

Een basisaanpak voor informed search:

Begin grof en willekeurig en verfijn iteratief.

De stappen:

  1. Random search
  2. Vind veelbelovende gebieden
  3. Grid search in de kleinere regio
  4. Ga door tot de optimale score is behaald

Je kunt (3) vervangen door extra random searches vóór de grid search

Hyperparameter Tuning in Python

Waarom grof-naar-fijn?

Voordelen van grof-naar-fijn tunen:

  • Benut de pluspunten van grid en random search.
    • Breed zoeken in het begin
    • Dieper zoeken zodra je weet waar het goed kan zijn
  • Beter gebruik van tijd en rekenkracht, dus sneller itereren

Geen tijd verspillen aan zoekruimtes met slechte resultaten!

Let op: Dit is informed op batches, niet op één model

Hyperparameter Tuning in Python

Aanpak: van grof naar fijn

Neem dit voorbeeld met deze hyperparameterranges:

  • max_depth_list tussen 1 en 65
  • min_sample_list tussen 3 en 17
  • learn_rate_list 150 waarden tussen 0.01 en 150

Hoeveel mogelijke modellen hebben we?

combinations_list = [list(x) for x in product(max_depth_list, min_sample_list, learn_rate_list)]
print(len(combinations_list))
134400
Hyperparameter Tuning in Python

Visualiseren: van grof naar fijn

We doen een random search op 500 combinaties.

Hier plotten we de accuraciescores:

dichtheidsplot van accuracies van modellen

Welke modellen waren goed?

Hyperparameter Tuning in Python

Visualiseren: van grof naar fijn

Topresultaten:

max_depth min_samples_leaf learn_rate accuracy
10 7 0.01 96
19 7 0.023355705 96
30 6 1.038389262 93
27 7 1.11852349 91
16 7 0.597651007 91
Hyperparameter Tuning in Python

Visualiseren: van grof naar fijn

Visualiseer max_depth versus accuracyscore:

spreidingsdiagram max depth vs accuracyscore

Hyperparameter Tuning in Python

Visualiseren: van grof naar fijn

min_samples_leaf beter onder 8

spreidingsdiagram min samples leaf vs accuracyscore

learn_rate slechter boven 1.3

spreidingsdiagram learn rate vs accuracyscore

Hyperparameter Tuning in Python

Volgende stappen

Wat we weten na iteratie één:

  • max_depth tussen 8 en 30
  • learn_rate kleiner dan 1.3
  • min_samples_leaf mogelijk kleiner dan 8

Wat nu? Nog een random of grid search met wat we weten!

Let op: Dit was alleen bivariate analyse. Je kunt ook meerdere hyperparameters (3, 4 of meer!) in één grafiek verkennen, maar dat valt buiten deze cursus.

Hyperparameter Tuning in Python

Laten we oefenen!

Hyperparameter Tuning in Python

Preparing Video For Download...