重要度は高いと計算された特徴量が、ドメイン知識的には重要そうでないとき何が起きているのか?

分子設計・材料設計・プロセス設計において、分子記述子や合成条件・製造条件やプロセス条件などの説明変数 x と活性・物性・特性などの目的変数 y の間で数理モデル y = f(x) を構築し、x から y を予測したり、y が目標値になるような x を設計したりします。x と y の関係を解明するため、対象とする実験系のメカニズムを検討するため、x の重要度を計算することがあります。例えば、ランダムフォレストをはじめとするアンサンブル学習法では、モデル構築と一緒に x の重要度を計算できます。

ランダムフォレスト(Random Forests, RF)~アンサンブル学習で決定木の推定性能を向上!~
ランダムフォレスト(Random Forest, RF)について、pdfとパワーポイントの資料を作成しました。データセットが与えられたときに、RFで何ができるか、RFをどのように計算するかが説明されています。pdfもスライドも自由にご利用く...
[デモのプログラムあり] 勾配ブースティングGradient Boosting、特に Gradient Boosting Decision Tree (GBDT), XGBoost, LightGBM
勾配ブースティングGradient Boosting、特に Gradient Boosting Decision Tree (GBDT), XGBoost, LightGBM について、パワーポイントの資料とその pdf ファイルを作成しま...

 

x の重要度を確認したときに、ドメイン知識的にも重要な特徴量の重要度が高いと、納得感をもって解析結果を見ることができます。一方で、重要度の高い特徴量が、ドメイン知識的には重要そうでないケースもあります。もちろん、ドメイン知識的には重要ではないと考えていた特徴量が、実は重要である、と言うことは簡単です。ただ、そのように結論づける前に、検討すべきことがあります。

一番多いと思われるのは、サンプル数が小さく特徴量の数が多いため、適切に重要度を計算できていないことです。実際には重要でない特徴量でも、偶然の相関によって重要度が高く計算されてしまうことがあります。

y-randomizationで過学習(オーバーフィッティング), Chance Correlation(偶然の相関)の危険度を評価!
回帰モデル・クラス分類モデルの評価 のなかで、yランダマイゼーション (y-randomization) についてです。y-scrambling と呼んだりもします。 やることは簡単で、目的変数 y の値をサンプル間でシャッフルして、回帰モ...

 

ただ、サンプル数がいくつ以上であれば、特徴量の数がいくつ以下であれば、重要度を適切に計算できるか、といったことは分かりません。そのため、以下の記事に書いたような乱数を使用して検証するとよいでしょう。

乱数を上手く使うとモデルがオーバーフィッティングしているかどうか確認できます
説明変数 x と目的変数 y との間で数理モデル y = f(x) を構築するとき、構築されたモデルがオーバーフィッティングしているかどうか気になるときがあります。 もちろんトレーニングデータとテストデータに分割してテストデータで検証したり...

 

上の方法で、シャッフルした x の重要度より十分に重要度が高いにもかかわらず、ドメイン知識的にはその特徴量が重要そうでないとき、その x と相関の高い別の x が存在しており、実際にはそちらが重要という可能性があります。ある x が重要なときに、その x と相関の強い (相関係数の絶対値が大きい) 別の x がデータセットに存在すると、その x の重要度が高くなり、本来重要である x の重要度が低くなることがあります。そのため、重要度が大きい x と、他の x との間の相関係数を計算して、相関係数の絶対値が大きい x をチェックしてみるとよいでしょう。こちら↓のように x を整理することもオススメです。

特徴量選択の結果をこのように整理してはいかがでしょうか?[Pythonコードあり]
説明変数 x と目的変数 y の間で回帰モデルやクラス分類モデルを構築するとき、モデルの予測精度やモデルの解釈性を向上させるため、特徴量選択 (変数選択) をすることがあります。例えば 1000 個の x があるとき、特徴量選択をして 50...

 

他には、疑似相関があるケースも考えられます。例えば要因 A、要因 B、要因 C が、y の値だけでなく ある特徴量 D の値に影響を与えているとき (y ← A, B, C → D)、本来であれば要因 A、B、C が重要であるにもかかわらず、その結果得られる特徴量 D の重要度が高くなることがあります。そのため、機械学習だけで対処するのではなく、重要度の高い特徴量が何から影響を受けたかを考察する必要があります。重要度の高い x に影響を与える原因を探索するようにしましょう。

もちろん、ドメイン知識的には重要ではないと考えていた特徴量が、実は重要であった、というケースもあると思います。ただそれを考える前に、以上の検討をしたほうがよいでしょう。最後に述べたように、x と y の間の関係性を考えようとするとき、機械学習だけでなくドメイン知識が必要になることもあります。参考になれば幸いです。

 

以上です。

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

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