機械学習モデルを大域的・局所的に解釈する方法

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

機械学習によりモデルを構築した後に、実験系や製造・プロセスにフィードバックするため、そして分子・材料における現象の理解やメカニズムの解明を進めるため、モデルの解釈を検討することがあります。しかし、基本的に機械学習モデルはブラックボックスモデルであり、モデルの解釈は一筋縄では行きません。たとえ線形モデルであっても、その回帰係数を y に対する x の寄与度とすることは危険です。

回帰係数=寄与度とすることは危険、どうしても寄与度を求めたいときはPCRやPLSの1成分モデルで、ただ基本的には寄与度ではなく重要度で議論
タイトルで言いたいことはほとんど言っていますが、丁寧に説明します。たとえば最小二乗法による線形重回帰分析や部分的最小二乗回帰 (Partial Least Squares Regression, PLS) や Least Absolute ...

 

そこで、機械学習モデルを解釈するオススメの方法についてまとめます。

モデルの種類や解釈の方法に着目すると、大きく以下の3つに分類できます。

 

  • 非線形モデルを大域的に (グローバルに) 解釈する
  • 非線形モデルを局所的に (ローカルに) 解釈する
  • 線形モデルを解釈する

 

非線形モデルでは、ある1つの x に対して、その x の値や他の x の値によって、y に対する x の寄与が異なることを許容しているため、グローバルな解釈とローカルな解釈で分ける必要があります。一方で、線形モデルでは、x の値や他の x の値にかかわらず、y に対する x の寄与は同じと仮定しているため、グローバルな解釈とローカルな解釈では分けません。それでは順番に説明していきます。

 

 

非線形モデルをグローバルに解釈する

これは x の重要度を計算することに相当します。例えば y = x2 における y と x の関係を想像すると分かりやすいと思いますが、x の値ごとに y に対する x の寄与の正負や大きさが異なるため、寄与の正負や大きさはローカルに解釈をすることに対応し、グローバルな解釈としては x の重要度になります。

x の重要度を計算するのは、汎用性や安定性の観点から、CVPFI (Cross-Validated Permutation Feature Importance) がオススメです。

任意の回帰分析手法で変数重要度(特徴量重要度)を計算する機能をDCEKitに搭載しました![v2.10.1]~Cross-validated Permutation Feature Importance(CVPFI)~
どの回帰分析手法でも変数重要度 (特徴量重要度) を計算する機能を DCEKit に搭載しました!重要度が 0 を有意に超えるようであれば、その説明変数 x はモデルの予測精度に貢献しているといえます。しかも、x の間に相関関係があっても、...

 

サンプルが少ないときにも安定して x の重要度を計算できることが確認されており、また x 間に強い相関関係があっても、それを考慮して重要度を計算できます。

 

非線形モデルをローカルに解釈する

上で触れたように、非線形モデルは x に対する y の寄与の正負や大きさが x の値によって異なるため、寄与の方向性を含めた解釈の議論をするには、ローカルに解釈する必要があります。基本的に、分子や材料やプロセスの設計をするときに重要なことは、物質の活性や物性の値が大きくなる、もしくは小さくなるときの x の寄与の仕方です。

そこで、モデルにおける y に対する x の局所的な傾きに着目します。手法としては LOMP (Local Slope of Model Prediction) です。

非線形回帰モデルを解釈する[v2.12.1] (DCEKit)
分子設計・材料設計・プロセス設計・プロセス管理において、分子記述子・合成条件・製造条件・評価条件・プロセス条件・プロセス変数などの特徴量 x と材料の物性・活性・特性や製品の品質などの y との間で、データセットを用いて機械学習により数理モ...

 

どんな非線形モデルに対しても、任意の (仮想的な) サンプル点周りにおける y に対する x の傾きを計算できます。たとえば、既存のデータセットにおける y の値が最大のサンプルにおいて、LOMP を計算すれば、その y の最大値をさらに向上させるためには x をどちらの方向に変化させればよいか、定量的に計算できます。

もう一つのオススメの方法は、モデルを用いたシミュレーションです。たとえば x が分子構造に基づくとき、ある分子構造 A と A の構造を少し変化させた構造 A’ をそれぞれモデルに入力して、y の予測値を確認します。これらの予測値の差が、構造を A から A’ に変えた分の寄与に相当します。このように x を意図的に変化させて、y の予測値の変化を見ることで、x の空間における局所的な変化に対する y の変化を積極的に抽出します。もちろん、x が分子構造のときだけでなく、実験条件・製造条件・プロセス条件などのときでも、x のある条件を変化させる前とさせた後と間で、y の予測値の変化を見ることで、その条件を変化させたときの y の値の変化のローカルな傾向を確認できます。

 

線形モデルを解釈する

最初に述べたように、いわゆる一般的な線形モデル (OLS, PLS, リッジ回帰, LASSO, elastic net, 線形サポートベクター回帰、線形ガウス過程回帰などによるモデル) の回帰係数を、y に対する x の寄与度とすることは危険です。ただし、PLS の第一成分モデル (PLSFC) に限っては、成分が1つしかありませんので、その成分に対応する係数をローディングで x に割り振った回帰係数は、y に対する x の寄与度として値を信用できます。

真の意味で解釈でき、予測精度も高い線形モデルを開発しました![金子研論文]
タイトルを見て、線形モデルは回帰係数 (各特徴量の目的変数に対する重み) が与えられるのだから、線形モデルを解釈できるのは当たり前では??、と考えた方、非常に危険です。以下、必見です。金子研の論文が ACS Omega に掲載されましたので...

 

もちろん、1成分モデルなのでそのままでは予測精度が低いことが懸念されますが、遺伝的アルゴリズムで特徴量選択・変数選択を一緒に行うことで、1成分モデルでも予測精度の高いモデルを検討できます (GA-PLSFC, GAWLS-PLSFC, GAVDS-PLSFC, 詳細は上のリンクへ)。

しかも、遺伝的アルゴリズムで特徴量・変数を選択すると、適合度 (fitness) を工夫しても一般的にオーバーフィッティングが起こりやすいことで知られていますが、そもそも PLS の第一成分モデルという非常にシンプルなモデルであるため、そもそもオーバーフィッティングが起こりにくいメリットもあります。PLSFC モデルの回帰係数に基づいてモデルの解釈をすることで、y に対する x の寄与の方向性を含めた影響度を議論できます。

 

それぞれの説明は以上です。最後に注意点として、解釈しているのはあくまで構築された機械学習モデルです。そもそも、モデルが x と y の間の関係を適切に表現できていることが大前提です。極端なことを言えば、テストデータの r2 が 0 付近のモデルは、解釈してもまったく意味がありません。そのため、まずは 予測精度の高いモデルを構築する必要があり、それを達成して初めてそのモデルを解釈する価値が出てきます。

ぜひ、モデルの解釈を通して、データ解析・機械学習の効果を発揮していただければと思います。

 

以上です。

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

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