<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Boruta 和 SHAP :不同特征選擇技術(shù)之間的比較以及如何選擇

          共 2303字,需瀏覽 5分鐘

           ·

          2021-07-30 23:41

          來源:DeepHub IMBA

          本文約1800字,建議閱讀5分鐘 

          在這篇文章中,我們演示了正確執(zhí)行特征選擇的實用程序。


          當我們執(zhí)行一項監(jiān)督任務時,我們面臨的問題是在我們的機器學習管道中加入適當?shù)奶卣鬟x擇。只需在網(wǎng)上搜索,我們就可以訪問討論特征選擇過程的各種來源和內(nèi)容。

          總而言之,有不同的方法來進行特征選擇。文獻中最著名的是基于過濾器和基于包裝器的技術(shù)。在基于過濾器的過程中,無監(jiān)督算法或統(tǒng)計數(shù)據(jù)用于查詢最重要的預測變量。在基于包裝器的方法中,監(jiān)督學習算法被迭代擬合以排除不太重要的特征。

          通常,基于包裝器的方法是最有效的,因為它們可以提取特征之間的相關(guān)性和依賴性。另一方面,它們更容易過擬合。為了避免這種問題并充分利用基于包裝器的技術(shù),我們需要做的就是采用一些簡單而強大的技巧。我們可以通過一點數(shù)據(jù)理解和一個特殊的技巧來實現(xiàn)更好的特征選擇。別擔心,我們使用的不是黑暗魔法,而是SHAP(SHApley Additive exPlanations)的力量。

          為了在特征選擇過程中更好地利用 SHAP 的功能,我們發(fā)布了 shap-hypetune:一個用于同時調(diào)整超參數(shù)和特征選擇的 Python 包。它允許在為梯度提升模型定制的單個管道中組合特征選擇和參數(shù)調(diào)整。它支持網(wǎng)格搜索或隨機搜索,并提供基于包裝的特征選擇算法,如遞歸特征消除 (RFE) 或 Boruta。進一步添加包括使用 SHAP 重要性進行特征選擇,而不是經(jīng)典的基于原生樹的特征重要性。

          在這篇文章中,我們演示了正確執(zhí)行特征選擇的實用程序。如果我們高估了梯度提升的解釋能力,或者只是我們沒有一般的數(shù)據(jù)理解,這表明并不像預期的那么簡單。我們的范圍是檢測各種特征選擇技術(shù)的表現(xiàn)如何以及為什么使用 SHAP 會有所幫助。


          什么是Boruta?


          每個人都知道(或很容易理解)RFE 遞歸特征消除是如何工作的??紤]到較小的特征集,它遞歸地擬合監(jiān)督算法。其中排除的特征是根據(jù)某些權(quán)重的大小(例如,線性模型的系數(shù)或基于樹的模型的特征重要性)被認為不太重要的特征。

          Boruta 與 RFE 一樣,是一種基于包裝器的特征選擇技術(shù)??赡芎苌儆腥寺犨^它的名字,但是它同樣強大。Boruta 背后的想法非常簡單。給定一個表格數(shù)據(jù)集,我們在數(shù)據(jù)的擴展版本上迭代地擬合監(jiān)督算法(通常是基于樹的模型)。在每次迭代中,擴展版本由原始數(shù)據(jù)與水平連接的混洗列的副本組成。我們只維護在每次迭代中的特征:

          1. 比最好的隨機排序特征具有更高的重要性;
          2. 比隨機因素(使用二項式分布)好于預期。

          RFE 和 Boruta 都使用提供特征重要性排名的監(jiān)督學習算法。這個模型是這兩種技術(shù)的核心,因為它判斷每個特征的好壞。這里可能會出現(xiàn)問題。決策樹的標準特征重要性方法傾向于高估高頻或高基數(shù)變量的重要性。對于 Boruta 和 RFE,這可能會導致錯誤的特征選擇。

          本次實驗


          我們從 Kaggle 收集了一個數(shù)據(jù)集。我們選擇了一個銀行客戶數(shù)據(jù)集,我們嘗試預測客戶是否很快就會流失。在開始之前,我們將一些由簡單噪聲構(gòu)成的隨機列添加到數(shù)據(jù)集中。我們這樣做是為了了解我們的模型如何計算特征重要性。我們開始擬合和調(diào)整我們的梯度提升(LGBM)。我們用不同的分裂種子重復這個過程不同的時間來覆蓋數(shù)據(jù)選擇的隨機性。下面提供了平均特征重要性。


          令人驚訝的是,隨機特征對我們的模型非常重要。另一個錯誤的假設是將 CustomerId 視為有用的預測器。這是客戶的唯一標識符,梯度提升錯誤地認為它很重要。

          鑒于這些前提,讓我們在我們的數(shù)據(jù)上嘗試一些特征選擇技術(shù)。我們從RFE開始。我們將參數(shù)的調(diào)整與特征選擇過程相結(jié)合。和以前一樣,我們對不同的分裂種子重復整個過程,以減輕數(shù)據(jù)選擇的隨機性。對于每個試驗,我們考慮標準的基于樹的特征重要性和 SHAP 重要性來存儲選定的特征。通過這種方式,我們可以繪制在試驗結(jié)束時選擇某個特征的次數(shù)。

          使用 RFE 選擇某個特征的次數(shù)(左);使用 RFE + SHAP 選擇某個特征的次數(shù)(右)

          在我們的案例中,具有標準重要性的 RFE 顯示是不準確的。它通常選擇與 CustomerId 相關(guān)的隨機預測變量。SHAP + RFE 最好不要選擇無用的特征,但同時承認一些錯誤的選擇。

          作為最后一步,我們重復相同的過程,但使用 Boruta。

          Boruta(左)選擇一個特征的次數(shù);使用 Boruta + SHAP 選擇某個特征的次數(shù)(右)

          單獨的標準 Boruta 在不考慮隨機變量和 CustomerId 方面做得很好。SHAP + BORUTA 似乎也能更好地減少選擇過程中的差異。

          總結(jié)


          在這篇文章中,我們介紹了 RFE 和 Boruta(來自 shap-hypetune)作為兩種有價值的特征選擇包裝方法。此外,我們使用 SHAP 替換了特征重要性計算。SHAP 有助于減輕選擇高頻或高基數(shù)變量的影響。綜上所述,當我們對數(shù)據(jù)有完整的理解時,可以單獨使用RFE。Boruta 和 SHAP 可以消除對正確驗證的選擇過程的任何疑慮。

          最后源代碼在這里:
          https://github.com/cerlymarco/MEDIUM_NoteBook/tree/master/ShapBoruta_FeatureSelection

          本文作者:Marco Cerliani


          編輯:文婧


          瀏覽 28
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  2016av天堂网 | 日韩一级片在线看 | 亚洲成人诱惑 | 夜色大香蕉视频网 | 麻豆成人电影九九 |