天天看點

使用shap解釋預測結果

explainer.excepted_value

預測結果的預期,有時候是一批資料預測結果的均值??

分标簽,如果是多分類,每一個類别都會有一個預期值,分析shap value時候選擇對應标簽的excepted_value

解釋預測結果時候,從這個值出發,每個特征對預測結果有一個影響,最終決定模型的輸出

這個結果應該也是 log odds, 因為它會出現負數

log odds: 對數幾率 = log p / (1-p)

假設預測為正樣本的機率為0.01,那麼對數幾率(以10為底) = log 0.01 / 0.99 = -3.9

假設預測為正樣本的機率為0.99,那麼對數幾率(以10為底) = log 99 = 1.9

shap_values

shape=(n_labels, n_rows, n_cols)

包含的資訊是對每個标簽,每一行,每個特征都有一個值

實際上我們分析時候,會單獨看每一個标簽的預測分析,二分類的就取label為1的shap value,也就是shap_values[1]

單獨分析每一行的時候就是 shap_values[1].iloc[index]

以計算一條記錄其中一個特征特征shap_values為例,說明計算過程:

把樣本特征轉換成數字

随意生成n個随機數作為mask,将原始的特征與這個mask計算得到新的n個特征

新的n個特征帶入模型預測擷取預測結果,觀察預測結果的變化與那個特征的規律得到shap_value

訓練lightgbm模型:

建構解釋器并擷取預期值:

繪制決策圖:

輸出:

使用shap解釋預測結果

decision_plot 解釋:

x軸是模型的輸出,y軸是特征名稱,線表示預測的過程

模型的輸出通常是一個機率,對這個機率取對數幾率就是模型的輸出

shap_values: 要解釋的資料的shap_values

features: 估計是用來提取列名的,可以不傳或者用feautues_names 代替

特征牽拉的幅度越大表示對預測結果的影響越大,影響分成正面影響和負面影響

找到那些對正面影響較大的特征以及其取值來解釋預測結果

還可以使用力圖來解釋預測結果:

使用shap解釋預測結果

繼續閱讀