但是,了解這里發生的事情以找出這些數字的來源可能會更有趣:
- 我們興趣點的目標概率:
model_proba= model.predict_proba(X_train.iloc[[row_idx]])
model_proba
# array([[0.00275887, 0.99724113]])
- 來自作為背景給出的模型的基本案例原始
X_train(注意,LightGBM類的輸出原始1):
model.predict(X_train, raw_score=True).mean()
# 2.4839751932445577
- 基本情況原始來自
SHAP(注意,它們是對稱的):
bv = explainer(X_train).base_values[0]
bv
# array([-2.48397519, 2.48397519])
- 興趣點的原始
SHAP值:
sv_0 = explainer(X_train).values[row_idx].sum(0)
sv_0
# array([-3.40619584, 3.40619584])
- Proba 從
SHAP值推斷(通過 sigmoid):
shap_proba = expit(bv sv_0)
shap_proba
# array([0.00275887, 0.99724113])
- 查看:
assert np.allclose(model_proba, shap_proba)
如果這里有什么不清楚的地方,請提出問題。
附言
Side note. Proba might be misleading if you're analyzing raw effect size of different features because sigmoid is non-linear and saturates after reaching certain threshold level.
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/445410.html
上一篇:sklearn中的決策樹:有序資料,仍然是一個嚴重的問題
下一篇:重新認識受控和非受控組件
