Ottimizzazione bayesiana con Optuna
optuna.create_study(), suggest_float/int/categorical, pruning e visualizzazione.
Ottimizzazione bayesiana con Optuna è una lezione Learn AI with Python gratuita su CoddyKit. Questa è la lezione 4 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento Learn AI with Python, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso Learn AI with Python include 4 lezioni in totale.
Più intelligente della ricerca casuale
La ricerca a griglia e quella casuale ignorano i risultati precedenti. L'ottimizzazione bayesiana apprende dalle prove precedenti per proporre gli iperparametri più promettenti, trovando buoni valori con meno valutazioni.
Cosa fa Optuna
Optuna è un framework molto usato per l'ottimizzazione degli iperparametri. Si definisce una funzione obiettivo; Optuna seleziona gli iperparametri in modo intelligente e conserva memoria di ciò che ha funzionato.
Creare uno study
Uno study gestisce l'ottimizzazione. Imposti direction su "maximize" per accuratezza/AUC oppure su "minimize" per loss/errore.
import optuna
study = optuna.create_study(direction="maximize")La funzione obiettivo
L'obiettivo riceve un oggetto trial, suggerisce gli iperparametri, addestra un modello e restituisce il punteggio da ottimizzare.
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()Suggerire parametri interi
trial.suggest_int(name, low, high) sceglie un intero all'interno di un intervallo. Aggiunga step o log=True per controllare il campionamento.
def objective(trial):
n_estimators = trial.suggest_int("n_estimators", 100, 1000, step=50)
return train_and_score(n_estimators)Suggerire parametri a virgola mobile
trial.suggest_float(name, low, high) sceglie un numero reale. Utilizzi log=True per parametri come il learning rate, che possono variare di diversi ordini di grandezza.
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)Suggerire parametri categorici
trial.suggest_categorical(name, choices) seleziona un valore da un elenco fisso, perfetto per opzioni come il tipo di kernel o il metodo di boosting.
def objective(trial):
kernel = trial.suggest_categorical("kernel", ["linear", "rbf", "poly"])
return train_svm(kernel)Eseguire l'ottimizzazione
study.optimize(objective, n_trials=N) esegue la ricerca per N prove. Un numero maggiore di prove esplora una porzione più ampia dello spazio; nel tempo, Optuna si concentra sulle aree promettenti.
study.optimize(objective, n_trials=100)Leggere il risultato migliore
Dopo l'ottimizzazione, study.best_params restituisce gli iperparametri migliori e study.best_value il miglior punteggio della funzione obiettivo.
print("Best params:", study.best_params)
print("Best value:", study.best_value)
best = RandomForestClassifier(**study.best_params)
best.fit(X, y)Eliminare le prove non promettenti
Optuna può interrompere in anticipo le prove scadenti con i pruner, risparmiando risorse di calcolo. Segnali i valori intermedi e controlli trial.should_prune() all'interno dei cicli di addestramento.
import optuna
study = optuna.create_study(
direction="maximize",
pruner=optuna.pruners.MedianPruner(),
)Perché Optuna è scalabile
Optuna supporta prove parallele, archiviazione persistente e visualizzazione della ricerca. Per i modelli costosi, il suo approccio bayesiano, efficiente nel campionamento, trova configurazioni efficaci con molte meno prove rispetto alla ricerca a griglia o casuale.
Verifica rapida
Verifichi le Sue conoscenze su Optuna.
Riepilogo
Riepilogo: Optuna utilizza l'ottimizzazione bayesiana per ottimizzare gli iperparametri in modo efficiente. Crei uno study con una direction, scriva un obiettivo che utilizzi trial.suggest_int/float/categorical, esegua study.optimize(objective, n_trials=N), quindi legga study.best_params e study.best_value. I pruner interrompono le prove poco promettenti per risparmiare risorse di calcolo.
Domande Frequenti
La lezione «Ottimizzazione bayesiana con Optuna» è gratuita?
Sì — il testo completo di «Ottimizzazione bayesiana con Optuna» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso Learn AI with Python, passa a CoddyKit PRO. Il corso Learn AI with Python include 4 lezioni in totale.
Cosa imparerò in «Ottimizzazione bayesiana con Optuna»?
optuna.create_study(), suggest_float/int/categorical, pruning e visualizzazione. Eserciti Learn AI with Python con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare Learn AI with Python?
Non è richiesta alcuna esperienza precedente. Learn AI with Python su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 4 di 4.
Quanto tempo richiede la lezione «Ottimizzazione bayesiana con Optuna»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione Learn AI with Python?
Sì. Ogni lezione Learn AI with Python include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Strategie di cross-validation
- Approfondimento sulle metriche di classificazione
- Grid search e random search
- Ottimizzazione bayesiana con Optuna