Busca informada: do amplo ao fino

Ajuste de Hiperparâmetros em Python

Alex Scriven

Data Scientist

Busca informada vs. não informada

 

Até aqui, tudo foi busca não informada:

Busca não informada: quando cada iteração de ajuste de hiperparâmetros não aprende com as anteriores.

É isso que permite paralelizar o trabalho. Mas não parece muito eficiente, né?

Ajuste de Hiperparâmetros em Python

Informada vs. não informada

O processo até agora:

mapa do processo não informado

Uma alternativa:

mapa do processo informado

Ajuste de Hiperparâmetros em Python

Ajuste do amplo ao fino

Uma metodologia básica de busca informada:

Comece amplo e aleatório e vá refinando iterativamente sua busca.

O processo é:

  1. Busca aleatória
  2. Encontrar áreas promissoras
  3. Grid search na área menor
  4. Continuar até obter a pontuação ideal

Você pode trocar (3) por mais buscas aleatórias antes do grid search

Ajuste de Hiperparâmetros em Python

Por que do amplo ao fino?

O ajuste do amplo ao fino tem vantagens:

  • Aproveita os pontos fortes de grid e busca aleatória.
    • Busca ampla no início
    • Busca mais profunda depois que você sabe onde é provável ter bons resultados
  • Melhor uso de tempo e computação permite iterar mais rápido

Sem perder tempo em espaços de busca que não rendem bons resultados!

Observação: não é informado por um único modelo, mas por lotes

Ajuste de Hiperparâmetros em Python

Realizando do amplo ao fino

Vamos a um exemplo com estes intervalos de hiperparâmetros:

  • max_depth_list entre 1 e 65
  • min_sample_list entre 3 e 17
  • learn_rate_list 150 valores entre 0.01 e 150

Quantos modelos possíveis temos?

combinations_list = [list(x) for x in product(max_depth_list, min_sample_list, learn_rate_list)]
print(len(combinations_list))
134400
Ajuste de Hiperparâmetros em Python

Visualizando do amplo ao fino

Vamos fazer uma busca aleatória em apenas 500 combinações.

Aqui estão os nossos escores de acurácia:

gráfico de densidade da acurácia dos modelos

Quais modelos foram os melhores?

Ajuste de Hiperparâmetros em Python

Visualizando do amplo ao fino

Melhores resultados:

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
Ajuste de Hiperparâmetros em Python

Visualizando do amplo ao fino

Vamos visualizar os valores de max_depth vs. acurácia:

dispersão: profundidade máxima vs. acurácia

Ajuste de Hiperparâmetros em Python

Visualizando do amplo ao fino

min_samples_leaf melhor abaixo de 8

dispersão: min samples leaf vs. acurácia

learn_rate pior acima de 1.3

dispersão: learn rate vs. acurácia

Ajuste de Hiperparâmetros em Python

Os próximos passos

O que sabemos da primeira iteração:

  • max_depth entre 8 e 30
  • learn_rate menor que 1.3
  • min_samples_leaf talvez menor que 8

Próximo passo? Outra busca aleatória ou grid search com o que sabemos!

Observação: foi apenas uma análise bivariada. Você pode explorar vários hiperparâmetros (3, 4 ou mais!) em um único gráfico, mas isso foge ao escopo deste curso.

Ajuste de Hiperparâmetros em Python

Vamos praticar!

Ajuste de Hiperparâmetros em Python

Preparing Video For Download...