Wyszukiwanie świadome: od ogółu do szczegółu

Strojenie hiperparametrów w Pythonie

Alex Scriven

Data Scientist

Wyszukiwanie świadome a nieświadome

 

Dotychczas stosowane metody to wyszukiwanie nieświadome:

Wyszukiwanie nieświadome: każda iteracja strojenia hiperparametrów nie korzysta z poprzednich iteracji.

To umożliwia równoległość obliczeń – choć nie brzmi zbyt efektywnie?

Strojenie hiperparametrów w Pythonie

Wyszukiwanie świadome a nieświadome

Dotychczasowy proces:

mapa procesu wyszukiwania nieświadomego

Alternatywne podejście:

mapa procesu wyszukiwania świadomego

Strojenie hiperparametrów w Pythonie

Strojenie od ogółu do szczegółu

Podstawowa metodologia wyszukiwania świadomego:

Zacznij od przybliżonego, losowego podejścia i stopniowo zawężaj przeszukiwanie.

Proces:

  1. Losowe przeszukiwanie
  2. Identyfikacja obiecujących obszarów
  3. Przeszukiwanie siatkowe w węższym obszarze
  4. Kontynuacja aż do uzyskania optymalnego wyniku

Krok (3) można zastąpić kolejnymi losowymi przeszukiwaniami przed przeszukiwaniem siatkowym.

Strojenie hiperparametrów w Pythonie

Dlaczego od ogółu do szczegółu?

Strojenie od ogółu do szczegółu ma kilka zalet:

  • Łączy zalety przeszukiwania siatkowego i losowego.
    • Szerokie przeszukiwanie na początku
    • Głębsze przeszukiwanie gdy wiadomo, gdzie mogą być dobre wyniki
  • Efektywniejsze wykorzystanie czasu i zasobów obliczeniowych pozwala na szybsze iteracje

Nie warto tracić czasu na przestrzenie hiperparametrów, które nie dają dobrych wyników!

Uwaga: Metoda ta nie opiera się na jednym modelu, lecz na partiach modeli

Strojenie hiperparametrów w Pythonie

Realizacja podejścia od ogółu do szczegółu

Przykład z następującymi zakresami hiperparametrów:

  • max_depth_list od 1 do 65
  • min_sample_list od 3 do 17
  • learn_rate_list 150 wartości od 0,01 do 150

Ile możliwych modeli mamy?

combinations_list = [list(x) for x in product(max_depth_list, min_sample_list, learn_rate_list)]
print(len(combinations_list))
134400
Strojenie hiperparametrów w Pythonie

Wizualizacja podejścia od ogółu do szczegółu

Wykonujemy losowe przeszukiwanie na 500 kombinacjach.

Wykres wyników dokładności:

wykres gęstości dokładności modeli

Które modele były najlepsze?

Strojenie hiperparametrów w Pythonie

Wizualizacja podejścia od ogółu do szczegółu

Najlepsze wyniki:

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
Strojenie hiperparametrów w Pythonie

Wizualizacja podejścia od ogółu do szczegółu

Wizualizacja wartości max_depth względem dokładności:

wykres punktowy max depth a dokładność

Strojenie hiperparametrów w Pythonie

Wizualizacja podejścia od ogółu do szczegółu

min_samples_leaf lepszy poniżej 8

wykres punktowy min samples leaf a dokładność

learn_rate gorszy powyżej 1,3

wykres punktowy learn rate a dokładność

Strojenie hiperparametrów w Pythonie

Kolejne kroki

Wnioski z pierwszej iteracji:

  • max_depth od 8 do 30
  • learn_rate poniżej 1,3
  • min_samples_leaf prawdopodobnie poniżej 8

Co dalej? Kolejne losowe lub siatkowe przeszukiwanie z uwzględnieniem tych wniosków!

Uwaga: Była to analiza dwuwymiarowa. Można analizować wiele hiperparametrów (3, 4 lub więcej!) na jednym wykresie, lecz wykracza to poza zakres tego kursu.

Strojenie hiperparametrów w Pythonie

Czas na ćwiczenia!

Strojenie hiperparametrów w Pythonie

Preparing Video For Download...