W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
基于排列的特征重要性是一種模型檢查技術(shù),可用于表格型數(shù)據(jù)中任一個(gè)擬合的估計(jì)器 。 這對于非線性或不可解釋的估計(jì)器特別有用 ?;谂帕械奶卣髦匾远x為單個(gè)特征取值被隨機(jī)打亂時(shí)模型得分的降低程度。此過程破壞了特征與目標(biāo)之間的關(guān)系,因此模型得分的下降程度表示了模型對特征的依賴程度。這種技術(shù)的好處在于它不依賴于模型,并且可以通過特征的不同排列進(jìn)行多次計(jì)算。
permutation_importance
函數(shù)可以計(jì)算給定數(shù)據(jù)集的估計(jì)器的特征重要性。n_repeats
參數(shù)設(shè)置特征取值隨機(jī)重排的次數(shù),并返回樣本的特征重要性。
讓我們考慮下面訓(xùn)練回歸模型的例子:
>>> from sklearn.datasets import load_diabetes
>>> from sklearn.model_selection import train_test_split
>>> from sklearn.linear_model import Ridge
>>> diabetes = load_diabetes()
>>> X_train, X_val, y_train, y_val = train_test_split(
... diabetes.data, diabetes.target, random_state=0)
...
>>> model = Ridge(alpha=1e-2).fit(X_train, y_train)
>>> model.score(X_val, y_val)
0.356...
通過得分驗(yàn)證其性能,明顯大于隨機(jī)水平。這樣就可以使用 permutation_importance
函數(shù)來探查哪些特征對預(yù)測準(zhǔn)確度貢獻(xiàn)最大:
>>> from sklearn.inspection import permutation_importance
>>> r = permutation_importance(model, X_val, y_val,
... n_repeats=30,
... random_state=0)
...
>>> for i in r.importances_mean.argsort()[::-1]:
... if r.importances_mean[i] - 2 * r.importances_std[i] > 0:
... print(f"{diabetes.feature_names[i]:<8}"
... f"{r.importances_mean[i]:.3f}"
... f" +/- {r.importances_std[i]:.3f}")
...
s5 0.204 +/- 0.050
bmi 0.176 +/- 0.048
bp 0.088 +/- 0.033
sex 0.056 +/- 0.023
值得注意的是,s5特征的重要性值占參考分?jǐn)?shù)0.356的很大一部分。
排列特征重要性可以在訓(xùn)練集上或在保留的測試或驗(yàn)證集上進(jìn)行計(jì)算。使用保留集可以突出顯示哪些特征對模型的泛化能力貢獻(xiàn)最大;對訓(xùn)練集重要但對保留數(shù)據(jù)集不重要的功能可能會(huì)導(dǎo)致模型過擬合。
警告 |
---|
對不良模型(較低的交叉驗(yàn)證分?jǐn)?shù))不重要的特征,可能對于良好模型非常重要,因此,在計(jì)算重要性之前,使用保留數(shù)據(jù)集評估模型(或更好地使用交叉驗(yàn)證)的預(yù)測能力始終很重要。特征排列重要性本身并不能反映特征的內(nèi)在預(yù)測價(jià)值,但是能體現(xiàn)這個(gè)特征對于特定模型的重要性。 |
輸入:擬合的預(yù)測模型 ,表格型數(shù)據(jù)集(訓(xùn)練或驗(yàn)證)。
計(jì)算模型關(guān)于數(shù)據(jù) (例如,分類器的準(zhǔn)確性或回歸器的)的參考分?jǐn)?shù) 。
對于中的特征:
對于中的每個(gè):
計(jì)算特征 的重要性 ,計(jì)算公式為:
基于樹的模型提供了另一種基于不純度平均減少量 (MDI)的特征重要性度量方法。通過決策樹的分裂準(zhǔn)則(基尼系數(shù),信息熵或均方誤差)來量化不純度。然而,這種方法會(huì)過度重視模型而引起過擬合, 可能無法預(yù)測新數(shù)據(jù)的特征 。另一方面,基于排列特性重要性的方法避免了這個(gè)問題,因?yàn)樗梢詫π碌臄?shù)據(jù)進(jìn)行計(jì)算。
基于不純度的樹模型對特征的重要性的判斷很容易產(chǎn)生偏見,并且偏向于高基數(shù)特征(通常是數(shù)值特征),而不是低基數(shù)特征(例如具有少量可能類別的二元特征或分類變量)。
基于排列的特征重要性不表現(xiàn)出這種偏差。它可以在模型預(yù)測的基礎(chǔ)上計(jì)算出性能指標(biāo),并且可以用于分析任何模型(不僅僅是基于樹的模型)。
以下示例突出了與基于排列的特征重要性相比,基于不純度的特征重要性的局限性: 置換重要性與隨機(jī)森林特征重要性(MDI)。
當(dāng)兩個(gè)特征相關(guān)聯(lián)并且其中一個(gè)特征被隨機(jī)重排時(shí),模型仍然可以通過其相關(guān)特征來訪問此特征。這將導(dǎo)致兩個(gè)特征的重要性指標(biāo)降低,而這兩個(gè)特征實(shí)際上可能很重要。
處理此問題的一種方法是將關(guān)聯(lián)的特征聚類,并且對于每個(gè)聚類僅保留一個(gè)特征。在以下示例中探討了該方法: 具有多重共線性或相關(guān)特征的置換重要性。
例子: |
---|
排列重要性與隨機(jī)森林特征重要性(MDI) 具有多重共線性或相關(guān)特征的排列重要性 |
參考文獻(xiàn): |
---|
[1]L. Breiman, “Random Forests”, Machine Learning, 45(1), 5-32, 2001. https://doi.org/10.1023/A:1010933404324 |
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: