国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
手把手教你使用SHAP(機(jī)器學(xué)習(xí)模型解釋工具)

SHAP簡(jiǎn)介

SHAP(SHapley Additive exPlanation)是解決模型可解釋性的一種方法。SHAP基于Shapley值,該值是經(jīng)濟(jì)學(xué)家Lloyd Shapley提出的博弈論概念?!安┺摹笔侵赣卸鄠€(gè)個(gè)體,每個(gè)個(gè)體都想將自己的結(jié)果最大化的情況。該方法為通過計(jì)算在合作中個(gè)體的貢獻(xiàn)來確定該個(gè)體的重要程度。

SHAP將Shapley值解釋表示為一種加性特征歸因方法(additive feature attribution method),將模型的預(yù)測(cè)值解釋為二元變量的線性函數(shù):

其中

,M是簡(jiǎn)化輸入的特征數(shù),

假設(shè)第i個(gè)樣本為

,第i個(gè)樣本的第j個(gè)特征為
,模型對(duì)該樣本的預(yù)測(cè)值為yi,整個(gè)模型的基線(通常是所有樣本的目標(biāo)變量的均值)為
,那么SHAP value服從以下等式:

其中

SHAP值。f(xi,1)就是第i個(gè)樣本中第1個(gè)特征對(duì)最終預(yù)測(cè)值yi的貢獻(xiàn)值。每個(gè)特征的SHAP值表示以該特征為條件時(shí)預(yù)期模型預(yù)測(cè)的變化。對(duì)于每個(gè)功能,SHAP值說明了貢獻(xiàn),以說明實(shí)例的平均模型預(yù)測(cè)與實(shí)際預(yù)測(cè)之間的差異。當(dāng)f(xi,1)>0,說明該特征提升了預(yù)測(cè)值,反之,說明該特征使得貢獻(xiàn)降低。

加性特征歸因方法是滿足以下三個(gè)條件的唯一解決方案:

  • 局部精度 Local Accuracy:對(duì)特定輸入x近似原始模型 f 時(shí),局部精度要求解釋模型至少和 f 對(duì)簡(jiǎn)化的輸入x′ 輸出匹配:
    - 缺失性 Missingness:如果簡(jiǎn)化的輸入表示特征是否存在,缺失性要求輸入中缺失的特征對(duì)結(jié)果沒有影響:
    - 一致性 Consistency:一致性要求如果模型發(fā)生變化,簡(jiǎn)化輸入的貢獻(xiàn)應(yīng)當(dāng)增加或不變,與其他輸入無關(guān):

定理1來自于合作博弈論的組合結(jié)果,?i表示Shapley值。Young (1985)證明了Shapley值是唯一滿足局部精度、一致性和一個(gè)冗余屬性的值。

SHAP****優(yōu)點(diǎn):

  • 解決了多重共線性問題- 不僅考慮單個(gè)變量的影響,而且考慮變量之間的協(xié)同效應(yīng)

缺點(diǎn)

  • 計(jì)算效率低

應(yīng)用方法

(基于tensorflow和keras)

  1. 導(dǎo)入SHAP庫(kù)
import shap

如果沒有這個(gè)庫(kù),先在terminal安裝:

pip install shap
  1. 導(dǎo)入模型

以隨機(jī)森林為例:

導(dǎo)入模型的方法為:

from sklearn.externals import joblib
model = joblib.load('..(你的隨機(jī)森林模型路徑)\RF.model')
  1. 確定特征值,也就是你要分析的參數(shù)

在本文的例子中,特征參數(shù)都在x_test數(shù)組中

  1. 創(chuàng)建解釋器
explainer = shap.TreeExplainer(model) #創(chuàng)建解釋器

因?yàn)槲覀兊哪P褪请S機(jī)森林,所以采用的是針對(duì)樹的解釋器:TreeExplainer

  1. 用解釋器對(duì)特征參數(shù)進(jìn)行解釋
shap_values = explainer.shap_values(x_test) #x_test為特征參數(shù)數(shù)組 shap_value為解釋器計(jì)算的shap值
  1. 繪制單變量影響圖
shap.dependence_plot('參數(shù)名稱', 計(jì)算的SHAP數(shù)組, 特征數(shù)組, interaction_index=None,show=False)

注意:

1)”參數(shù)名稱“表示要繪制的單變量名稱

2)shap_value是第5步計(jì)算的SHAP值

3)特征數(shù)組為dataframe格式。第一行需要是特征名稱,后面是具體的特征數(shù)值。如果原始數(shù)組是numpy的array數(shù)組,需要按照以下代碼添加特征名稱:

data_with_name = pd.DataFrame(x_test) #將numpy的array數(shù)組x_test轉(zhuǎn)為dataframe格式。
data_with_name.columns = ['特征1','特征2','特征3'] #添加特征名稱

4)interaction_index 表示是否考慮交互作用,None為只考慮單因素作用,不考慮其他因素。如果不是None,會(huì)自動(dòng)搜索與該參數(shù)交互最大的參數(shù),也就是令顏色的離散程度最大的特征進(jìn)行著色,然后從圖中展示出來。

如圖所示,如果考慮交互作用,與等效滲透率交互作用最強(qiáng)的是厚度,或者說,厚度這個(gè)參數(shù)對(duì)等效滲透率的SHAP值分布影響最大。當(dāng)然,這里可以通過設(shè)置查看別的參數(shù)的交互作用。

圖中橫坐標(biāo)表示特征的取值,縱坐標(biāo)表示特征的SHAP值,也就是特征的取值對(duì)于模型的輸出會(huì)帶來的變化量。此外,對(duì)于同一個(gè)x值,也就是特征取值相同的樣本,他們的SHAP值不同,這是因?yàn)樵撎卣髋c其他特征有交互作用。

5)show=False 表示不顯示圖,如果是true,顯示的是默認(rèn)繪圖格式,也就是說坐標(biāo)的大小啊,含義啊都是默認(rèn)的。如果不滿意自帶的繪圖格式,可以show=False,然后自定義格式。這里給出一套相關(guān)自定義代碼:

fig, ax = plt.subplots()
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用來正常顯示中文標(biāo)簽
plt.rcParams['axes.unicode_minus'] = False  # 用來正常顯示負(fù)號(hào)
shap.dependence_plot('等效滲透率', shap_values, data_with_name,show=False)
plt.xticks( fontproperties='Times New Roman', size=20) #設(shè)置x坐標(biāo)字體和大小
plt.yticks(fontproperties='Times New Roman', size=20) #設(shè)置y坐標(biāo)字體和大小
plt.xlabel('Mean(average impact on model output magnitude)', fontsize=20)#設(shè)置x軸標(biāo)簽和大小
plt.tight_layout() #讓坐標(biāo)充分顯示,如果沒有這一行,坐標(biāo)可能顯示不全
plt.savefig('保存.png',dpi=1000) #可以保存圖片
  1. 重要性排序繪圖
shap.summary_plot(shap_values, x_test, plot_type='bar',show=False)

這行代碼可以繪制出參數(shù)的重要性排序。

8. 不同特征參數(shù)共同作用的效果圖

shap.initjs()  # 初始化JS
shap.force_plot(explainer.expected_value, shap_values, x_test,show=False)

這個(gè)可以體現(xiàn)出不同參數(shù)組合對(duì)模型的貢獻(xiàn)度。也就是說,可以給出模型優(yōu)化方案,

這里有很多種模式可以選擇,第一種是根據(jù)對(duì)模型的貢獻(xiàn)度進(jìn)行排序的,如圖所示:

第二種是根據(jù)參數(shù)的相似性對(duì)樣本進(jìn)行排序

第三種是按照原始的樣本排序繪圖

后面幾種繪圖方式就是根據(jù)不同的參數(shù)進(jìn)行繪圖:

解釋:這里鼠標(biāo)可以隨意指到任何位置,然后就可以看到不同的組合情況以及對(duì)模型的貢獻(xiàn)值(縱坐標(biāo)顯黑的部分)。這里的橫坐標(biāo)表示第幾個(gè)樣本,縱坐標(biāo)表示不同組合對(duì)模型的貢獻(xiàn)值。藍(lán)色表示負(fù)影響的參數(shù),紅色表示正影響的參數(shù)。這是一個(gè)參數(shù)疊加圖,紅色區(qū)域越大,說明正影響越強(qiáng),反之,藍(lán)色區(qū)域越大,說明負(fù)影響越強(qiáng)。個(gè)人認(rèn)為這個(gè)圖的好處就是能夠給出明確的對(duì)模型貢獻(xiàn)大的參數(shù)組合。

  1. 重要性排序圖(帶正負(fù)影響)

傳統(tǒng)的feature importance只告訴哪個(gè)特征重要,但我們并不清楚該特征是怎樣影響預(yù)測(cè)結(jié)果的。SHAP value最大的優(yōu)勢(shì)是SHAP能對(duì)于反映出每一個(gè)樣本中的特征的影響力,而且還表現(xiàn)出影響的正負(fù)性。

如下圖所示,這個(gè)圖也可以看出參數(shù)的重要性,但是比之前的重要性排序圖多了具體特征值的影響。以Feature5為例,該參數(shù)對(duì)模型的影響最大,當(dāng)feature5的值越小,模型的輸出越小,越大,模型的輸出越大。

本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
應(yīng)用SHAP可解釋框架對(duì)多種分類問題模型進(jìn)行解釋
【可解釋學(xué)習(xí)】利用SHAP對(duì)分子活性預(yù)測(cè)機(jī)器學(xué)習(xí)模型進(jìn)行解釋
干貨篇 | 觀遠(yuǎn)數(shù)據(jù):可解釋機(jī)器學(xué)習(xí)原理及應(yīng)用
JCIM|VenomPred2.0:一個(gè)擴(kuò)展的和可解釋的小分子毒理學(xué)分析平臺(tái)
深度學(xué)習(xí)建模預(yù)測(cè)全流程(Python)
XGB模型可解釋性SHAP包實(shí)戰(zhàn)
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長(zhǎng)圖 關(guān)注 下載文章
綁定賬號(hào)成功
后續(xù)可登錄賬號(hào)暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服