Informované hledání: Od hrubého k jemnému

Hyperparameter Tuning in Python

Alex Scriven

Data Scientist

Informované vs. neinformované hledání

 

Vše, co jsme dosud dělali, bylo neinformované hledání:

Neinformované hledání: Každá iterace ladění hyperparametrů se neučí z předchozích iterací.

To umožňuje paralelizaci práce. Není to příliš efektivní?

Hyperparameter Tuning in Python

Informované vs. neinformované

Dosavadní postup:

mapa neinformovaného procesu

Alternativní přístup:

mapa informovaného procesu

Hyperparameter Tuning in Python

Ladění od hrubého k jemnému

Základní metodologie informovaného hledání:

Začněte hrubým, náhodným přístupem a postupně zpřesňujte hledání.

Postup:

  1. Náhodné hledání
  2. Nalezení slibných oblastí
  3. Mřížkové hledání v užší oblasti
  4. Pokračovat do dosažení optimálního skóre

Krok (3) lze nahradit dalšími náhodnými hledáními před mřížkovým hledáním.

Hyperparameter Tuning in Python

Proč od hrubého k jemnému?

Ladění od hrubého k jemnému má své výhody:

  • Využívá předností mřížkového i náhodného hledání.
    • Nejprve široké prohledávání
    • Hlubší hledání po zjištění slibné oblasti
  • Efektivní využití času a výpočetních zdrojů umožňuje rychlejší iterace

Není třeba ztrácet čas prohledáváním neperspektivních oblastí!

Poznámka: Není informováno na jednom modelu, ale na dávkách

Hyperparameter Tuning in Python

Postup od hrubého k jemnému

Příklad s následujícími rozsahy hyperparametrů:

  • max_depth_list od 1 do 65
  • min_sample_list od 3 do 17
  • learn_rate_list 150 hodnot od 0,01 do 150

Kolik možných modelů máme?

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

Vizualizace od hrubého k jemnému

Provedeme náhodné hledání na 500 kombinacích.

Zde je graf hodnot přesnosti:

hustotní graf přesnosti modelů

Které modely byly nejlepší?

Hyperparameter Tuning in Python

Vizualizace od hrubého k jemnému

Nejlepší výsledky:

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

Vizualizace od hrubého k jemnému

Vizualizace hodnot max_depth vs. přesnost:

bodový graf max depth vs. přesnost

Hyperparameter Tuning in Python

Vizualizace od hrubého k jemnému

min_samples_leaf lepší pod hodnotou 8

bodový graf min samples leaf vs. přesnost

learn_rate horší nad hodnotou 1,3

bodový graf learn rate vs. přesnost

Hyperparameter Tuning in Python

Další kroky

Co víme z první iterace:

  • max_depth mezi 8 a 30
  • learn_rate menší než 1,3
  • min_samples_leaf pravděpodobně menší než 8

Co dál? Další náhodné nebo mřížkové hledání s těmito znalostmi!

Poznámka: Toto byla pouze bivariátní analýza. Lze zkoumat více hyperparametrů (3, 4 nebo více!) v jednom grafu, ale to je nad rámec tohoto kurzu.

Hyperparameter Tuning in Python

Pojďme si procvičit!

Hyperparameter Tuning in Python

Preparing Video For Download...