材料設計・プロセス設計において、合成条件・製造条件やプロセス条件などの特徴量 x と物性・活性・特性などの目的変数 y の間で数理モデル y = f(x) を構築し、構築したモデルを用いて y が目標値となるような x の値を探索します。モデルを構築するデータセットがないときには、はじめに実験やシミュレーションによりデータセットを準備する必要があります。
まず、x ごとに値やカテゴリーの候補を決めたり、x の上限・下限を決めたりして、それに基づいて大量のサンプルをランダムに生成します。次に、実験計画法により最初に実験すべきサンプルを選択します。100万サンプルの中から 30 サンプルを選択するようなイメージです。選択された (30 個の) サンプルにおける x で実験して y を獲得することでデータセットを準備でき、モデルを構築できるようになります。なお、大量のサンプルの生成の仕方や、実験計画法によるサンプル選択の詳細については、こちらの本に記載されています。
例えば実験計画法で D 最適基準を用いるとき、30 サンプルをランダムに選択して D 最適基準の値を計算することを、何回も繰り返し、繰り返した中で D 最適基準が最も大きい値となった 30 サンプルを最終的に用います。これにより x において情報量の重複がない、数理モデルを構築しやすいサンプルを獲得できます。
x ごとにスケールが異なるため、D 最適基準を計算してサンプルを選択するにも特徴量の標準化 (オートスケーリング) を行う必要があります。オートスケーリングを行うタイミングとして、以下の二通りが考えられます。
① 大量に生成したサンプルに対して最初に一度オートスケーリングを行う
② 30サンプル選択して D 最適基準を計算する前に (その都度) オートスケーリングを行う
昔は②を採用していましたが、考えを改めまして①にしました。②のようにサンプルの選択後にオートスケーリングをしてしまうと、たまたま x の狭い範囲で選択されてしまったときに (例えば全然ばらついていなく標準偏差が 0.01 にしかならない、など)、オートスケーリングすることで標準偏差を 1に拡大してしまう恐れがあります。結果的にそれが選ばれてしまうと、x のある限られた範囲のサンプルでしか最初の実験ができなくなってしまいます。
もっとも、そもそもランダムに選択しているため可能性としては小さくあまり心配する必要はありませんが、上記の本や本に付属の Python コードにおけるオートスケーリングのやり方は ① に修正済みです。
ご参考になれば幸いです。
以上です。
質問やコメントなどありましたら、twitter, facebook, メールなどでご連絡いただけるとうれしいです。