繼續SHAP圖繪制的學習
1. SHAP特征重要性條形圖
特征重要性條形圖(Feature Importance Bar Plot)是 SHAP 提供的一種全局解釋工具,用于展示模型中各個特征對預測結果的重要性。以下是詳細解釋:
圖的含義
- 橫軸:表示特征的重要性,通常是特征的 SHAP 值的平均絕對值(`mean(|SHAP value|)`)。
? - SHAP 值的絕對值越大,說明該特征對模型預測的影響越大。
? - 通過取絕對值,可以忽略正負方向,只關注特征對預測結果的貢獻大小。
- 縱軸:表示特征名稱,按重要性從高到低排序。
? - 排在頂部的特征對模型預測的整體影響最大。
代碼實現:
# --- 1. SHAP 特征重要性條形圖 (Summary Plot - Bar) ---
print("--- 1. SHAP 特征重要性條形圖 ---")
shap.summary_plot(shap_values[:, :, 0], X_test, plot_type="bar",show=False) # 這里的show=False表示不直接顯示圖形,這樣可以繼續用plt來修改元素,不然就直接輸出了
plt.title("SHAP Feature Importance (Bar Plot)")
plt.show()
對以下部分代碼再進行理解:
shap_values[:, :, 0]
生成圖像:
2. SHAP特征重要性蜂巢圖
特征重要性蜂巢圖(Feature Importance Violin Plot)是 SHAP 提供的一種全局解釋工具,用于展示每個特征對模型預測的影響分布情況。以下是詳細介紹:
圖的含義
-
橫軸:SHAP 值,表示特征對模型預測的影響大小和方向。
- 正值:該特征對預測結果有正向影響(推動預測值增大)。
- 負值:該特征對預測結果有負向影響(推動預測值減小)。
-
縱軸:特征名稱,按重要性從高到低排序。
- 排在頂部的特征對模型預測的整體影響最大。
-
顏色:通常表示特征值的大小(如紅色表示特征值較大,藍色表示特征值較小)。
-
形狀(蜂巢/小提琴形狀):表示 SHAP 值的分布。
- 寬度:表示該特征的 SHAP 值在某個范圍內的密度(樣本數量)。
- 寬度越大,說明更多樣本的 SHAP 值集中在該范圍。
圖的作用
- 全局解釋:蜂巢圖展示了每個特征對模型預測的影響分布,幫助我們理解特征的重要性和影響方向。
- 特征與預測的關系:
- 通過顏色和 SHAP 值的分布,可以直觀地觀察特征值大小與預測結果之間的關系。
- 例如,紅色(特征值大)集中在正 SHAP 值區域,說明特征值越大,對預測結果的正向影響越大。
- 異常值檢測:如果某些特征的 SHAP 值分布異常(如極端值),可能需要進一步檢查數據或模型。
特征重要性蜂巢圖是 SHAP 的全局解釋工具,通過展示每個特征的 SHAP 值分布,幫助我們理解特征對模型預測的影響大小、方向和分布情況。它比條形圖提供了更豐富的信息,尤其適合分析特征值與預測結果之間的關系。
代碼實現:
# --- 2. SHAP 特征重要性蜂巢圖 (Summary Plot - Violin) ---
print("--- 2. SHAP 特征重要性蜂巢圖 ---")
shap.summary_plot(shap_values[:, :, 0], X_test,plot_type="violin",show=False,max_display=10) # 這里的show=False表示不直接顯示圖形,這樣可以繼續用plt來修改元素,不然就直接輸出了
plt.title("SHAP Feature Importance (Violin Plot)")
plt.show()
# 注意下上面幾個參數,plot_type可以是bar和violin,max_display表示顯示前多少個特征。
生成圖像:
今日學習到這里,明日自己練習一下SHAP圖的繪制,再進行新內容的學習。繼續加油!!!
@浙大疏錦行