部分依賴圖( Partial dependence plots ,PDP)顯示了目標(biāo)響應(yīng)[1]和一組“目標(biāo)”特征之間的依賴關(guān)系,并邊緣化其他特征(“ 補(bǔ)充(complement) ”特征)的值。直觀地,我們可以將部分依賴關(guān)系解釋為預(yù)期目標(biāo)響應(yīng)與“目標(biāo)”特征的函數(shù)。
由于人類感知的局限性,目標(biāo)特征集的大小必須很小(通常為一或兩個(gè)),因此目標(biāo)特征通常在最重要的特征中選擇。
下圖利用GradientBoostingRegressor
顯示了加利福尼亞住房數(shù)據(jù)集的四個(gè)單向和一個(gè)雙向PDP:
單向PDP告訴我們目標(biāo)響應(yīng)和目標(biāo)特征(例如線性,非線性)之間的相互作用。上圖的左上子圖顯示了一個(gè)地區(qū)的收入中位數(shù)對(duì)房價(jià)中位數(shù)的影響;我們可以清楚地看到它們之間的線性關(guān)系。請(qǐng)注意,PDP假設(shè)目標(biāo)特征獨(dú)立于互補(bǔ)特征,但是在現(xiàn)實(shí)中經(jīng)常違反此假設(shè)。
具有兩個(gè)目標(biāo)特征的PDP顯示了兩個(gè)特征之間的相互作用。例如,上圖中的兩變量PDP顯示了房價(jià)中位數(shù)對(duì)房屋年齡與每戶平均居住者的交互項(xiàng)的依賴性。我們可以清楚地看到這兩個(gè)特征之間的相互作用:對(duì)于平均入住率大于2的房屋,房價(jià)幾乎與房屋年齡無關(guān),而對(duì)于小于2的房屋,房價(jià)與年齡呈現(xiàn)出強(qiáng)烈的依賴性。
sklearn.inspection
模塊提供了一個(gè)方便的功能 plot_partial_dependence
,可以創(chuàng)建單向和雙向部分依賴圖。在下面的示例中,我們會(huì)展示如何創(chuàng)建局部依賴圖的網(wǎng)格:用于0
、1
特征的單向PDP 以及這兩個(gè)特征之間的雙向PDP:
>>> from sklearn.datasets import make_hastie_10_2
>>> from sklearn.ensemble import GradientBoostingClassifier
>>> from sklearn.inspection import plot_partial_dependence
>>> X, y = make_hastie_10_2(random_state=0)
>>> clf = GradientBoostingClassifier(n_estimators=100, learning_rate=1.0,
... max_depth=1, random_state=0).fit(X, y)
>>> features = [0, 1, (0, 1)]
>>> plot_partial_dependence(clf, X, features)
你可以使用plt.gcf()
和plt.gca()
訪問新創(chuàng)建的figure和axis對(duì)象。
對(duì)于多類分類,需要通過target
參數(shù)設(shè)置類標(biāo)簽,來創(chuàng)建PDP:
>>> from sklearn.datasets import load_iris
>>> iris = load_iris()
>>> mc_clf = GradientBoostingClassifier(n_estimators=10,
... max_depth=1).fit(iris.data, iris.target)
>>> features = [3, 2, (3, 2)]
>>> plot_partial_dependence(mc_clf, X, features, target=0)
在多輸出回歸中,可以使用相同的參數(shù)target
指定目標(biāo)變量。
如果需要局部依賴函數(shù)的原始值而不是圖,可以使用sklearn.inspection.partial_dependence
函數(shù):
>>> from sklearn.inspection import partial_dependence
>>> pdp, axes = partial_dependence(clf, X, [0])
>>> pdp
array([[ 2.466..., 2.466..., ...
>>> axes
[array([-1.624..., -1.592..., ...
局部依賴關(guān)系的值直接由x
生成 。對(duì)于雙向部分依賴關(guān)系,將生成值的二維網(wǎng)格。由 sklearn.inspection.partial_dependence
返回的values
參數(shù)給出了每個(gè)目標(biāo)特征在網(wǎng)格中使用的實(shí)際值。它們還對(duì)應(yīng)于圖形的軸。
是目標(biāo)特征(即features
參數(shù))的集合,為其補(bǔ)充特征。
響應(yīng)的部分依賴 在某一點(diǎn) 上定義為:
這里 是給定樣本的響應(yīng)函數(shù)(predict, predict_proba或decision_function),樣本中,在和中的特征分別被定義為和 。注意 和 可能是元組。
對(duì)于各種取值計(jì)算這個(gè)積分,就會(huì)產(chǎn)生如上所述的圖。
有兩種近似上述積分的主要方法,即“brute”和“recurtion”方法。利用method
參數(shù)可以控制使用哪種方法。
"brute"方法是可與任何估計(jì)器一起使用的通用方法。它通過計(jì)算數(shù)據(jù)的平均值來近似上述積分:
是里的第個(gè)樣本特征值。 對(duì)于里對(duì)的每個(gè)值,此方法需要對(duì)龐大的數(shù)據(jù)集進(jìn)行完全遍歷。
“recurtion”方法比“brute”方法快,但是僅支持某些基于樹的估計(jì)器。計(jì)算如下,對(duì)于給定的特征,執(zhí)行加權(quán)樹遍歷:如果拆分節(jié)點(diǎn)涉及“目標(biāo)”特征,則遵循相應(yīng)的左分支或右分支;否則,兩個(gè)分支都會(huì)被跟蹤,每個(gè)分支都會(huì)按進(jìn)入該分支的訓(xùn)練樣本的比例加權(quán)。最后,部分依賴關(guān)系由所有訪問的葉子節(jié)點(diǎn)的加權(quán)平均值給出。
使用“ brute”方法時(shí),參數(shù)X
用于對(duì)目標(biāo)特征,和補(bǔ)充特征值生成值網(wǎng)格。但是,對(duì)于“recurtion”方法,該方法X
僅用于網(wǎng)格值,是訓(xùn)練數(shù)據(jù)的值。
默認(rèn)情況下,“recurtion”方法用于支持它的基于樹的估計(jì)器,其他的估計(jì)器則使用“ brute”。
注意 |
---|
雖然這兩種方法通常應(yīng)該很接近,但是在某些特定設(shè)置上可能會(huì)有所不同。“brute”方法假定存在數(shù)據(jù)點(diǎn)。當(dāng)特征相關(guān)時(shí),這樣的樣本可能具有非常低的概率質(zhì)量。“brute”和“recurtion”方法可能會(huì)在部分依賴的價(jià)值上存在分歧,因?yàn)樗鼈儗?duì)這些樣本進(jìn)行不同的處理。但值得注意的是,解釋PDP的主要假設(shè)是特征之間應(yīng)是獨(dú)立的。 |
腳注 |
---|
[1] 對(duì)于分類,目標(biāo)響應(yīng)可以是某個(gè)類別的概率(用于二進(jìn)制分類的肯定類別)或決策函數(shù)。 |
例子: |
---|
部分依賴圖 |
參考文獻(xiàn) |
---|
T. Hastie,R。Tibshirani和J.Friedman,《統(tǒng)計(jì)學(xué)習(xí)的要素》,第二版,第10.13.2節(jié),Springer,2009年。 C.Molnar,可解釋機(jī)器學(xué)習(xí),第5.1節(jié),2019年。 |
更多建議: