optuna.samplers

samplers モジュールでは、BaseSampler クラスで詳細に説明されているパラメータサンプリングの基本クラスを定義しています。このモジュールに含まれるその他のクラスは、BaseSampler を継承したサブクラスであり、それぞれ異なるサンプリング戦略を実装しています。

See also

効率的な最適化アルゴリズム チュートリアルでは、サンプラークラスの概要について解説しています。

See also

独自のサンプラークラスを実装したい場合には、ユーザー定義サンプラー チュートリアルが参考になります。

See also

どのサンプラーを使用するべきか判断に迷う場合は、AutoSampler の使用をご検討ください。AutoSampler は最適化処理中に自動的に適切なサンプラーを選択します。より詳細な情報については、AutoSampler に関する記事 をご覧ください。

RandomSampler

GridSampler

TPESampler

CmaEsSampler

NSGAIISampler

QMCSampler

GPSampler

BoTorchSampler

BruteForceSampler

浮動小数点数パラメータ

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\blacktriangle\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\) (\(\color{red}\times\) for infinite domain)

整数パラメータ

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\blacktriangle\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\blacktriangle\)

\(\color{green}\checkmark\)

カテゴリカルパラメータ

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\blacktriangle\)

\(\color{green}\checkmark\)

\(\blacktriangle\)

\(\color{green}\checkmark\)

\(\blacktriangle\)

\(\color{green}\checkmark\)

プルーニング処理

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\blacktriangle\)

\(\color{red}\times\) (\(\blacktriangle\) for single-objective)

\(\color{green}\checkmark\)

\(\blacktriangle\)

\(\blacktriangle\)

\(\color{green}\checkmark\)

多変量最適化

\(\blacktriangle\)

\(\blacktriangle\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\blacktriangle\)

\(\blacktriangle\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\blacktriangle\)

条件付き探索空間

\(\color{green}\checkmark\)

\(\blacktriangle\)

\(\color{green}\checkmark\)

\(\blacktriangle\)

\(\blacktriangle\)

\(\blacktriangle\)

\(\blacktriangle\)

\(\blacktriangle\)

\(\color{green}\checkmark\)

多目的最適化

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{red}\times\)

\(\color{green}\checkmark\) (\(\blacktriangle\) for single-objective)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

バッチ最適化

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\blacktriangle\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

分散最適化

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\blacktriangle\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

制約付き最適化

\(\color{red}\times\)

\(\color{red}\times\)

\(\color{green}\checkmark\)

\(\color{red}\times\)

\(\color{green}\checkmark\)

\(\color{red}\times\)

\(\color{green}\checkmark\)

\(\color{green}\checkmark\)

\(\color{red}\times\)

時間計算量 (1試行あたり) (*)

\(O(d)\)

\(O(dn)\)

\(O(dn \log n)\)

\(O(d^3)\)

\(O(mp^2)\) (***)

\(O(dn)\)

\(O(n^3)\)

\(O(n^3)\)

\(O(d)\)

推奨予算 (試行回数) (**)

as many as one likes

number of combinations

100 – 1000

1000 – 10000

100 – 10000

as many as one likes

– 500

10 – 100

number of combinations

Note

\(\color{green}\checkmark\): この機能をサポートしています。 \(\blacktriangle\): 動作しますが、効率が悪いです。 \(\color{red}\times\): エラーが発生するか、インターフェースが存在しません。

(*): \(d\) は探索空間の次元、\(n\) は完了したトライアル数、\(m\) は目的数、\(p\) は集団サイズ(アルゴリズム固有のパラメータ)を表します。 この表はサンプリングアルゴリズムの時間計算量を示しています。実装に依存する項(サンプリングメソッドの呼び出しにかかる \(O(d)\) や完了したトライアルの収集にかかる \(O(n)\) など)は省略している場合があります。 例えば、RandomSampler の実際の時間計算量は \(O(d+n+d) = O(d+n)\) となります。 別の見方として、NSGAIISampler を除き、すべての時間計算量は単一目的最適化の場合のものです。

(**): (1) 予算はパラメータ数と目的数に依存します。(2) この予算には、サンプラーの引数として n_startup_trials が含まれている場合、その値も含まれます。

(***): この時間計算量は、集団サイズ \(p\) と並列化数が一定であることを前提としています。 つまり、並列化数は集団サイズ \(p\) を超えてはならないということです。

Note

サンプラーは初期化時に seed 引数を指定することで乱数生成器を初期化します。 ただし、optuna.study.Study.optimize()n_jobs!=1 の場合、同じ生成器を使用して重複したパラメータをサンプリングしないように、サンプラーは乱数生成器を再シードします。 このため、n_jobs!=1 では最適化結果を再現することが困難です。 同じ理由から、分散最適化の説明(並列化の容易さ チュートリアル)で述べたように、seed=None を使用するか、プロセス間で異なる seed 値を使用するようにしてください。

Note

浮動小数点数、整数、カテゴリカルパラメータについては、Pythonic な探索空間 チュートリアルを参照してください。

プルーニングについては、効率的な最適化アルゴリズム チュートリアルを参照してください。

多変量最適化については、BaseSampler を参照してください。多変量最適化は Optuna では sample_relative() として実装されています。サンプラーの詳細については、各サンプラーのドキュメントを参照してください。

条件付き探索空間については、Pythonic な探索空間 チュートリアルと TPESampler を参照してください。TPESamplergroup オプションにより、TPESampler は条件付き探索空間を扱うことができます。

多目的最適化については、Optuna による多目的最適化 チュートリアルを参照してください。

バッチ最適化については、バッチ最適化 チュートリアルを参照してください。TPESamplerconstant_liar オプションにより、TPESampler はバッチ最適化を扱うことができます。

分散最適化については、並列化の容易さ チュートリアルを参照してください。TPESamplerconstant_liar オプションにより、TPESampler は分散最適化を扱うことができます。

制約付き最適化については、 を参照してください。

BaseSampler

Base class for samplers.

GridSampler

Sampler using grid search.

RandomSampler

Sampler using random sampling.

TPESampler

Sampler using TPE (Tree-structured Parzen Estimator) algorithm.

CmaEsSampler

A sampler using cmaes as the backend.

GPSampler

Sampler using Gaussian process-based Bayesian optimization.

PartialFixedSampler

Sampler with partially fixed parameters.

NSGAIISampler

Multi-objective sampler using the NSGA-II algorithm.

NSGAIIISampler

Multi-objective sampler using the NSGA-III algorithm.

QMCSampler

A Quasi Monte Carlo Sampler that generates low-discrepancy sequences.

BruteForceSampler

Sampler using brute force.

Note

以下の optuna.samplers.nsgaii モジュールは、NSGAIISampler で使用される交叉操作を定義しています。