Ajuste de hiperparâmetros e avaliação honesta
- ⬜⚙️ Infraestrutura de treinamento: spot, checkpoint e a GPU ociosa(AWS ML Engineer Associate (MLA-C01))
Recomendamos completar os pré-requisitos antes de seguir, mas nada te impede de continuar.
Ajuste de hiperparâmetro é um problema de orçamento
Cada tentativa de combinação é um treinamento completo, com o custo de um treinamento completo. A pergunta prática nunca é "qual é o melhor conjunto de hiperparâmetros?", e sim "quanto estou disposto a gastar procurando, e a estratégia de busca aproveita bem esse orçamento?".
| Estratégia | Como escolhe a próxima tentativa | Quando compensa |
|---|---|---|
| Grade | Todas as combinações de uma lista fixa | Poucos parâmetros, poucos valores, e você quer cobertura exaustiva |
| Aleatória | Sorteia dentro de faixas | Muitos parâmetros — encontra bom resultado mais rápido que a grade |
| Bayesiana | Usa o resultado das anteriores para decidir a próxima | Cada tentativa é cara e o orçamento de tentativas é limitado |
| Hyperband | Corta cedo as tentativas ruins e concentra recurso nas boas | Treinos longos em que dá para julgar cedo |
A intuição que responde a maioria das questões
Busca em grade desperdiça porque testa exaustivamente parâmetros que não importam. Se um dos cinco parâmetros domina o resultado, a busca aleatória o explora em muito mais valores distintos pelo mesmo número de tentativas. E quando cada tentativa custa caro, a bayesiana ganha porque não repete região ruim — ela aprende com o que já mediu.
from sagemaker.tuner import ContinuousParameter, HyperparameterTuner, IntegerParameter
tuner = HyperparameterTuner(
estimator=est,
objective_metric_name="validation:aucpr", # a métrica da classe rara
objective_type="Maximize",
hyperparameter_ranges={
"eta": ContinuousParameter(0.01, 0.3, scaling_type="Logarithmic"),
"max_depth": IntegerParameter(3, 10),
"subsample": ContinuousParameter(0.5, 1.0),
},
strategy="Bayesian", # cada resultado informa a próxima tentativa
max_jobs=20, # o ORÇAMENTO, declarado — não um número redondo
max_parallel_jobs=2, # paralelismo alto cega a bayesiana: ela precisa
# do resultado anterior para escolher o próximo
early_stopping_type="Auto",
)
tuner.fit({"train": s3_treino, "validation": s3_validacao})
# A configuração vencedora sai da VALIDAÇÃO. O conjunto de teste é medido UMA vez,
# depois disso — usá-lo aqui destruiria a estimativa imparcial de forma irreversível.
print(tuner.best_training_job())Parada antecipada, e o que ela protege
Parar o treinamento quando a métrica de validação deixa de melhorar tem dois efeitos, e o segundo é o que a prova cobra:
- Economiza tempo e dinheiro, interrompendo o que não vai render.
- Reduz sobreajuste, porque as épocas finais de um treino longo são justamente as que memorizam o conjunto de treino.
Parada antecipada olha a VALIDAÇÃO, nunca o treino
O erro de treino tende a cair monotonicamente até o fim; usá-lo como critério nunca dispara a parada. O sinal que interessa é a validação parar de melhorar, e a paciência — quantas rodadas esperar antes de desistir — existe porque a curva de validação é ruidosa e uma piora isolada não é o fim da melhora.
Você tem orçamento para 20 tentativas de ajuste, cinco hiperparâmetros, e cada treino custa caro. Qual estratégia aproveita melhor o orçamento?
Avaliar: a métrica certa e o conjunto certo
| Erro de avaliação | Como acontece | Consequência |
|---|---|---|
| Ajustar hiperparâmetro no conjunto de teste | Usar teste para escolher a configuração | O teste deixa de ser estimativa imparcial — vira parte do treino |
| Comparar modelos com métricas diferentes | Um avaliado por AUC, outro por F1 | A comparação não significa nada |
| Validação simples em conjunto pequeno | Uma única separação | Estimativa ruidosa; a validação cruzada existe para isso |
| Separação aleatória em dado temporal | Embaralhar antes de separar | Vazamento temporal — treina no futuro, testa no passado |
A separação em três partes existe para resolver o primeiro: treino para aprender, validação para escolher configuração, teste para estimar uma única vez, no fim. Quem usa o teste durante a busca perde a estimativa imparcial e não tem como recuperá-la — só um conjunto novo restaura essa propriedade.
Uma equipe usou o conjunto de teste para escolher entre 40 configurações de hiperparâmetros e reportou a acurácia do melhor. Qual é o problema?
Por que a busca aleatória costuma superar a busca em grade quando há muitos hiperparâmetros?
Próximo passo
Modelo escolhido e avaliado com honestidade, começa o domínio 3. A primeira decisão é a que mais aparece na prova inteira: entre os quatro modos de inferência, qual serve a este tráfego.
Perguntas frequentes
❓ Busca em grade, aleatória ou bayesiana: qual usar para ajustar hiperparâmetros?
❓ Posso usar o conjunto de teste para escolher os hiperparâmetros?
❓ Parada antecipada deve olhar o erro de treino ou o de validação?
Terminou de ler?
Marcar como concluído registra o XP, mantém sua sequência e coloca 3 cartas deste módulo na fila de revisão espaçada.
Próximos passos sugeridos
Temas deste módulo
Discussão
Carregando comentários…