Metode informate: Algoritmi genetici

Ajustarea hiperparametrilor în Python

Alex Scriven

Data Scientist

O lecție despre genetică

 

În evoluția genetică din lumea reală, procesul este următorul:

  1. Există numeroase creaturi („descendenți")
  2. Creaturile cele mai puternice supraviețuiesc și se împerechează
  3. Are loc un „încrucișare" la formarea descendenților
  4. Apar mutații aleatorii la unii descendenți
    • Aceste mutații oferă uneori un avantaj unor descendenți
  5. Se revine la (1)!
Ajustarea hiperparametrilor în Python

Genetica în Machine Learning

 

Putem aplica aceeași idee la reglarea hiperparametrilor:

  1. Creăm mai multe modele (cu setări de hiperparametri)
  2. Le selectăm pe cele mai bune (conform funcției de scor)
    • Acestea sunt cele care „supraviețuiesc"
  3. Creăm modele noi similare cu cele mai bune
  4. Adăugăm aleatorie pentru a evita un optim local
  5. Repetăm până obținem rezultate satisfăcătoare!
Ajustarea hiperparametrilor în Python

De ce funcționează bine?

 

Acesta este un tip de căutare informată cu mai multe avantaje:

  • Permite învățarea din iterații anterioare, similar cu reglarea bayesiană a hiperparametrilor.
  • Are avantajul suplimentar al unui grad de aleatorie
  • (Pachetul utilizat) gestionează multe aspecte laborioase ale învățării automate
Ajustarea hiperparametrilor în Python

Introducere în TPOT

 

O bibliotecă utilă pentru reglarea genetică a hiperparametrilor este TPOT:

Considerați TPOT asistentul dumneavoastră de Data Science. TPOT este un instrument Python de Automated Machine Learning care optimizează pipeline-urile de învățare automată prin programare genetică.

Pipeline-urile includ nu doar modelul (sau mai multe modele), ci și prelucrarea caracteristicilor și alte aspecte. De asemenea, returnează codul Python al pipeline-ului!

Ajustarea hiperparametrilor în Python

Componentele TPOT

Principalele argumente ale unui clasificator TPOT sunt:

  • generations: Numărul de iterații de antrenare.
  • population_size: Numărul de modele păstrate după fiecare iterație.
  • offspring_size: Numărul de modele generate în fiecare iterație.
  • mutation_rate: Proporția pipeline-urilor la care se aplică aleatorie.
  • crossover_rate: Proporția pipeline-urilor încrucișate la fiecare iterație.
  • scoring: Funcția pentru selectarea celor mai bune modele.
  • cv: Strategia de validare încrucișată utilizată.
Ajustarea hiperparametrilor în Python

Un exemplu simplu

Un exemplu simplu:

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))

Vom păstra valorile implicite pentru mutation_rate și crossover_rate, deoarece este recomandat să nu le modificați fără cunoștințe aprofundate de programare genetică.

Observație: Nu există hiperparametri specifici algoritmului?

Ajustarea hiperparametrilor în Python

Să exersăm!

Ajustarea hiperparametrilor în Python

Preparing Video For Download...