當我們執行一項監督任務時,我們面臨的問題是在我們的機器學習管道中加入适當的特征選擇。隻需在網上搜尋,我們就可以通路讨論特征選擇過程的各種來源和内容。
總而言之,有不同的方法來進行特征選擇。文獻中最著名的是基于過濾器和基于包裝器的技術。在基于過濾器的過程中,無監督算法或統計資料用于查詢最重要的預測變量。在基于包裝器的方法中,監督學習算法被疊代拟合以排除不太重要的特征。
通常,基于包裝器的方法是最有效的,因為它們可以提取特征之間的相關性和依賴性。另一方面,它們更容易過拟合。為了避免這種問題并充分利用基于包裝器的技術,我們需要做的就是采用一些簡單而強大的技巧。我們可以通過一點資料了解和一個特殊的技巧來實作更好的特征選擇。别擔心,我們使用的不是黑暗魔法,而是SHAP(SHApley Additive exPlanations)的力量。
為了在特征選擇過程中更好地利用 SHAP 的功能,我們釋出了 shap-hypetune:一個用于同時調整超參數和特征選擇的 Python 包。它允許在為梯度提升模型定制的單個管道中組合特征選擇和參數調整。它支援網格搜尋或随機搜尋,并提供基于包裝的特征選擇算法,如遞歸特征消除 (RFE) 或 Boruta。進一步添加包括使用 SHAP 重要性進行特征選擇,而不是經典的基于原生樹的特征重要性。
在這篇文章中,我們示範了正确執行特征選擇的實用程式。如果我們高估了梯度提升的解釋能力,或者隻是我們沒有一般的資料了解,這表明并不像預期的那麼簡單。我們的範圍是檢測各種特征選擇技術的表現如何以及為什麼使用 SHAP 會有所幫助。
什麼是Boruta?
每個人都知道(或很容易了解)RFE 遞歸特征消除是如何工作的。考慮到較小的特征集,它遞歸地拟合監督算法。其中排除的特征是根據某些權重的大小(例如,線性模型的系數或基于樹的模型的特征重要性)被認為不太重要的特征。
Boruta 與 RFE 一樣,是一種基于包裝器的特征選擇技術。可能很少有人聽過它的名字,但是它同樣強大。Boruta 背後的想法非常簡單。給定一個表格資料集,我們在資料的擴充版本上疊代地拟合監督算法(通常是基于樹的模型)。在每次疊代中,擴充版本由原始資料與水準連接配接的混洗列的副本組成。我們隻維護在每次疊代中的特征:
- 比最好的随機排序特征具有更高的重要性;
- 比随機因素(使用二項式分布)好于預期。
RFE 和 Boruta 都使用提供特征重要性排名的監督學習算法。這個模型是這兩種技術的核心,因為它判斷每個特征的好壞。這裡可能會出現問題。決策樹的标準特征重要性方法傾向于高估高頻或高基數變量的重要性。對于 Boruta 和 RFE,這可能會導緻錯誤的特征選擇。
本次實驗
我們從 Kaggle 收集了一個資料集。我們選擇了一個銀行客戶資料集,我們嘗試預測客戶是否很快就會流失。在開始之前,我們将一些由簡單噪聲構成的随機列添加到資料集中。我們這樣做是為了了解我們的模型如何計算特征重要性。我們開始拟合和調整我們的梯度提升(LGBM)。我們用不同的分裂種子重複這個過程不同的時間來覆寫資料選擇的随機性。下面提供了平均特征重要性。
令人驚訝的是,随機特征對我們的模型非常重要。另一個錯誤的假設是将 CustomerId 視為有用的預測器。這是客戶的唯一辨別符,梯度提升錯誤地認為它很重要。
鑒于這些前提,讓我們在我們的資料上嘗試一些特征選擇技術。我們從RFE開始。我們将參數的調整與特征選擇過程相結合。和以前一樣,我們對不同的分裂種子重複整個過程,以減輕資料選擇的随機性。對于每個試驗,我們考慮标準的基于樹的特征重要性和 SHAP 重要性來存儲標明的特征。通過這種方式,我們可以繪制在試驗結束時選擇某個特征的次數。
使用 RFE 選擇某個特征的次數(左);使用 RFE + SHAP 選擇某個特征的次數(右)
在我們的案例中,具有标準重要性的 RFE 顯示是不準确的。它通常選擇與 CustomerId 相關的随機預測變量。SHAP + RFE 最好不要選擇無用的特征,但同時承認一些錯誤的選擇。
作為最後一步,我們重複相同的過程,但使用 Boruta。
Boruta(左)選擇一個特征的次數;使用 Boruta + SHAP 選擇某個特征的次數(右)
單獨的标準 Boruta 在不考慮随機變量和 CustomerId 方面做得很好。SHAP + BORUTA 似乎也能更好地減少選擇過程中的差異。
總結
在這篇文章中,我們介紹了 RFE 和 Boruta(來自 shap-hypetune)作為兩種有價值的特征選擇包裝方法。此外,我們使用 SHAP 替換了特征重要性計算。SHAP 有助于減輕選擇高頻或高基數變量的影響。綜上所述,當我們對資料有完整的了解時,可以單獨使用RFE。Boruta 和 SHAP 可以消除對正确驗證的選擇過程的任何疑慮。
最後源代碼在這裡:https://github.com/cerlymarco/MEDIUM_NoteBook/tree/master/ShapBoruta_FeatureSelection
本文作者:Marco Cerliani