Ajuste de Hiperparâmetros em Python
Alex Scriven
Data Scientist
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é?
O processo até agora:

Uma alternativa:

Uma metodologia básica de busca informada:
Comece amplo e aleatório e vá refinando iterativamente sua busca.
O processo é:
Você pode trocar (3) por mais buscas aleatórias antes do grid search
O ajuste do amplo ao fino tem vantagens:
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
Vamos a um exemplo com estes intervalos de hiperparâmetros:
max_depth_list entre 1 e 65min_sample_list entre 3 e 17learn_rate_list 150 valores entre 0.01 e 150Quantos 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
Vamos fazer uma busca aleatória em apenas 500 combinações.
Aqui estão os nossos escores de acurácia:

Quais modelos foram os melhores?
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 |
Vamos visualizar os valores de max_depth vs. acurácia:

min_samples_leaf melhor abaixo de 8

learn_rate pior acima de 1.3

O que sabemos da primeira iteração:
max_depth entre 8 e 30learn_rate menor que 1.3min_samples_leaf talvez menor que 8Pró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