經常利益相關者不希望有一個很好的預測黑箱模型;他們希望瞭解有關功能的深入瞭解,以便他們能夠向其他人解釋。確定爲什麼要素在決策樹模型中很重要
當我們檢查xgboost或sklearn漸變增強模型的特徵重要性時,我們可以確定特徵的重要性......但我們不明白爲什麼這些特徵很重要,是嗎?
有沒有辦法解釋不僅是什麼功能重要,而且爲什麼它們很重要?
我被告知使用shap但即使運行一些樣板實例拋出錯誤,所以我在尋找替代品(或者甚至只是一個程序性的方法來檢查樹木和蒐集的見解,我可以比plot_importance()
情節其他帶走)。
在下面的例子中,我們如何去解釋爲什麼特徵f19
是最重要的(同時也意識到決策樹是隨機的,沒有random_state或種子)。
from xgboost import XGBClassifier, plot_importance
from sklearn.datasets import make_classification
import matplotlib.pyplot as plt
X,y = make_classification(random_state=68)
xgb = XGBClassifier()
xgb.fit(X, y)
plot_importance(xgb)
plt.show()
更新: 我正在尋找的是一個綱領性訴訟證據,該模式選擇功能,上面的預測能力貢獻無論是正面還是負面的。我希望看到代碼(而不是理論)你將如何去檢查實際模型並確定每個功能的正面或負面貢獻。目前,我認爲這是不可能的,所以有人請證明我錯了。我很想做錯!
我也明白決策樹是非參數的,沒有係數。還有,有沒有辦法看到一個特徵對某個特徵的貢獻是正的(這個特徵的一個單位是增加y還是負的)(這個特徵的一個單位減少y)。
UPDATE2: 儘管大拇指朝下在這個問題上,和幾個「關閉」票,看來這個問題不是那麼瘋狂。 Partial dependence plots可能是答案。
Friedman(2001)介紹了部分相關圖(PDP),其中 解釋了複雜的機器學習算法。 解釋一個線性迴歸模型並不像解釋支持向量機,隨機森林或梯度 複雜機器模型,這是Partial Dependence Plot可以來 投入使用。對於一些統計解釋,你可以參考這裏和更多 Advance。一些算法具有用於找到變量 的重要性的方法,但它們不表示是否變量是肯定或 否定影響模型。
問一個特性對輸出變量有什麼方向是不合理的嗎?例如,假設您正在進行二元分類,並且功能f19是「重要的」。那麼假設你檢查了f19值的比例,並且看到它的預測比例很高,而不是0,那麼你可能會得出結論,它會影響正向輸出。但是讓我們假設你做了同樣的事情,並且注意到它有更高比例的0(零)。在這種情況下,它的影響是重要的,因爲它缺少什麼,而不是它可以幫助預測的。這就是我所掌握的。 – Jarad
您可以對分類預測做一個部分依賴關係圖,因此您可以針對固定的一組特徵獲得'f19'值與預測值的關係。 「無理要求」在情境特定的情況下是非常具體的,在利益相關者的情況下,我認爲你可以看到依賴情節中的一些重要特徵,但不會試圖解釋細節,或者將其作爲因果關係的證據。 – jonnybazookatone
我正在選擇你的答案,因爲它是最具有可操作性和方向性的。謝謝! – Jarad