Python機械学習Githubが8.9Kstarsに達したモデルインタープリタLIME
線形回帰、LRなどの単純なモデルは解釈が非常に簡単ですが、実際には複雑なgradient boosting treeモデルやニューラルネットワークに比べるとはるかに効果が低いです。
現在、ほとんどのインターネット企業は、グラディエントブースティングツリーやニューラルネットワークモデルなどの複雑なモデルをベースにモデリングを行っています。残念ながら、これらのモデルはうまく機能しますが、うまく解釈することが難しく、これは誰もが悩む重要な問題であり、現在、モデルの解釈について注目が集まっています。
本稿では、SHARPのアップデート版と考えることができる機械学習モデルの出力解釈手法であるLIMEを紹介する(Githubリンク)。 https://github.com/marcotcr/lime これで支持率アップ間違いなし!
LIME
LIME (Local Interpretable Model-agnostic Explanations)がサポートするモデルは以下の通り。
- 構造化モデルの解釈
- テキスト分類器の説明。
- 画像分類の説明。
機械学習モデルの説明としてLIMEが使われていますが、LIMEを使えば、なぜそのモデルがそのような予測をするのかを知ることができます。
今回は、LIMEが予測結果をどのように説明しているかを観察することに焦点を当てます。
コード
ここでは、winequality-whiteデータセットを使用し、quality<=5を0に、その他の値を1に設定しています。
# !pip install lime
import pandas as pd
from xgboost import XGBClassifier
import shap
import numpy as np
from sklearn.model_selection import train_test_split
df = pd.read_csv('. /data/winequality-white.csv',sep = ';')
df['quality'] = df['quality'].apply(lambda x: 0 if x <= 5 else 1)
df.head()
# Training set test set split
X = df.drop('quality', axis=1)
y = df['quality']
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=1)
# Model training
model = XGBClassifier(n_estimators = 100, random_state=42)
model.fit(X_train, y_train)
score = model.score(X_test, y_test)
score
XGBClassifierでのラベルエンコーダーの使用は非推奨であり、将来のリリースで削除される予定です。0.832653061224489
単一サンプルの予測解釈
下のグラフは、1つのサンプルの予測値における各特徴の寄与度を示しています。
import lime
from lime import lime_tabular
explainer = lime_tabular.LimeTabularExplainer(
training_data=np.array(X_train),
feature_names=X_train.columns,
class_names=['bad', 'good'],
mode='classification'
)
このモデルは、ワインが悪いという信頼度が84%で、ここで
alcohol
,合計の二酸化硫黄が最も重要である。
import lime
from lime import lime_tabular
explainer = lime_tabular.LimeTabularExplainer(
training_data=np.array(X_train),
feature_names=X_train.columns,
class_names=['bad', 'good'],
mode='classification'
)
このモデルでは、ワインが悪いという信頼度は59%で、このうち、アルコール、塩化物、密度、クエン酸が最も重要な予測参照となります。
exp = explainer.explain_instance(data_row=X_test.iloc[1], predict_fn=model.predict_proba)
exp.show_in_notebook(show_table=True)
該当する質問
LIMEは、機械学習モデルを結果予測でシンプルに説明するという点で、SHARPからのステップアップと考えることができます。地下で何が起こっているのか、技術者ではない人に説明するのに最適な方法を提供してくれます。データの可視化については、LIMEライブラリが処理してくれるので、心配はいりません。
参考リンク
https://www.kaggle.com/piyushagni5/white-wine-quality
LIME:Pythonで機械学習モデルを解釈する方法
https://github.com/marcotcr/lime
https://mp.weixin.qq.com/s/47omhEeHqJdQTtciLIN2Hw
以上、Githubが8.9Kstarsに達した最高のモデルインタプリタLIMEの詳細です、モデルインタプリタLIMEの詳細については、スクリプトハウスの他の関連記事に注意してください!。
関連
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
[解決済み】ImportError: PILという名前のモジュールはありません
-
Python スクリプトフレームワーク webpy テンプレート制御構造
-
[解決済み] Pandasをインポートするとエラーが発生する AttributeError: モジュール 'pandas' にはiPython Notebookの属性 'core' がない
-
[解決済み] TypeError: タプルにしか連結できない("str "ではない) Error
-
[解決済み] ライブラリ libxml2 で関数 xmlCheckVersion が見つかりませんでした。libxml2 はインストールされていますか?" というメッセージが表示されます。
-
[解決済み] ビジュアルインデントのため、継続行がアンダーインデントになっています」エラーが発生する
-
[解決済み] SystemExit: ipython内でparse_args()を呼び出すと2エラーが発生する
-
[解決済み] Biopython(Python)を使ってFASTAファイルから配列を抽出する。
-
[解決済み] Pythonで複数の図表を1つのPDFファイルに保存する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】ValueError: 新しい配列の合計サイズは変更されない必要があります。
-
[解決済み】re.subが "Expected string or bytes-like object "でエラーになる。
-
Python --- AttributeError: 'NoneType' オブジェクトに 'xxxx' という属性がない問題
-
[解決済み】Pythonで日付に日数を足す
-
[解決済み] boto3 を使って 2 つの Bucket を同期させる
-
[解決済み] 関数デコレータを作成し、それらを連鎖させるには?
-
[解決済み] Scipyのimsaveとimreadのフォーマット変更
-
[解決済み] seaborn FacetGridでフォントサイズを変更するには?
-
SyntaxErrorの理由: Pythonのループの外側の'break'
-
非対応Pickleプロトコル