Metody informed: algorytmy genetyczne

Strojenie hiperparametrów w Pythonie

Alex Scriven

Data Scientist

Lekcja genetyki

 

W prawdziwej ewolucji genetycznej proces przebiega następująco:

  1. Istnieje wiele osobników ('potomstwo')
  2. Najsilniejsze osobniki przeżywają i dobierają się w pary
  3. Podczas tworzenia potomstwa zachodzi 'crossing-over'
  4. U części potomstwa pojawiają się losowe mutacje
    • Mutacje te czasem dają potomstwu przewagę
  5. Wróć do punktu (1)!
Strojenie hiperparametrów w Pythonie

Genetyka w uczeniu maszynowym

 

Tę samą ideę można zastosować do strojenia hiperparametrów:

  1. Tworzymy zestaw modeli (z określonymi hiperparametrami)
  2. Wybieramy najlepsze (według funkcji oceny)
    • To one 'przeżywają'
  3. Tworzymy nowe modele podobne do najlepszych
  4. Dodajemy losowość, aby uniknąć lokalnego optimum
  5. Powtarzamy aż do uzyskania satysfakcjonujących wyników!
Strojenie hiperparametrów w Pythonie

Dlaczego to działa dobrze?

 

To metoda informed search o wielu zaletach:

  • Pozwala uczyć się na poprzednich iteracjach — podobnie jak bayesowskie strojenie hiperparametrów.
  • Dodatkową zaletą jest pewien element losowości
  • (Używana przez nas biblioteka) automatyzuje wiele żmudnych aspektów uczenia maszynowego
Strojenie hiperparametrów w Pythonie

Wprowadzenie do TPOT

 

Użyteczną biblioteką do genetycznego strojenia hiperparametrów jest TPOT:

TPOT to Twój asystent Data Science. Jest to narzędzie Python do automatycznego uczenia maszynowego, które optymalizuje pipeline'y uczenia maszynowego za pomocą programowania genetycznego.

Pipeline'y obejmują nie tylko model (lub kilka modeli), ale też przetwarzanie cech i inne elementy procesu. Biblioteka zwraca również kod Pythona gotowego pipeline'u!

Strojenie hiperparametrów w Pythonie

Składniki TPOT

Kluczowe argumenty klasyfikatora TPOT:

  • generations: Liczba iteracji trenowania.
  • population_size: Liczba modeli zachowywanych po każdej iteracji.
  • offspring_size: Liczba modeli tworzonych w każdej iteracji.
  • mutation_rate: Odsetek pipeline'ów, do których stosuje się losowość.
  • crossover_rate: Odsetek pipeline'ów krzyżowanych w każdej iteracji.
  • scoring: Funkcja oceny do wyboru najlepszych modeli.
  • cv: Strategia walidacji krzyżowej.
Strojenie hiperparametrów w Pythonie

Prosty przykład

Prosty przykład:

from tpot import TPOTClassifier
tpot = TPOTClassifier(generations=3, population_size=5, 
                      verbosity=2, offspring_size=10,
                      scoring='accuracy', cv=5)

tpot.fit(X_train, y_train) print(tpot.score(X_test, y_test))

Domyślne wartości mutation_rate i crossover_rate pozostawiamy bez zmian — bez głębszej wiedzy o programowaniu genetycznym lepiej ich nie modyfikować.

Uwaga: brak hiperparametrów specyficznych dla algorytmu?

Strojenie hiperparametrów w Pythonie

Czas na ćwiczenia!

Strojenie hiperparametrów w Pythonie

Preparing Video For Download...