同じ化合物を含むデータセットにおける化合物の分子記述子の前処理方法

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

化合物データを扱う際は、分子記述子を計算して x とします。分子記述子は前処理として事前に記述子削除をすることがあります。例えば、同じ値を持つ割合の大きい記述子を削除したり、相関係数の絶対値が大きい記述子ペアの一つを削除したりします。

データセットをそのまま解析してエラーになってしまう方へ、基本的なデータの前処理方法を紹介します!
データセットを読み込んだあとに、まずやったほうがよい基本的なデータの前処理についてです。 最低限、この前処理は行いましょう! とりあえずオートスケーリング (標準化) しましょうとか、いやいやその前に情報量のない変数は消しておきましょうとか...

 

こちらのプログラミング課題

これであなたもデータサイエンティスト!?~Python入門のためのプログラミング課題と模範解答~(逐次更新)
データ化学工学研究室(金子研)では、新しく配属になった学生にいろいろなトレーニングをしています。その1つがPython言語のトレーニングです。化学構造を扱ったりデータ解析・機械学習をしたりするときに、Python言語を使うわけです。 Pyt...

における水溶解度の予測のように、サンプルとして x に該当するデータが化合物のみの場合は問題ないのですが、例えば化学反応における基質、溶媒、触媒、その他の実験条件 (反応温度など) といった複数のデータが x に含まれる時、例えば基質を見た時に他の実験条件は異なる一方で、基質は同じサンプルが存在するデータセットになります。

一般的には、例えば基質と溶媒がある時には気質と溶媒それぞれで分子記述子を計算して横につなげることになります。この時、横につなげた後の全てのデータセットに対して、上の記述子削除の前処理を行うと、データセットの中に同じ化合物がある中で、同じ値を持つサンプルの割合を計算したり、相関係数を選択したりすることになります。これは、データセット全体を見ると問題ないと思うかもしれませんが、扱っているデータが化合物であることから、化合物の情報としての数値化という観点からは、記述子の扱いとして不適切と言えます。例えば、同じ化合物が多くのサンプルにあるというだけで、同じ値を持つサンプルの割合は大きくなってしまい、そのような記述子が削除されてしまいます。

基質ごと、溶媒ごと、触媒ごと、といったように、x として別に用いる種類ごとに、重複を除いて化合物をまとめて、個別にデータセットを作成します。分子記述子を計算したら、基質データセットごと、溶媒データセットごと、触媒データセットごとに、上の前処理を行います。例えば、

 

  • 80% 同じ値をもつ記述子を削除
  • 相関係数の絶対値が99 以上の組の一つを削除

 

といった処理をします。こうすることで、前処理を行う際に、各化合物が用いられる状況を踏まえた上で、分子記述子の削除を行うことができます。

そして、それぞれ前処理を行った後に、サンプルの内容に合わせて横につなげます。

新しいサンプルを予測する時は、新しい気質、新しい溶媒、新しい触媒それぞれに対し、元のデータセットそれぞれで用いられている分子記述子のみを使用することになります。

同じ化合物を含むデータセットを解析する際の分子記述子の前処理として、ぜひご活用ください。

 

以上です。

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

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