分子設計・材料設計・プロセス設計において、分子記述子や合成条件・製造条件やプロセス条件などの説明変数 x と活性・物性・特性などの目的変数 y の間で数理モデル y = f(x) を構築し、x から y を予測したり、y が目標値になるような x を設計したりします。x と y の関係を解明するため、対象とする実験系のメカニズムを検討するため、x の重要度を計算することがあります。例えば、ランダムフォレストをはじめとするアンサンブル学習法では、モデル構築と一緒に x の重要度を計算できます。
x の重要度を確認したときに、ドメイン知識的にも重要な特徴量の重要度が高いと、納得感をもって解析結果を見ることができます。一方で、重要度の高い特徴量が、ドメイン知識的には重要そうでないケースもあります。もちろん、ドメイン知識的には重要ではないと考えていた特徴量が、実は重要である、と言うことは簡単です。ただ、そのように結論づける前に、検討すべきことがあります。
一番多いと思われるのは、サンプル数が小さく特徴量の数が多いため、適切に重要度を計算できていないことです。実際には重要でない特徴量でも、偶然の相関によって重要度が高く計算されてしまうことがあります。
ただ、サンプル数がいくつ以上であれば、特徴量の数がいくつ以下であれば、重要度を適切に計算できるか、といったことは分かりません。そのため、以下の記事に書いたような乱数を使用して検証するとよいでしょう。
上の方法で、シャッフルした x の重要度より十分に重要度が高いにもかかわらず、ドメイン知識的にはその特徴量が重要そうでないとき、その x と相関の高い別の x が存在しており、実際にはそちらが重要という可能性があります。ある x が重要なときに、その x と相関の強い (相関係数の絶対値が大きい) 別の x がデータセットに存在すると、その x の重要度が高くなり、本来重要である x の重要度が低くなることがあります。そのため、重要度が大きい x と、他の x との間の相関係数を計算して、相関係数の絶対値が大きい x をチェックしてみるとよいでしょう。こちら↓のように x を整理することもオススメです。
他には、疑似相関があるケースも考えられます。例えば要因 A、要因 B、要因 C が、y の値だけでなく ある特徴量 D の値に影響を与えているとき (y ← A, B, C → D)、本来であれば要因 A、B、C が重要であるにもかかわらず、その結果得られる特徴量 D の重要度が高くなることがあります。そのため、機械学習だけで対処するのではなく、重要度の高い特徴量が何から影響を受けたかを考察する必要があります。重要度の高い x に影響を与える原因を探索するようにしましょう。
もちろん、ドメイン知識的には重要ではないと考えていた特徴量が、実は重要であった、というケースもあると思います。ただそれを考える前に、以上の検討をしたほうがよいでしょう。最後に述べたように、x と y の間の関係性を考えようとするとき、機械学習だけでなくドメイン知識が必要になることもあります。参考になれば幸いです。
以上です。
質問やコメントなどありましたら、twitter, facebook, メールなどでご連絡いただけるとうれしいです。