2017-11-04 55 views
2

經常利益相關者不希望有一個很好的預測黑箱模型;他們希望瞭解有關功能的深入瞭解,以便他們能夠向其他人解釋。確定爲什麼要素在決策樹模型中很重要

當我們檢查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() 

feature_importance

更新: 我正在尋找的是一個綱領性訴訟證據,該模式選擇功能,上面的預測能力貢獻無論是正面還是負面的。我希望看到代碼(而不是理論)你將如何去檢查實際模型並確定每個功能的正面或負面貢獻。目前,我認爲這是不可能的,所以有人請證明我錯了。我很想做錯!

我也明白決策樹是非參數的,沒有係數。還有,有沒有辦法看到一個特徵對某個特徵的貢獻是正的(這個特徵的一個單位是增加y還是負的)(這個特徵的一個單位減少y)。

UPDATE2: 儘管大拇指朝下在這個問題上,和幾個「關閉」票,看來這個問題不是那麼瘋狂。 Partial dependence plots可能是答案。

Friedman(2001)介紹了部分相關圖(PDP),其中 解釋了複雜的機器學習算法。 解釋一個線性迴歸模型並不像解釋支持向量機,隨機森林或梯度 複雜機器模型,這是Partial Dependence Plot可以來 投入使用。對於一些統計解釋,你可以參考這裏和更多 Advance。一些算法具有用於找到變量 的重要性的方法,但它們不表示是否變量是肯定否定影響模型。

回答

1

tldr; http://scikit-learn.org/stable/auto_examples/ensemble/plot_partial_dependence.html


我想澄清一些措辭,以確保我們在同一頁上。

  1. 預測功率:什麼功能顯著向預測
  2. 特性依賴:是本特徵正電或負 相關,即,是否在特徵X的變化引起的預測塊y增大/減小

1.預測功率

您的功能重要性顯示您保留了大部分信息,並且是最重要的功能重要功能。權力可能意味着什麼導致了最大的變化 - 你必須通過插入虛擬值來檢查它們的整體影響,就像你必須處理線性迴歸係數一樣。

2.相關性/相關性

正如@ Tiago1984指出的那樣,它很大程度上取決於底層的算法上。 XGBoost/GBM是建立一個存根的委員會(樹木數量少,通常只有一個分割)的委員會。

在迴歸問題中,樹通常使用與MSE相關的標準。我不會詳細介紹所有細節,但您可以在這裏閱讀更多內容:https://medium.com/towards-data-science/boosting-algorithm-gbm-97737c63daa3

你會看到,在每一步它都會計算一個弱方向學習者的「方向」矢量,所以你原則上知道它的影響方向(但是要記住它可能會出現多次樹,在添加劑模型的多個步驟中)。

但是,爲了追逐;您可以修復除f19之外的所有功能,並預測一系列f19值,並查看它與響應值的關係。

看看部分依賴地塊http://scikit-learn.org/stable/auto_examples/ensemble/plot_partial_dependence.html

還有在統計學習,10.13.2章元素上的一章。

+0

問一個特性對輸出變量有什麼方向是不合理的嗎?例如,假設您正在進行二元分類,並且功能f19是「重要的」。那麼假設你檢查了f19值的比例,並且看到它的預測比例很高,而不是0,那麼你可能會得出結論,它會影響正向輸出。但是讓我們假設你做了同樣的事情,並且注意到它有更高比例的0(零)。在這種情況下,它的影響是重要的,因爲它缺少什麼,而不是它可以幫助預測的。這就是我所掌握的。 – Jarad

+0

您可以對分類預測做一個部分依賴關係圖,因此您可以針對固定的一組特徵獲得'f19'值與預測值的關係。 「無理要求」在情境特定的情況下是非常具體的,在利益相關者的情況下,我認爲你可以看到依賴情節中的一些重要特徵,但不會試圖解釋細節,或者將其作爲因果關係的證據。 – jonnybazookatone

+0

我正在選擇你的答案,因爲它是最具有可操作性和方向性的。謝謝! – Jarad

1

功能的「重要性」取決於您用來構建樹的算法。例如,在C4.5樹中,經常使用最大熵標準。這意味着功能集是允許用更少的決策步驟進行分類的功能集。

1

當我們檢查xgboost或sklearn漸變增強模型的特徵重要性時,我們可以確定特徵的重要性......但我們不明白爲什麼特徵很重要,是嗎?

是的,我們做。特徵重要性不是一些神奇的物體,它是一個明確定義的數學標準 - 其確切的定義取決於特定的模型(和/或一些額外的選擇),但它總是一個告訴「爲什麼」的對象。 「爲什麼」通常是最基本的東西,歸結爲「因爲它具有最強的預測能力」。例如,對於隨機森林特徵而言,重要性是衡量隨機選擇的訓練數據點通過樹時,在特定決策路徑上使用此特徵的可能性。所以它在適當的數學意義上給出了「爲什麼」。

+0

但我想說更多的線性迴歸。在線性迴歸中,我們得到係數。一些係數對y變量有正影響(正係數),有些則負(負係數)。在決策樹中,我們可以確定一個特徵對其預測性的正面或負面貢獻嗎?如果是這樣,一個例子將會有很長的路要走 - 如何判斷一個特徵的正面或負面貢獻。 – Jarad

+0

以編程方式,從上面的示例中,您將如何檢查模型以顯示f19是正面還是負面貢獻? – Jarad

+0

「積極的影響」不是一個有效的概念,它只適用於平凡的模型 - 更精確的線性模型。任何更復雜的事物,如果x> 10和x <20「都可以推導出規則,例如」1類「,這個概念就沒有用處,因爲」x「不是」正面「或」負面「影響。問題在於概念,而不是模型。你可以嘗試把它與P(x)聯繫起來,看看有多少概率質量落入這些區間,但是這需要根據分類規則設置不同的分類規則,這是不可行的 – lejlot