Otimização bayesiana com Optuna
optuna.create_study(), suggest_float/int/categorical, poda e visualização.
Otimização bayesiana com Optuna é uma aula grátis de Learn AI with Python no CoddyKit. Esta é a aula 4 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de Learn AI with Python, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Learn AI with Python inclui 4 aulas no total.
Mais inteligente que a busca aleatória
A busca em grade e a busca aleatória ignoram os resultados anteriores. A otimização bayesiana aprende com as tentativas anteriores para propor hiperparâmetros mais promissores em seguida, encontrando bons valores com menos avaliações.
O que o Optuna faz
O Optuna é uma estrutura popular para otimização de hiperparâmetros. Você define uma função objetivo; o Optuna faz uma amostragem inteligente dos hiperparâmetros e memoriza o que funcionou.
Como criar um estudo
Um estudo gerencia a otimização. Defina direction como "maximize" para acurácia/AUC ou como "minimize" para perda/erro.
import optuna
study = optuna.create_study(direction="maximize")A função objetivo
A função objetivo recebe um objeto trial, sugere hiperparâmetros, treina um modelo e retorna a pontuação a ser otimizada.
from sklearn.ensemble import RandomForestClassifier
from sklearn.model_selection import cross_val_score
def objective(trial):
n = trial.suggest_int("n_estimators", 100, 500)
d = trial.suggest_int("max_depth", 3, 20)
clf = RandomForestClassifier(n_estimators=n, max_depth=d)
return cross_val_score(clf, X, y, cv=3).mean()Como sugerir parâmetros inteiros
trial.suggest_int(name, low, high) escolhe um número inteiro em um intervalo. Adicione step ou log=True para controlar a amostragem.
def objective(trial):
n_estimators = trial.suggest_int("n_estimators", 100, 1000, step=50)
return train_and_score(n_estimators)Como sugerir parâmetros de ponto flutuante
trial.suggest_float(name, low, high) escolhe um número real. Use log=True para parâmetros como a taxa de aprendizado, que abrangem várias ordens de grandeza.
def objective(trial):
lr = trial.suggest_float("learning_rate", 1e-4, 0.3, log=True)
subsample = trial.suggest_float("subsample", 0.5, 1.0)
return train_and_score(lr, subsample)Como sugerir parâmetros categóricos
trial.suggest_categorical(name, choices) seleciona uma opção de uma lista fixa, sendo perfeito para opções como o tipo de núcleo ou o método de combinação incremental.
def objective(trial):
kernel = trial.suggest_categorical("kernel", ["linear", "rbf", "poly"])
return train_svm(kernel)Como executar a otimização
study.optimize(objective, n_trials=N) executa a busca por N tentativas. Mais tentativas exploram uma parte maior do espaço; com o tempo, o Optuna se concentra nas regiões promissoras.
study.optimize(objective, n_trials=100)Como ler o melhor resultado
Após a otimização, study.best_params fornece os melhores hiperparâmetros, e study.best_value, a melhor pontuação da função objetivo.
print("Best params:", study.best_params)
print("Best value:", study.best_value)
best = RandomForestClassifier(**study.best_params)
best.fit(X, y)Como podar tentativas pouco promissoras
O Optuna pode interromper tentativas ruins antecipadamente com mecanismos de poda, economizando recursos computacionais. Informe valores intermediários e verifique trial.should_prune() dentro dos laços de treinamento.
import optuna
study = optuna.create_study(
direction="maximize",
pruner=optuna.pruners.MedianPruner(),
)Por que o Optuna é escalável
O Optuna oferece tentativas em paralelo, armazenamento persistente e visualização da busca. Para modelos caros, sua abordagem bayesiana eficiente no uso de amostras encontra configurações robustas com muito menos tentativas do que a busca em grade ou aleatória.
Verificação rápida
Teste seus conhecimentos sobre o Optuna.
Recapitulação
Recapitulação: o Optuna usa otimização bayesiana para ajustar hiperparâmetros com eficiência. Crie um estudo com uma direction, escreva uma função objetivo que use trial.suggest_int/float/categorical, execute study.optimize(objective, n_trials=N) e depois leia study.best_params e study.best_value. Os mecanismos de poda interrompem tentativas fracas para economizar recursos computacionais.
Perguntas Frequentes
A aula “Otimização bayesiana com Optuna” é grátis?
Sim — o texto completo de “Otimização bayesiana com Optuna” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de Learn AI with Python, atualize para CoddyKit PRO. O curso de Learn AI with Python inclui 4 aulas no total.
O que vou aprender em “Otimização bayesiana com Optuna”?
optuna.create_study(), suggest_float/int/categorical, poda e visualização. Você pratica Learn AI with Python com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar Learn AI with Python?
Nenhuma experiência prévia é necessária. Learn AI with Python no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 4 de 4.
Quanto tempo leva a aula “Otimização bayesiana com Optuna”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de Learn AI with Python?
Sim. Cada aula de Learn AI with Python inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Estratégias de validação cruzada
- Análise aprofundada de métricas de classificação
- Busca em grade e busca aleatória
- Otimização bayesiana com Optuna