optuna.pruners.PatientPruner
- class optuna.pruners.PatientPruner(wrapped_pruner, patience, min_delta=0.0)[source]
別のプルーナーを許容値付きでラップするプルーナー
このプルーナーはトライアルの中間値を監視し、忍耐期間後の中間値の改善が閾値を下回る場合にトライアルをプルーニングします。
- プルーナーはNaN値を以下のように処理します:
忍耐期間中またはそれ以前のすべての中間値がNaNの場合、トライアルはプルーニングされません
プルーニング計算中、NaN値は無視されます。有効な数値値のみが考慮されます
使用例
import numpy as np from sklearn.datasets import load_iris from sklearn.linear_model import SGDClassifier from sklearn.model_selection import train_test_split import optuna X, y = load_iris(return_X_y=True) X_train, X_valid, y_train, y_valid = train_test_split(X, y) classes = np.unique(y) def objective(trial): alpha = trial.suggest_float("alpha", 0.0, 1.0) clf = SGDClassifier(alpha=alpha) n_train_iter = 100 for step in range(n_train_iter): clf.partial_fit(X_train, y_train, classes=classes) intermediate_value = clf.score(X_valid, y_valid) trial.report(intermediate_value, step) if trial.should_prune(): raise optuna.TrialPruned() return clf.score(X_valid, y_valid) study = optuna.create_study( direction="maximize", pruner=optuna.pruners.PatientPruner(optuna.pruners.MedianPruner(), patience=1), ) study.optimize(objective, n_trials=20)
- Parameters:
wrapped_pruner (BasePruner | None) – プルーニングを許可するトライアルに対して実際にプルーニングを実行するラップされたプルーナー。
None
の場合、このプルーナーは個々のトライアルの中間値に基づく早期停止と同等ですpatience (int) – 目的関数が改善しない連続ステップ数がpatienceに達するまでプルーニングは無効になります
min_delta (float) – 目的関数の改善を判定するための許容値。この値は非負でなければなりません
Note
v2.8.0で実験的機能として追加されました。新しいバージョンでは予告なくインターフェースが変更される可能性があります。詳細は https://github.com/optuna/optuna/releases/tag/v2.8.0 を参照してください
メソッド
prune
(study, trial)Judge whether the trial should be pruned based on the reported values.
- prune(study, trial)[source]
報告された値に基づいてトライアルをプルーニングするかどうかを判断します
このメソッドはライブラリのユーザーが直接呼び出すことを想定していません。代わりに、
optuna.trial.Trial.report()
とoptuna.trial.Trial.should_prune()
が目的関数内でプルーニング機構を実装するためのインターフェースを提供します- Parameters:
study (Study) – 対象のスタディオブジェクト
trial (FrozenTrial) – 対象のトライアルのFrozenTrialオブジェクト このオブジェクトを変更する前にコピーを取得してください
- Returns:
トライアルをプルーニングするかどうかを表すブール値
- Return type: