ゼファーネットのロゴ

ゼロから:ML解釈可能性のための順列特徴の重要性

日付:

ゼロから:ML解釈可能性のための順列特徴の重要性

順列特徴の重要性を使用して、データセット内のどの特徴が予測に役立つかを発見します—Pythonで最初から実装されます。


By セス・ビリアウ、データサイエンティストおよび統計学者



による写真 アルノセノナー on Unsplash

概要

 
機械学習の高度なトピックは、ブラックボックスモデルによって支配されています。 名前が示すように、ブラックボックスモデルは複雑なモデルであり、モデル入力を組み合わせて予測を行う方法を理解するのは非常に困難です。 のような深層学習モデル 人工神経回路網 とのようなアンサンブルモデル ランダムな森、勾配ブースティング学習者、および モデルスタッキング からのさまざまなドメインで非常に正確な予測を生成するブラックボックスモデルの例です。 都市計画 〜へ コンピュータビジョン.



ブラックボックスモデルの図

 

ただし、これらのブラックボックスモデルを使用することのXNUMXつの欠点は、特に従来の統計手法では、予測子が予測にどのように影響するかを解釈することが難しい場合が多いことです。 この記事では、順列特徴の重要性と呼ばれるブラックボックスモデルを解釈する別の方法について説明します。 順列特徴の重要性は、使用しているモデルに関係なく、データセット内のどの特徴が予測力を持っているかを検出できる強力なツールです。

まず、順列特徴の重要性の必要性を動機付けるために、従来の統計的推論と特徴の重要性の違いについて説明します。 次に、順列特徴の重要性を説明し、それを最初から実装して、ブロッチビルの住宅価格を予測するためにどの予測子が重要であるかを発見します。 最後に、このアプローチのいくつかの欠点について説明し、将来の順列特徴の重要性に役立ついくつかのパッケージを紹介します。

統計的推論と特徴の重要性

 
従来のパラメトリック統計モデルを使用する場合、統計的推論に基づいて、入力が出力にどのように関連しているかについて正確なステートメントを作成できます。 たとえば、線形回帰を使用すると、予測子のXNUMX単位の変化が 線形 出力の変更。 その変化の大きさはモデルフィッティング中に推定され、確率論を使用してこれらの推定値の不確実性の尺度を提供できます。



による写真 ハビエルアレグバロス on アップスプラッシュ

 

残念ながら、ブラックボックスモデルを使用する場合、この種のステートメントを作成することはしばしば不可能です。 ディープニューラルネットワークには、おそらく数百、数千、さらには 何百万 いくつかの非線形活性化関数とともに、入力予測子を出力予測に接続するトレーニング可能な重み(ResNet-50には23万を超えるトレーニング可能なパラメーターがあります)。 この複雑なモデルを扱う場合、予測子と予測の関係を分析的にマッピングすることは非常に困難になります。

この解釈可能性の危機を和らげるのに役立つ特徴重要性手法が開発されました。 特徴重要性手法は、予測を改善する能力に基づいて、各予測子にスコアを割り当てます。 これにより、相対的な予測力に基づいてモデル内の予測子をランク付けできます。

これらの特徴重要度スコアを生成するXNUMXつの方法は、ランダム順列の力を活用することです。 次のセクションでは、Pythonを使用して順列特徴の重要性を実行する方法について説明します。

順列特徴の重要性

 
機能の重要性の背後にある考え方は単純です。 予測に役立つ入力には、貴重な情報が含まれています。 特徴値をランダムにシャッフルしてその情報を破棄すると、予測の品質が低下するはずです。 品質の低下が小さい場合、元の予測子の情報は、予測を決定する上であまり影響を与えませんでした。モデルは、それがなくてもかなり良好です。 さらに、減少が大きい場合、元の予測子の情報が予測に大きな影響を与えました。

このアイデアは、XNUMXつの簡単なステップで実装されます。 MLモデルをトレーニングし、予測の品質の測定値を記録したとします(MSE、ログ損失など)。 データセット内の各予測子について:

  1. 他の予測子の値を一定に保ちながら、予測子のデータをランダムにシャッフルします
  2. シャッフルされた値に基づいて新しい予測を生成し、新しい予測の品質を評価します
  3. 元の予測と比較した新しい予測の品質の低下を計算することにより、特徴重要度スコアを計算します

すべての特徴の特徴重要度スコアを計算したら、予測的有用性の観点からそれらをランク付けできます。 順列特徴の重要性をより具体的に説明するために、次の総合的なケーススタディを検討してください。

ケーススタディ:住宅価格の予測

 
注:コードは、最も有益な場合に含まれています。 このガイドの完全なコードに従ってください ここ.

10,000戸の住宅の価格が ブロッチビル 家の色、近隣密度スコア、近隣犯罪率スコア、近隣教育スコアのXNUMXつの要素によって決定されます。 Blotchvilleの家は赤または青のいずれかであるため、色はバイナリインジケーターとしてエンコードされます。 XNUMXつの定量的スコアは標準化されており、ほぼ正規分布しています。 家の価格 IC次のデータ生成式に従って、これらの要因から決定されます。



データ生成方程式

 

データセットには、住宅の価格とは無相関で予測力のない他のXNUMXつの予測子も含まれています。 これは、データセットの最初のXNUMX行のスナップショットです。 df.



データセットのスナップショット

 

他のXNUMXつの予測子から価格を予測するモデルをトレーニングするとします。 任意のブラックボックスモデルを使用できますが、この例のために、ランダムフォレスト回帰分析をトレーニングしましょう。 これを行うために、データをトレインとテストのデータセットに分割します。 次に、sklearnを使用して単純なランダムフォレストモデルを適合させます。

from sklearn.model_selection import train_test_split from sklearn.ensemble import RandomForestRegressorX = df.drop(columns = 'price')
# One-hot encode color for sklearn
X['color'] = (X['color'] == 'red')
y = df.price# Train Test Split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.33, random_state=42)# Instantiate a Random Forest Regressor
regr = RandomForestRegressor(max_depth=100, random_state=0)# Fit a random forest regressor
regr.fit(X_train, y_train)


この時点で、ランダムフォレストリグレッサのハイパーパラメータを調整するために少し時間を取ってください。 しかし、これはのガイドではないので ハイパーパラメータ調整、このナイーブなランダムフォレストモデルを続行します—順列特徴の重要性の有用性を説明するのに適しています。

回帰予測の品質を評価するために一般的に使用されるメトリックのXNUMXつは、 二乗平均平方根誤差(RMSE) テストセットで評価されます。 モデル予測のRMSEを計算し、次のように保存しましょう。 rmse_full_mod.

from sklearn.metrics import mean_squared_errorrmse_full_mod = mean_squared_error(regr.predict(X_test), y_test, squared = False)


これで、各予測子をシャッフルし、RMSEの増加を記録することで、順列特徴の重要性を実装できます。 これにより、どの予測子が予測を行うのに役立つかを評価できます。 これを最初から行うためのコードは次のとおりです。 このコードのコメントを以前のアルゴリズムと一致させることができるかどうかを確認してください。

# Initialize a list of results
results = []# Iterate through each predictor
for predictor in X_test: # Create a copy of X_test X_test_copy = X_test.copy() # Scramble the values of the given predictor X_test_copy[predictor] = X_test[predictor].sample(frac=1).values # Calculate the new RMSE new_rmse = mean_squared_error(regr.predict(X_test_copy), y_test, squared = False) # Append the increase in MSE to the list of results results.append({'pred': predictor, 'score': new_rmse - rmse_full_mod })# Convert to a pandas dataframe and rank the predictors by score
resultsdf = pd.DataFrame(results).sort_values(by = 'score', ascending = False)


結果のデータフレームには、順列特徴の重要度スコアが含まれます。 スコアが大きいと、RMSEが大幅に増加します。これは、予測子がシャッフルされたときにモデルのパフォーマンスが低下した証拠です。 表を調べると、XNUMXつのデータ生成予測子(教育、色、密度、犯罪)の値が比較的大きいことがわかります。これは、モデルで予測力があることを意味します。 一方、XNUMXつのダミー予測子の値は比較的小さいため、予測を行うのにそれほど有用ではありません。



順列データフレームの結果

 

matplotlibを使用して簡単に比較できるように、順列特徴の重要度スコアをグラフ化することもできます。



順列特徴重要度プロット

 

この分析から、モデルがどのように予測を行うかについての貴重な洞察を得ることができます。 教育スコアは、モデルで住宅価格を予測するときに最も価値のある情報を提供する予測子であることがわかります。 家の色、密度スコア、犯罪スコアも重要な予測因子のようです。 最後に、3つのダミー予測子にはあまり予測力がないようです。 実際、ダミーの予測子XNUMXを削除すると、実際にはRMSEが低下するため、将来の分析では、特徴選択を実行し、これらの重要でない予測子を削除することを検討できます。

順列特徴の重要性の欠点

 



による写真 マーティンエステベ on アップスプラッシュ

 

順列特徴の重要性には多くの利点がありますが、その欠点を認識することも同様に重要です(しゃれは意図されていません)。 順列特徴の重要性を使用することのいくつかの欠点は次のとおりです。

  1. 計算時間: このプロセスでは、各予測子を反復処理して予測を行う必要があるため、計算コストが高くなる可能性があります。 予測を行うのが安くない場合、または予測子が多数ある場合、これにはコストがかかる可能性があります。
  2. 多重共線性が存在する場合のパフォーマンスの低下: データセットに相関する特徴がある場合、順列特徴の重要性のパフォーマンスが低下する可能性があります。 XNUMXつの予測子の情報が相関予測子にも格納されている場合、それらの予測子のXNUMXつがシャッフルされても、モデルは引き続き良好に機能する可能性があります。
  3. スコアは相対的なものであり、絶対的なものではありません。 順列の重要度スコアは、 相対 モデル内の機能の予測力。 ただし、これらのスコアは、コンテキスト外では実際には意味のある値を持っていません。他のスコアに応じて、どのスコアも非常に良い場合と悪い場合があります。
  4. 機能の重要性はまだ統計的推論ではありません: 特徴重要性手法は、予測子がどれほど有用であるかを示すだけです。関係の性質(線形、XNUMX次など)や予測子の効果の大きさについての洞察は得られません。 順列特徴の重要性は、統計的推論に代わるものではなく、従来の推論を実行できない場合の代替ソリューションです。

まとめ

 
順列特徴の重要性は、ブラックボックスモデルを分析してMLの解釈可能性を提供するためにツールボックスに含める価値のあるツールです。 これらのツールを使用すると、予測子と予測の関係をよりよく理解し、より原理的な特徴選択を実行することもできます。

順列特徴の重要性を最初から実装しましたが、他のモデルに依存しない方法とともに、順列特徴の重要性の高度な実装を提供するパッケージがいくつかあります。 Pythonユーザーは eli5alibiscikit-learnLIMErfpimp Rユーザーが imlDALEXvip.

幸せな並べ替え! ご不明な点がございましたら、お気軽にコメントをお寄せください。できる限りお答えいたします。

謝辞:この記事を校正して編集し、オックスフォードのコンマを無視して我慢してくれた素晴らしいクレア・ホフマンに心から感謝します。 また、記事を読んで彼の提案を提供してくれたLeoSaengerにも感謝します。

 
バイオ: セス・ビリアウ ハーバード大学の統計学のデータサイエンティスト兼統計学士であり、ハーバード大学オープンデータプロジェクトの元副社長です。 メール:sethbilliau [at] College.harvard.edu

元の。 許可を得て転載。

関連する


PlatoAi。 Web3の再考。 増幅されたデータインテリジェンス。

アクセスするには、ここをクリックしてください。

出典:https://www.kdnuggets.com/2021/06/from-scratch-permutation-feature-importance-ml-interpretability.html

スポット画像

最新のインテリジェンス

スポット画像

私たちとチャット

やあ! どんな御用でしょうか?