SHAP值學習筆記

模型可解釋之shap值

SHAP的名稱來源於SHapley Additive exPlanation。Shapley value起源於合作博弈論。比如說甲乙丙丁四個工人一起打工,甲和乙完成了價值100元的工件,甲、乙、丙完成了價值120元的工件,乙、丙、丁完成了價值150元的工件,甲、丁完成了價值90元的工件,那麼該如何公平、合理地分配這四個人的工錢呢?Shapley提出了一個合理的計算方法(有興趣地可以查看原論文),我們稱每個參與者分配到的數額爲Shapley value。

SHAP是由Shapley value啓發的可加性解釋模型。對於每個預測樣本,模型都產生一個預測值,SHAP value就是該樣本中每個特徵所分配到的數值。 假設第i個樣本爲xi,第i個樣本的第j個特徵爲xi,j,模型對第i個樣本的預測值爲yi,整個模型的基線(通常是所有樣本的目標變量的均值)爲ybase,那麼SHAP value服從以下等式。
\(y_{i}=y_{\text {base }}+f\left(x_{i, 1}\right)+f\left(x_{i, 2}\right)+\cdots\)
其中f(xi,1)爲xi,j的SHAP值。直觀上看,f(xi,1)就是第i個樣本中第1個特徵對最終預測值yi的貢獻值,當f(xi,1)>0,說明該特徵提升了預測值,也正向作用;反之,說明該特徵使得預測值降低,有反作用。SHAP value最大的優勢是SHAP能對於反映出每一個樣本中的特徵的影響力,而且還表現出影響的正負性

安裝

import shap

用法可以參考:https://blog.51cto.com/u_15060508/4358436

catboost中shap 用法

catboost包中可以直接使用shap,並且進行可視化,用法大同小異
具體可以參考,挺全的,但是網頁上沒法顯示圖
https://github.com/catboost/tutorials/blob/master/model_analysis/shap_values_tutorial.ipynb

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章