SHAP解釋機(jī)器學(xué)習(xí)模型輸出
SHAP(SHapley Additive exPlanations)以一種統(tǒng)一的方法來(lái)解釋任何機(jī)器學(xué)習(xí)模型的輸出。 SHAP將博弈論與局部解釋聯(lián)系起來(lái),將以前的幾種方法結(jié)合起來(lái),并根據(jù)預(yù)期表示唯一可能的一致且局部準(zhǔn)確的加法特征歸因方法(詳見(jiàn)SHAP NIPS paper 論文)。
雖然SHAP值可以解釋任何機(jī)器學(xué)習(xí)模型的輸出,但我們已經(jīng)開(kāi)發(fā)了一種用于樹(shù)集合方法的高速精確算法(Tree SHAP arXiv paper)。 XGBoost,LightGBM,CatBoost和scikit-learn樹(shù)模型支持快速C ++實(shí)現(xiàn):
import xgboost
import shap
# load JS visualization code to notebook
shap.initjs()
# train XGBoost model
X,y = shap.datasets.boston()
model = xgboost.train({"learning_rate": 0.01}, xgboost.DMatrix(X, label=y), 100)
# explain the model's predictions using SHAP values
# (same syntax works for LightGBM, CatBoost, and scikit-learn models)
explainer = shap.TreeExplainer(model)
shap_values = explainer.shap_values(X)
# visualize the first prediction's explanation (use matplotlib=True to avoid Javascript)
shap.force_plot(explainer.expected_value, shap_values[0,:], X.iloc[0,:])
評(píng)論
圖片
表情
