分子設計・材料設計・プロセス設計・プロセス管理において、分子記述子・実験条件・合成条件・製造条件・評価条件・プロセス条件・プロセス変数などの特徴量 x と分子・材料の物性・活性・特性や製品の品質などの目的変数 y との間で数理モデル y = f(x) を構築し、構築したモデルに x の値を入力して y の値を予測したり、y が目標値となる x の値を設計したりします。
このモデルに望まれることは、x から y を精度よく予測すること、そしてモデルを解釈できることです。それらのための一つの方針が、x を工夫することです。y に関連する情報でこれまでの x にない情報を獲得するため、x と y の間の非線形関係を表現するため、モデルの解釈性を向上させるため、新たな x を作成することが行われます。これを特徴量エンジニアリングと呼んだりもします。
特徴量エンジニアリングは大きく分けて2つに分けることができます。手動特徴量エンジニアリングと自動特徴量エンジニアリングです。
手動特徴量エンジニアリングは、ドメイン知識に基づいて新たな特徴量を作成します。化学的・物理的な背景から、人が新たな特徴量を作り、x に追加します。ドメイン知識に基づくため、これまで考慮されていなかった y に関する情報を x で考慮できるようになったり、y との間の非線形性を考慮できるようになることで線形モデルを構築可能になったり、さまざまな特徴量を考慮したときにドメイン知識がどのように y に影響するか解釈性が上がったりすることが期待できます。
自動特徴量エンジニアリングは、特徴量の非線形変換や特徴量同士の四則演算もしくはそれらの組み合わせによって、新たな特徴量を作成することになります。例としては、二乗項や交差項です。これまでのx にまったくない y に関する情報を抽出することが難しいですが、x と y の間の非線形関係を獲得することで線形モデルを構築できるようになったり、モデルの解釈性が上がったりすることは期待できます。例えば自動特徴量エンジニアリングを実施する Python ライブラリとして以下のものがあります。
- PolynomialFeatures (scikit-learn)
- Feature-engine
- Featuretools
- OpenFE
- TPOT
- Pycarat
- AutoFeat
モデルの予測精度や解釈性の向上のための一つの方針として、ぜひ特徴量エンジニアリングを活用しましょう。
以上です。
質問やコメントなどありましたら、twitter, facebook, メールなどでご連絡いただけるとうれしいです。