非線形モデルにおける特徴量の寄与の指標を有効に活用する方法

回帰モデルでもクラス分類モデルでも、モデルを構築したらそのモデルの解釈をしたくなるものです。どの説明変数 (特徴量・記述子・パラメータ) が重要なのか、説明変数が目的変数にどのように寄与しているのか、などなどです。

たとえば説明変数の重要度でしたら、ランダムフォレストなどの 「決定木 + アンサンブル学習」 で検討することが可能です。

ランダムフォレスト(Random Forests, RF)や決定木(Decision Tree, DT)で構築したモデルを逆解析するときは気をつけよう!
回帰モデルやクラス分類モデルを構築したら、モデルの逆解析をすることがあります。逆解析では、説明変数 (記述子・特徴量・実験条件など) X の値から目的変数 (物性・活性など) y の値を推定するのではなく、逆に、y の値から X の値を推定...
[デモのプログラムあり] 勾配ブースティングGradient Boosting、特に Gradient Boosting Decision Tree (GBDT), XGBoost, LightGBM
勾配ブースティングGradient Boosting、特に Gradient Boosting Decision Tree (GBDT), XGBoost, LightGBM について、パワーポイントの資料とその pdf ファイルを作成しま...

 

重要度の閾値 (重要度がいくつ以上なら重要か) については、Boruta でやっているような乱数で生成したデータセットを使えば、検討できます。

[解析結果付き] Boruta、ランダムフォレストの変数重要度に基づく変数選択手法
Boruta という、ランダムフォレスト (Random Forest, RF) の変数重要度に基づいた変数選択手法について、パワーポイントの資料とその pdf ファイルを作成しました。いろいろなデータセットを解析しましたが、モデルの推定性...

 

ただし、それぞれの説明変数が目的変数に対して正に効いているのか、負に効いているのかはわかりません。

線形の回帰モデルであれば、(標準)回帰係数を求めることができます。(標準化された) 説明変数の値に標準回帰係数の値をかけて足せば、目的変数の値になります。しかし、標準回帰係数を各説明変数の目的変数に対する寄与と考えるのは危険です。データセットにおいて説明変数の間には共線性・多重共線性がありますので、説明変数と目的変数との間の真の関係にかかわらず、説明変数間の関係も影響する形で、基本的に目的変数の誤差が小さくなるように標準回帰係数が決められます。

また、モデルが非線形ですと、そもそも標準回帰係数を求めることができません。ただ、やはりモデルがあるとその解釈をしたくなるもので、非線形モデルにおける説明変数の目的変数に対する寄与を計算するための指標が開発されてきました。たとえば、LIME (Local Interpretable Model-agnostic Explanations) [Github], SHAP (SHapley Additive exPlanations) [Github], DeepLIFT (Deep Learning Important FeaTures) [Github], Influence Functions [Github] などです。非線形モデルが微分可能であれば、各説明変数の微分係数もその指標の一つですね。

非線形モデルの解釈をしよう!~非線形モデルを各変数で偏微分~
線形のクラス分類モデル・回帰分析モデルでは、説明変数 (記述子・特徴量) ごとに重みが求まります。実際には説明変数の間には相関関係があるためモデルの解釈は簡単ではありませんが、重みを見ることでそのモデルを解釈した気になれます。 ただ、非線形...

 

これらの指標は、いろいろな使い方ができます。しかし、非線形モデル全体の寄与ではなく、局所的な寄与を検討するとよいです。そもそもモデルが非線形なので、モデル全体で説明変数の目的変数に対する寄与が同じである必要はありません。説明変数が小さい値のときは負の寄与があり、大きい値のときには負の寄与がある、といったことも起こりうるわけです。それを (全体を平均化するなどして) 説明変数ごとに一つの寄与の値があるとするのは、意味がありません。

 

では指標の値を具体的にどう使うか?

指標の値により局所的にモデルを解釈するのがよいと思います。モデルの逆解析をするときに役立ちます。

回帰モデル・クラス分類モデルの逆解析~目標のY(物性・活性など)を達成するためのX(説明変数・記述子・特徴量・パラメータ・入力変数)とは?~
回帰モデルやクラス分類モデルが得られたあとの話です。 よくやるのは、説明変数 (記述子・特徴量・パラメータ・入力変数) X の値を回帰モデルやクラス分類モデルに入力して、目的変数 Y の値を推定することです。これをモデルの順解析とよびます。...

 

たとえば、目的変数の値がより大きくなるような材料設計をしたいとき、現状で目的変数の値が最大となるサンプルの周辺で、各説明変数の指標の値を計算します。指標の値が、正もしくは負に大きい説明変数において、それと同じ方向に値を変えることで、目的変数の値を大きくできると期待できます。モデルの逆解析でも説明変数の値の設計はできますが、各説明変数の目的変数に対する局所的な寄与を検討しても、説明変数の値を設計できます。

他には、あるサンプル周辺における各説明変数の感度を見積もりたいときにも、指標の値を利用できます。たとえばモデルの逆解析で、有望そうな説明変数の値を獲得できたとします。次に知りたいのは、その値を (少し) 変化させたときに、目的変数の値はどのように変化するかです。目的変数の値があまり変化しないのでしたら問題ありませんが、大きく変化してしまうのでしたら、もう少し感度の小さい別の候補のほうがよいかもしれません。ただ、変化の方向が設計の目標と合っていたら、説明変数の値を同じ方向に動かすことで、新たな候補を探索したほうがよいかもしれません。

以上のように、非線形モデルにおける目的変数に対する説明変数の寄与を局所的に計算することで、分子設計・材料設計などの設計問題におけるモデルの逆解析に役立ちます。

 

以上です。

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

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