0Pricing
Learn AI with Python · Lekcja

Optymalizacja bayesowska z Optuna

optuna.create_study(), suggest_float/int/categorical, przycinanie i wizualizacja.

Optymalizacja bayesowska z Optuna to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 4 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.

Coś mądrzejszego niż przeszukiwanie losowe

Przeszukiwanie siatkowe i losowe ignorują wcześniejsze wyniki. Optymalizacja bayesowska uczy się na podstawie poprzednich prób, aby proponować później bardziej obiecujące hiperparametry i znajdować dobre wartości przy mniejszej liczbie ocen.

Działanie Optuna

Optuna to popularny framework do optymalizacji hiperparametrów. Należy zdefiniować funkcję celu; Optuna inteligentnie losuje hiperparametry i zapamiętuje, co działało.

Tworzenie badania

Badanie zarządza optymalizacją. Należy ustawić direction na "maximize" dla dokładności/AUC lub na "minimize" dla funkcji straty/błędu.

import optuna

study = optuna.create_study(direction="maximize")

Funkcja celu

Funkcja celu otrzymuje obiekt trial, sugeruje hiperparametry, trenuje model i zwraca wynik, który ma być optymalizowany.

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()

Sugerowanie parametrów całkowitoliczbowych

trial.suggest_int(name, low, high) wybiera liczbę całkowitą z określonego zakresu. Można dodać step lub log=True, aby kontrolować sposób losowania.

def objective(trial):
    n_estimators = trial.suggest_int("n_estimators", 100, 1000, step=50)
    return train_and_score(n_estimators)

Sugerowanie parametrów zmiennoprzecinkowych

trial.suggest_float(name, low, high) wybiera liczbę rzeczywistą. Dla parametrów takich jak współczynnik uczenia, obejmujących wiele rzędów wielkości, należy użyć log=True.

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)

Sugerowanie parametrów kategorialnych

trial.suggest_categorical(name, choices) wybiera element z ustalonej listy, co doskonale sprawdza się w przypadku opcji takich jak typ jądra lub metoda wzmacniania.

def objective(trial):
    kernel = trial.suggest_categorical("kernel", ["linear", "rbf", "poly"])
    return train_svm(kernel)

Uruchamianie optymalizacji

study.optimize(objective, n_trials=N) uruchamia wyszukiwanie przez N prób. Większa liczba prób pozwala zbadać większą część przestrzeni, a Optuna z czasem koncentruje się na obiecujących obszarach.

study.optimize(objective, n_trials=100)

Odczytywanie najlepszego wyniku

Po zakończeniu optymalizacji study.best_params zawiera najlepsze hiperparametry, a study.best_value — najlepszy wynik funkcji celu.

print("Best params:", study.best_params)
print("Best value:", study.best_value)

best = RandomForestClassifier(**study.best_params)
best.fit(X, y)

Przycinanie nierokujących prób

Optuna może wcześnie kończyć nieudane próby za pomocą mechanizmów przycinania, oszczędzając zasoby obliczeniowe. Należy raportować wartości pośrednie i sprawdzać trial.should_prune() wewnątrz pętli trenowania.

import optuna

study = optuna.create_study(
    direction="maximize",
    pruner=optuna.pruners.MedianPruner(),
)

Dlaczego Optuna dobrze skaluje się

Optuna obsługuje równoległe próby, trwałe przechowywanie danych i wizualizację wyszukiwania. W przypadku kosztownych modeli jej oszczędna pod względem liczby próbek metoda bayesowska znajduje dobre konfiguracje przy znacznie mniejszej liczbie prób niż przeszukiwanie siatkowe lub losowe.

Szybki sprawdzian

Proszę sprawdzić swoją wiedzę na temat Optuna.

Podsumowanie

Podsumowanie: Optuna wykorzystuje optymalizację bayesowską do wydajnego dostrajania hiperparametrów. Należy utworzyć badanie z parametrem direction, napisać funkcję celu korzystającą z trial.suggest_int/float/categorical, uruchomić study.optimize(objective, n_trials=N), a następnie odczytać study.best_params i study.best_value. Mechanizmy przycinania zatrzymują słabe próby, oszczędzając zasoby obliczeniowe.

Często zadawane pytania

Czy lekcja „Optymalizacja bayesowska z Optuna” jest bezpłatna?

Tak — pełny tekst „Optymalizacja bayesowska z Optuna” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.

Co nauczysz się w „Optymalizacja bayesowska z Optuna”?

optuna.create_study(), suggest_float/int/categorical, przycinanie i wizualizacja. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.

Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?

Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 4 z 4.

Ile czasu zajmuje lekcja „Optymalizacja bayesowska z Optuna”?

Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.

Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?

Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.

Wszystkie lekcje w tym kursie

  1. Strategie walidacji krzyżowej
  2. Dogłębne omówienie metryk klasyfikacji
  3. Wyszukiwanie siatkowe i losowe
  4. Optymalizacja bayesowska z Optuna
← Powrót do Learn AI with Python