W3Cschool
恭喜您成為首批注冊(cè)用戶(hù)
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
基于排列的特征重要性是一種模型檢查技術(shù),可用于表格型數(shù)據(jù)中任一個(gè)擬合的估計(jì)器 。 這對(duì)于非線(xiàn)性或不可解釋的估計(jì)器特別有用 ?;谂帕械奶卣髦匾远x為單個(gè)特征取值被隨機(jī)打亂時(shí)模型得分的降低程度。此過(guò)程破壞了特征與目標(biāo)之間的關(guān)系,因此模型得分的下降程度表示了模型對(duì)特征的依賴(lài)程度。這種技術(shù)的好處在于它不依賴(lài)于模型,并且可以通過(guò)特征的不同排列進(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...
通過(guò)得分驗(yàn)證其性能,明顯大于隨機(jī)水平。這樣就可以使用 permutation_importance
函數(shù)來(lái)探查哪些特征對(duì)預(yù)測(cè)準(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)練集上或在保留的測(cè)試或驗(yàn)證集上進(jìn)行計(jì)算。使用保留集可以突出顯示哪些特征對(duì)模型的泛化能力貢獻(xiàn)最大;對(duì)訓(xùn)練集重要但對(duì)保留數(shù)據(jù)集不重要的功能可能會(huì)導(dǎo)致模型過(guò)擬合。
警告 |
---|
對(duì)不良模型(較低的交叉驗(yàn)證分?jǐn)?shù))不重要的特征,可能對(duì)于良好模型非常重要,因此,在計(jì)算重要性之前,使用保留數(shù)據(jù)集評(píng)估模型(或更好地使用交叉驗(yàn)證)的預(yù)測(cè)能力始終很重要。特征排列重要性本身并不能反映特征的內(nèi)在預(yù)測(cè)價(jià)值,但是能體現(xiàn)這個(gè)特征對(duì)于特定模型的重要性。 |
輸入:擬合的預(yù)測(cè)模型 ,表格型數(shù)據(jù)集(訓(xùn)練或驗(yàn)證)。
計(jì)算模型關(guān)于數(shù)據(jù) (例如,分類(lèi)器的準(zhǔn)確性或回歸器的)的參考分?jǐn)?shù) 。
對(duì)于中的特征:
對(duì)于中的每個(gè):
計(jì)算特征 的重要性 ,計(jì)算公式為:
基于樹(shù)的模型提供了另一種基于不純度平均減少量 (MDI)的特征重要性度量方法。通過(guò)決策樹(shù)的分裂準(zhǔn)則(基尼系數(shù),信息熵或均方誤差)來(lái)量化不純度。然而,這種方法會(huì)過(guò)度重視模型而引起過(guò)擬合, 可能無(wú)法預(yù)測(cè)新數(shù)據(jù)的特征 。另一方面,基于排列特性重要性的方法避免了這個(gè)問(wèn)題,因?yàn)樗梢詫?duì)新的數(shù)據(jù)進(jìn)行計(jì)算。
基于不純度的樹(shù)模型對(duì)特征的重要性的判斷很容易產(chǎn)生偏見(jiàn),并且偏向于高基數(shù)特征(通常是數(shù)值特征),而不是低基數(shù)特征(例如具有少量可能類(lèi)別的二元特征或分類(lèi)變量)。
基于排列的特征重要性不表現(xiàn)出這種偏差。它可以在模型預(yù)測(cè)的基礎(chǔ)上計(jì)算出性能指標(biāo),并且可以用于分析任何模型(不僅僅是基于樹(shù)的模型)。
以下示例突出了與基于排列的特征重要性相比,基于不純度的特征重要性的局限性: 置換重要性與隨機(jī)森林特征重要性(MDI)。
當(dāng)兩個(gè)特征相關(guān)聯(lián)并且其中一個(gè)特征被隨機(jī)重排時(shí),模型仍然可以通過(guò)其相關(guān)特征來(lái)訪問(wèn)此特征。這將導(dǎo)致兩個(gè)特征的重要性指標(biāo)降低,而這兩個(gè)特征實(shí)際上可能很重要。
處理此問(wèn)題的一種方法是將關(guān)聯(lián)的特征聚類(lèi),并且對(duì)于每個(gè)聚類(lèi)僅保留一個(gè)特征。在以下示例中探討了該方法: 具有多重共線(xiàn)性或相關(guān)特征的置換重要性。
例子: |
---|
排列重要性與隨機(jī)森林特征重要性(MDI) 具有多重共線(xiàn)性或相關(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號(hào)-3|閩公網(wǎng)安備35020302033924號(hào)
違法和不良信息舉報(bào)電話(huà):173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號(hào)
聯(lián)系方式:
更多建議: