ベイズ最適化のときカーネル関数に線形項を入れると外挿の方向を定めやすい

分子設計・材料設計・プロセス設計・プロセス管理において、分子記述子・実験条件・合成条件・製造条件・評価条件・プロセス条件・プロセス変数などの特徴量 x と分子・材料の物性・活性・特性や製品の品質などの目的変数 y との間で数理モデル y = f(x) を構築し、構築したモデルに x の値を入力して y の値を予測したり、y が目標値となる x の値を設計したりします。

特に y の目標値が現状のデータセットにおける y の値より遠いとき、x の外挿領域を探索する必要があります。外挿領域を探索する方法の一つが、ベイズ最適化です (もう一つは直接的逆解析です)。

[無料公開] 「Pythonで学ぶ実験計画法入門 ベイズ最適化によるデータ解析」 の “まえがき”、目次の詳細、第1・2章
2021 年 6 月 3 日に、金子弘昌著の「Pythonで学ぶ実験計画法入門 ベイズ最適化によるデータ解析」が出版されました。 講談社: Amazon: Amazon(Kindle): === 出版して約2年経過した 2023 年 4 月...

 

ガウス過程回帰によりモデルを構築し、y の予測値だけでなく予測値の分散を考慮した獲得関数を計算し、それが大きい x の候補を探索します。ガウス過程回帰ではカーネル関数が使われており、基本的に私はこちらのカーネル関数の中から、

[デモのプログラムあり] ガウス過程回帰(Gaussian Process Regression, GPR)におけるカーネル関数を11個の中から最適化する (scikit-learn)
こちらのガウス過程による回帰 (Gaussian Process Regression, GPR) において、カーネル関数をどうするか、というお話です。 そもそも GPR のカーネル関数はサポートベクター回帰 (Support Vector...

 

クロスバリデーションやトレーニングデータ・テストデータ分割による検証で、モデルの予測性能を考慮してカーネル関数を選択します。

モデルの予測性能を考慮してカーネル関数を選択することは重要です。一方で、例えばガウシアンカーネル (RBF カーネル) のように、サンプル間の距離のみに基づくカーネル関数では、x が外挿になればなるほど、カーネル関数の値が 0 に収束し、それによって y の予測値が一定の値になるため、次にどちらの外挿方向を狙えばよいか、判断が難しいときがあります。この外挿になるほど値が 0 に収束する現象は、以下の SVR の記事で紹介しており、手法は異なりますがガウス過程回帰でも同じことがいえますので、ご参照ください。

ガウシアンカーネルを用いた SVR ではモデルの適用範囲を考慮しなくてよいの?!
目的変数 Y と説明変数 X との間で回帰モデル Y = f(X) を構築するとき、基本的にモデルの適用範囲 (Applicability Domain, AD) を設定する必要があります。AD の詳細はこちらをご覧ください。 回帰分析手法...

 

次の x の外挿領域の方向性を明確にするため、線形項を入れるときがあります。こちらのカーネル関数でところの 0, 2, 4, 6, 8, 10 番目に相当します (DotProduct() が含まれているカーネル関数です)。これを入れることで、y の予測値が一定値に収束しにくくなり、y の予測値が大きくなったり小さくなったりしやすくなるため、次にどちらの方向の外挿領域を狙えばよいか明確になりやすいです。

もちろん、線形項を入れることで y の予測値が大きくもしくは小さくなりやすくなりますが、この予測値が実験値と当たるわけではありませんのでご注意ください。また、線形項を含むカーネル関数を選択したときに、クロスバリデーション予測値やトレーニングデータ・テストデータ分割したときテストデータの予測値が、実測値と合わなくなってしまうときには、使わない方がよいでしょう。

色々なカーネル関数を用いて、それぞれのモデルの予測性能を確認しながら、次の x の外挿領域の方向を明確にしたいときには、カーネル関数に線形項を入れることも検討してみてください。

 

以上です。

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

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