分子設計・材料設計・プロセス設計・プロセス管理において、分子記述子・実験条件・合成条件・製造条件・評価条件・プロセス条件・プロセス変数などの特徴量 x と分子・材料の物性・活性・特性や製品の品質などの目的変数 y との間で数理モデル y = f(x) を構築し、構築したモデルに x の値を入力して y の値を予測したり、y が目標値となる x の値を設計したりします。
特に y の目標値が現状のデータセットにおける y の値より遠いとき、x の外挿領域を探索する必要があります。外挿領域を探索する方法の一つが、ベイズ最適化です (もう一つは直接的逆解析です)。
ガウス過程回帰によりモデルを構築し、y の予測値だけでなく予測値の分散を考慮した獲得関数を計算し、それが大きい x の候補を探索します。ガウス過程回帰ではカーネル関数が使われており、基本的に私はこちらのカーネル関数の中から、
クロスバリデーションやトレーニングデータ・テストデータ分割による検証で、モデルの予測性能を考慮してカーネル関数を選択します。
モデルの予測性能を考慮してカーネル関数を選択することは重要です。一方で、例えばガウシアンカーネル (RBF カーネル) のように、サンプル間の距離のみに基づくカーネル関数では、x が外挿になればなるほど、カーネル関数の値が 0 に収束し、それによって y の予測値が一定の値になるため、次にどちらの外挿方向を狙えばよいか、判断が難しいときがあります。この外挿になるほど値が 0 に収束する現象は、以下の SVR の記事で紹介しており、手法は異なりますがガウス過程回帰でも同じことがいえますので、ご参照ください。
次の x の外挿領域の方向性を明確にするため、線形項を入れるときがあります。こちらのカーネル関数でところの 0, 2, 4, 6, 8, 10 番目に相当します (DotProduct() が含まれているカーネル関数です)。これを入れることで、y の予測値が一定値に収束しにくくなり、y の予測値が大きくなったり小さくなったりしやすくなるため、次にどちらの方向の外挿領域を狙えばよいか明確になりやすいです。
もちろん、線形項を入れることで y の予測値が大きくもしくは小さくなりやすくなりますが、この予測値が実験値と当たるわけではありませんのでご注意ください。また、線形項を含むカーネル関数を選択したときに、クロスバリデーション予測値やトレーニングデータ・テストデータ分割したときテストデータの予測値が、実測値と合わなくなってしまうときには、使わない方がよいでしょう。
色々なカーネル関数を用いて、それぞれのモデルの予測性能を確認しながら、次の x の外挿領域の方向を明確にしたいときには、カーネル関数に線形項を入れることも検討してみてください。
以上です。
質問やコメントなどありましたら、twitter, facebook, メールなどでご連絡いただけるとうれしいです。