Informerade metoder: Genetiska algoritmer

Hyperparameterjustering i Python

Alex Scriven

Data Scientist

En lektion i genetik

 

I den biologiska evolutionen ser processen ut så här:

  1. Det finns många individer ('avkommor')
  2. De starkaste överlever och parar sig
  3. Det sker 'korsning' när de bildar avkommor
  4. Slumpmässiga mutationer uppstår hos vissa avkommor
    • Mutationerna kan ge vissa avkommor en fördel
  5. Gå tillbaka till (1)!
Hyperparameterjustering i Python

Genetik inom maskininlärning

 

Samma idé kan tillämpas på hyperparameterjustering:

  1. Vi skapar ett antal modeller (med hyperparametervärden)
  2. Vi väljer de bästa (enligt vår poängfunktion)
    • Dessa är de som 'överlever'
  3. Vi skapar nya modeller som liknar de bästa
  4. Vi lägger till slumpmässighet för att undvika lokala optima
  5. Upprepa tills vi är nöjda!
Hyperparameterjustering i Python

Varför fungerar det här bra?

 

Detta är en informerad sökning med flera fördelar:

  • Den lär sig av tidigare iterationer, precis som bayesiansk hyperparameterjustering.
  • Den har den extra fördelen av viss slumpmässighet
  • (Paketet vi använder) hanterar många tidskrävande delar av maskininlärning
Hyperparameterjustering i Python

Introduktion till TPOT

 

Ett användbart bibliotek för genetisk hyperparameterjustering är TPOT:

Se TPOT som din datavetenskapsassistent. TPOT är ett Python-verktyg för automatiserad maskininlärning som optimerar maskininlärningspipelines med genetisk programmering.

Pipelines inkluderar inte bara modellen (eller flera modeller) utan hanterar även särdrag och andra delar av processen. Dessutom returnerar verktyget Python-koden för pipelinen!

Hyperparameterjustering i Python

TPOT-komponenter

De viktigaste argumenten till en TPOT-klassificerare är:

  • generations: Antal iterationer för träning.
  • population_size: Antal modeller att behålla efter varje iteration.
  • offspring_size: Antal modeller att skapa i varje iteration.
  • mutation_rate: Andelen pipelines som slumpmässighet tillämpas på.
  • crossover_rate: Andelen pipelines som korsas varje iteration.
  • scoring: Funktionen för att avgöra vilka modeller som är bäst.
  • cv: Korsvalideringsstrategi att använda.
Hyperparameterjustering i Python

Ett enkelt exempel

Ett enkelt exempel:

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

Vi behåller standardvärdena för mutation_rate och crossover_rate – utan djupare kunskap om genetisk programmering är standardvärdena att föredra.

Observera: Inga algoritmspecifika hyperparametrar?

Hyperparameterjustering i Python

Nu kör vi en övning!

Hyperparameterjustering i Python

Preparing Video For Download...