LIME:局所的で解釈可能な説明
lime.tabular.LimeTabularExplainer、入力の摂動、局所線形近似について学習します。
「LIME:局所的で解釈可能な説明」はCoddyKit上の無料Learn AI with Pythonレッスンです。 これはレッスン3/4です。 下記で完全なレッスンを無料で読むことができます。その後、ブラウザ内の組み込みコードエディタと24時間対応のAIチューターでハンズオン演習できます。 これはLearn AI with Python学習パスの一部であり、ウェブとCoddyKitアプリ全体で進捗が同期されます。 Learn AI with Pythonコースには全4レッスンが含まれています。
LIMEとは
LIME(Local Interpretable Model-agnostic Explanations)は、1件の予測を説明する手法です。そのインスタンスの周辺にある小さな領域で、複雑なモデルの挙動に単純で解釈しやすいモデル(線形回帰など)を適合させます。
ローカルであり、グローバルではない
ブラックボックスモデルは全体としては非常に非線形でも、ある1点の近くではおおむね線形になります。LIMEはこの性質を利用します。モデル全体を説明するのではなく、対象となるインスタンスの周辺でのローカルな挙動だけを説明します。
LIMEの仕組み
LIMEはインスタンスに摂動を加えて近傍のサンプルを多数作成し、ブラックボックスモデルにそれらを予測させます。次に、元のインスタンスとの近さに応じてサンプルに重みを付け、解釈可能な代理モデルを適合させます。代理モデルの係数が説明になります。
モデル非依存
LIMEはモデルの予測関数を呼び出すだけなので、ニューラルネットワーク、勾配ブースティング、さらには外部APIまで、あらゆる分類器や回帰器で動作します。モデルをブラックボックスとして扱うためです。
LimeTabularExplainer
表形式データの場合は、訓練データと特徴量名からLimeTabularExplainerを構築します。訓練データの分布を使って、現実的な摂動を生成します。
from lime.lime_tabular import LimeTabularExplainer
explainer = LimeTabularExplainer(
training_data=X_train.values,
feature_names=X_train.columns.tolist(),
class_names=["denied", "approved"],
mode="classification",
)explain_instance
1行を説明するには、その行とモデルのpredict_proba関数を指定してexplain_instanceを呼び出します。LIMEはその行の周辺に摂動を加え、ローカルな代理モデルを適合させます。
exp = explainer.explain_instance(
data_row=X_test.values[0],
predict_fn=model.predict_proba,
num_features=5,
)predict_probaであり、predictではない
分類用のLIMEには、確定したラベルではなく確率が必要です。代理モデルは確率の曲面に対して回帰を行うためです。必ずmodel.predict_proba(またはクラス確率を返す任意の関数)を渡してください。
num_featuresパラメーター
num_featuresは、説明に表示する特徴量の数に上限を設定します。数を少なくすると、より単純で理解しやすくなり、ローカルな予測に最も強く影響した要因だけが強調されます。
特徴量の重みの読み方
exp.as_list()は、(特徴量の条件、重み)の組として説明を返します。正の重みは予測を予測クラスの方向に押し、負の重みは予測クラスから遠ざけます。
for feature, weight in exp.as_list():
print(feature, round(weight, 3))
# income > 50000 0.21
# debt_ratio > 0.4 -0.18説明の可視化
LIMEは、説明をインタラクティブなグラフやノートブックのビューとして表示できます。寄与を示す棒と予測確率を並べて確認できます。
exp.show_in_notebook(show_table=True)
# or
fig = exp.as_pyplot_figure()LIMEとSHAPの比較
どちらも個々の予測を説明しますが、違いがあります。
- SHAPは、加法性や一貫性などの強い理論的保証を持ち、全体的な視点も提供します
- LIMEは理解しやすく、モデル非依存で直感的ですが、ローカルな代理モデルは近似であり、摂動のランダム性によって結果が変わる可能性があります
理解度チェック
LIMEに関する知識を確認しましょう。
まとめ
LIMEを使ったローカルな説明について学びました。
- LimeTabularExplainerは訓練データと特徴量名から構築します
explain_instanceはmodel.predict_probaを使ってローカルな代理モデルを適合させます- num_featuresは説明の大きさを制御します
as_list()は符号付きの特徴量の重みを返します- LIMEはモデル非依存かつローカルな手法であり、SHAPを補完します
よくある質問
「LIME:局所的で解釈可能な説明」レッスンは無料ですか?
はい。「LIME:局所的で解釈可能な説明」の完全なテキストはこのウェブで無料で読めます。インタラクティブに演習し(組み込みコードエディタと24時間対応のAIチューター)、Learn AI with Pythonコースの残りをアンロックするには、CoddyKit PROにアップグレードしてください。 Learn AI with Pythonコースには全4レッスンが含まれています。
「LIME:局所的で解釈可能な説明」で何を学びますか?
lime.tabular.LimeTabularExplainer、入力の摂動、局所線形近似について学習します。 ブラウザで直接実行するハンズオンコードでLearn AI with Pythonを演習し、24時間対応のAIチューターがレッスンを進める中での質問に答えます。
Learn AI with Pythonを始めるのに経験は必要ですか?
事前経験は必要ありません。CoddyKitのLearn AI with Pythonは初級者から上級者向けに構成されているため、ここから始めるか最初から始めて、自分のペースで進むことができます。 これはレッスン3/4です。
「LIME:局所的で解釈可能な説明」レッスンにはどのくらい時間がかかりますか?
ほとんどのCoddyKitレッスンは約5~10分かかります。各レッスンはコンパクトでインタラクティブなので、着実に進歩し、ウェブとアプリ全体で正確に前回の場所から再開できます。
このLearn AI with Pythonレッスンでコードを書いて実行できますか?
はい。すべてのLearn AI with Pythonレッスンに組み込みコードエディタが含まれているため、ブラウザでリアルコードを書いて実行し、即座のAIフィードバックを取得できます。ローカル設定は不要です。
このコースのすべてのレッスン
- MLモデルのバイアス検知
- モデル解釈性のためのSHAP値
- LIME:局所的で解釈可能な説明
- AI倫理とガバナンスのフレームワーク