0
雷鋒網AI科技評論編者按:特征選擇的方法你了解多少?這篇文章的作者將帶領我們認識一種新穎的特征選擇方法—排列重要性,它可以幫助我們找到任何BlackBox模型的特征重要性,那么它又是怎么起作用的以及又是如何使用ELI5對其進行編碼的呢?這篇文章給你答案。
本文來自數據科學家Rahul Agarwal的文章《How to find Feature importances for BlackBox Models?
》在不改變原文意思的基礎上雷鋒網AI科技評論的編譯如下:
數據科學是對算法進行的研究。我每天都要處理很多的算法,因此我想把一些最常見和最常用的算法列出來,這些算法將會在新的DS算法系列中使用。
有多少次,當你創建了很多特征的時候,但接下來你還需要想盡方法減少特征的數量?
上次我寫了一篇名為《每個數據科學家都應該知道的5種特征選擇算法》的文章,其中談到了使用相關性或基于樹類結構的方法,并在特征選擇的過程中添加了一些結構。
最近我接觸了另一種新穎的特征選擇方法,叫做排列重要性。
因此,這篇文章將介紹排列重要性是如何起作用的以及如何使用ELI5對其進行編碼。
簡單地說,如果我們從數據集中刪除一個特定的特征,我們可以根據我們的評估指標(F1、精度AUC等)的變化來給這個特征賦予重要性。
要做到這一點可就太簡單了,我們從數據集中刪除了一個特征,然后訓練分類器,接著查看評估指標是如何變化的。我們要對所有的特征都這樣操作。
所以我們至少要擬合n次模型,其中n是模型中的特征的數量。 這意味著非常多的計算和工作量。我們是否能在這樣的條件下做到更好呢?

Source:我們使用更新的數據集對特征進行排序和預測。直觀地講,如果我們的準確性或任何評估指標都沒有受到影響,那我們就可以說這個特征并不重要。但如果我們的準確性受到了影響,那我們也得承認該特征確實很重要。
我們當然是可以做到的。為了計算排列的重要性,我們對單個特征的值進行改組、排列,并使用所得的數據集進行預測。
然后將這些預測用于計算我們的評估指標。直觀地講,如果我們的準確性或任何評估指標都沒有受到影響,那我們就可以說這個特征并不重要。但如果我們的準確性受到了影響,那我們也得承認該特征確實很重要。
數據集
我們嘗試使用數據集來更好的理解它。
我將使用一個足球運動員數據集來說明,并嘗試通過用它來找出最重要的特征。

如果你不懂足球術語,也不用擔心,我盡量減少使用專業術語。
你可以在這個Kaggle核心內容中查看完整的代碼(https://www.kaggle.com/mlwhiz/permutation-feature-selection-using-football-data)。
簡單的數據預處理
我們已經完成了一些基本的預處理任務,例如刪除空值和獨熱碼。我們還使用以下方法將問題轉換成分類問題:

在這里,我們使用“高素質水平”作為優秀球員的代表。我們的數據集(X)如下所示,有223列。

訓練數據X
實操
有了ELI5庫使我們很容易就能將特征重要性應用于sklearn模型。 首先,我們要開始訓練模型。

然后使用eli5 sklearn模塊中的PermutationImportance函數。

結果如下:

在這里,我們注意到反應,攔截和控球是決定球員素質的最重要的特征。

我們還可以使用eli5來計算非機器學習模型的特征重要性。在這里我們訓練了一個LightGBM模型。
我們需要為評分函數創建一個包裝器,以計算我們的評估指標。

現在我們可以使用eli5.permutation_importance中的get_score_importances函數以獲得最終的特征函數。

我們可以使用以下內容查看榜單排名前五的特征:

結論:
特征工程和特征選擇是任何機器學習通道的關鍵部分。
我們追求模型的準確性,如果不反復查看這些模型,就不可能獲得良好的準確性。
在這篇文章中,我試圖將排列重要性解釋為一種特征選擇方法。它可以幫助我們找到任何BlackBox模型的特性重要性,這與我之前關于特征選擇的文章中的技術表達不同。
如果你想了解更多關于特征工程、選擇的信息,那我想告訴你“如何贏得數據科學競賽:從Kazanova的高級機器學習專業中的頂級Kagglers課程中學習”。這個課程討論了很多有用的特征工程、選擇技術來改進模型的直觀方法。絕對值得推薦。
原文鏈接(雷鋒網注):https://towardsdatascience.com/how-to-find-feature-importances-for-blackbox-models-c418b694659d
雷峰網原創文章,未經授權禁止轉載。詳情見轉載須知。