目的変数が複数のときに実験計画法のベイズ最適化(Bayesian Optimization, BO)が対応!

実験計画法やベイズ最適化 (Bayesian Optimization, BO) についてはこちらに書いたとおりです。Python コードもあります。

実験計画法で実験パラメータの候補を選択する (直交表を作成する) プログラムを公開します
今回は、実験計画法についてです。実験計画法の概要についてはこちらをご覧ください。実験パラメータがあり、それぞれの候補の値が与えられているときに、決められた数の組み合わせを選択するプログラムを作成しましたので公開します。Python や MA...
ベイズ最適化(Bayesian Optimization, BO)~実験計画法で使ったり、ハイパーパラメータを最適化したり~
ガウス過程による回帰をうまく使って、実験計画法における新しい実験候補を探索したり、回帰モデルやクラス分類モデルのハイパーパラメータ (学習では求まらないため事前に決めるべきパラメータ) を決定する方法が、ベイズ最適化 (Bayesian O...

 

今回は実験計画法の BO について目的変数が複数のときに対応しましたので報告します。プログラムは Github https://github.com/hkaneko1985/design_of_experiments/tree/master/Python にある demo_of_bayesian_optimization_multiple_y.py です。

 

準備

demo_of_bayesian_optimization_multiple_y.py を実行するには、以下の3つのファイルを準備する必要があります。

 

  • training_data.csv: トレーニングデータの csv ファイル。左からy1, y2, … と目的変数が並び、それに続いて x1, x2, … と説明変数が並びます
  • x_for_prediction.csv: 予測用データの csv ファイル。x1, x2, … と説明変数が並びます。training_data.csv の説明変数の名前と同じ名前にしてください
  • settings.csv: 目的変数の数だけ BO の設定を記載するファイル。説明は後述します

 

こちら https://github.com/hkaneko1985/design_of_experiments/tree/master/Python にデモンストレーション用の csv ファイルが 3 つともありますので、とりあえず実行してみるとよいでしょう。

 

最大化したい目的変数もあれば、最小化したい目的変数もあれば、範囲内に入れたい目的変数もあるのだけど??

すべて対応しています。settings.csv を開いてみましょう。目的変数 y の数だけ (最初は y が 3つで y1, y2, y3)、maximization(1)_or_minimization(-1)_or_range(0), lower_limit, upper_limit があると思います。maximization(1)_or_minimization(-1)_or_range(0) の行には、y ごとに 1 or -1 or 0 を指定しましょう。意味合いは以下のとおりです。

 

  • 1: 目的変数を最大化したい
  • -1: 目的変数を最小化したい
  • 0: 目的変数をある範囲内に入れたい

 

0 のときには、範囲を lower_limit, upper_limit で指定します。1 や -1 のときには関係ありません (デモ用のファイルには、1 や -1 のときに 0 が入っていますが、どんな値でもかまいません)。

 

どんな結果が出るの??

まず目的変数ごとに、ガウス過程回帰 (Gaussian Process Regression, GPR) で回帰分析した結果が出ます。

ガウス過程回帰(Gaussian Process Regression, GPR)~予測値だけでなく予測値のばらつきも計算できる!~
ガウス過程による回帰(Gaussian Process Regression, GPR)について、pdfとパワーポイントの資料を作成しました。データセットが与えられたときに、GPRで何ができるか、GPRをどのように計算するかが説明されていま...

 

モデル構築結果・クロスバリデーション結果それぞれ、

 

  • 実測値 vs. 推定値プロット
  • r2 (決定係数)
  • RMSE (Root-Mean-Squared Error)
  • MAE (Mean Absolute Error)

 

が表示されます。

続いて、予測用データに対して予測や Probability of Improvement (PI) の計算が行われます。目的変数をある範囲内に入れたい目的変数もあることを想定して、最大化・最小化したい場合と足並みを揃えるため (同じ確率として議論できるようにするため) PI としました。

以下のファイルが出力されます。

 

  • probabilities.csv: 目的変数ごとの確率の値が入った csv ファイル
  • sum_of_log_probabilities.csv: サンプルごとに、目的変数の確率の対数値を総和した csv ファイル

 

なぜ対数値を足したかというと、もともと確率の掛け算をするのですが、値が小さくなってしまうため、それに log とって、例えば log(AB) = log(A) + log(B) のようにして、log の和にしたわけです。

最後に、確率の対数値を総和の最大値と、最大となったインデックスを表示します。これが次に実験すべき実験条件の候補といえます。

必要な方はぜひご利用くださいませ。

 

以上です。

質問やコメントなどありましたら、twitter, facebook, メールなどでご連絡いただけるとうれしいです。

タイトルとURLをコピーしました