Métodos informados: algoritmos genéticos

Ajuste de Hiperparâmetros em Python

Alex Scriven

Data Scientist

Uma lição de genética

 

Na evolução genética no mundo real, temos o seguinte processo:

  1. Existem muitas criaturas existentes ("descendentes")
  2. As mais fortes sobrevivem e formam pares
  3. Há um "crossover" ao gerar descendentes
  4. Ocorrem mutações aleatórias em alguns descendentes
    • Às vezes, essas mutações dão vantagem a alguns descendentes
  5. Volte ao (1)!
Ajuste de Hiperparâmetros em Python

Genética em Machine Learning

 

Podemos aplicar a mesma ideia ao ajuste de hiperparâmetros:

  1. Criamos alguns modelos (com configurações de hiperparâmetros)
  2. Escolhemos os melhores (pela nossa função de pontuação)
    • São os que "sobrevivem"
  3. Criamos novos modelos semelhantes aos melhores
  4. Adicionamos aleatoriedade para evitar ótimos locais
  5. Repetimos até ficar bom!
Ajuste de Hiperparâmetros em Python

Por que funciona bem?

 

Esta é uma busca informada com várias vantagens:

  • Permite aprender com iterações anteriores, como no ajuste bayesiano de hiperparâmetros.
  • Tem a vantagem extra de alguma aleatoriedade
  • (O pacote que usaremos) cuida de muitos aspectos tediosos de Machine Learning
Ajuste de Hiperparâmetros em Python

Apresentando a TPOT

 

Uma biblioteca útil para ajuste genético de hiperparâmetros é a TPOT:

Considere a TPOT sua Assistente de Data Science. A TPOT é uma ferramenta de Machine Learning automatizado em Python que otimiza pipelines de machine learning usando programação genética.

Pipelines incluem não só o modelo (ou vários) como também tratamento de features e outras etapas. E ainda retorna o código Python do pipeline para você!

Ajuste de Hiperparâmetros em Python

Componentes do TPOT

Os principais argumentos de um classificador TPOT são:

  • generations: Quantas iterações treinar.
  • population_size: Quantos modelos manter após cada iteração.
  • offspring_size: Quantos modelos gerar em cada iteração.
  • mutation_rate: Proporção de pipelines com aleatoriedade.
  • crossover_rate: Proporção de pipelines cruzados a cada iteração.
  • scoring: Função que define os melhores modelos.
  • cv: Estratégia de validação cruzada.
Ajuste de Hiperparâmetros em Python

Um exemplo simples

Um exemplo simples:

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

Vamos manter os valores padrão de mutation_rate e crossover_rate, pois é melhor deixá-los assim sem conhecimento profundo de programação genética.

Perceba: nenhum hiperparâmetro específico do algoritmo?

Ajuste de Hiperparâmetros em Python

Vamos praticar!

Ajuste de Hiperparâmetros em Python

Preparing Video For Download...