當前位置:編程學習大全網 - 源碼下載 - 特征選擇的包裝法Wrapper

特征選擇的包裝法Wrapper

1.1 Wrapper包裝法

包裝法也是壹個特征選擇和算法訓練同時進行的方法,與嵌入法十分相似,它也還壹個依賴於算法自身的選擇,比如coef_和feature_importances_屬性來完成特征選擇,不同的是,我們往往使用壹個目標函數作為黑盒來幫助我們選取特征,而不是自己輸入某個評估指標或統計量的閾值。包裝法在初始特征集上訓練評估器,並且通過coef_和feature_importances_屬性獲得每個特征的重要性,然後,從當前的壹組特征中修剪最不重要的特征,接著在修剪過的集合上遞歸地重復該過程,直到最終得到所需數量的特征。區別於過濾法和嵌入法的易車訓練解決所有問題,包裝法需要使用特征子集進行多次訓練,因此他所需要的計算成本最高。

註意,在這個圖中的“算法”,指的不是我們最終用來導入數據的分類或回歸算法,而是專業的數據挖掘算法,即我們的目標函數。這些數據挖掘算法的核心功能就是選取最佳特征子集。

最經典的目標函數是遞歸特征消除法(Recursive feature elimination,簡寫為RFE),它是壹種貪婪的優化算法,旨在找到性能最優的特征子集,它反復創建模型,並在每次叠代時保留最佳特征或是剔除最差特征,下壹次叠代時,它會使用上壹次建模中沒有被選中特征來構建下壹個模型,直到所有的特征都耗盡為止。然後,它根據子集保留或是剔除特征的順序來對特征進行排名,最後選出壹個最佳子集。包裝法的效果是所有特征選擇方法中最利於提升模型表現的,它可以使用很少的特征達到很優秀的效果。除此之外,在特征數目相同時,包裝法和嵌入法的效果能夠匹敵,不過它比嵌入法算得更見緩慢,所以也不適用於太大型的數據。相比之下,包裝法是最能保證模型效果的特征選擇方法

1.2 feature_selection.RFE,遞歸特征消除法

class sklearn.feature_selection.RFE (estimator, n_features_to_select=None, step=1, verbose=0)

參數estimator是需要填寫的實例化後的評估器,n_features_to_select是想要選擇的特征個數,step表示每次叠代中希望移除的特征個數。除此之外,RFE類有兩個很重要的屬性, .support_:返回所有的特征的是否最後被選中的布爾矩陣,以及.ranking_返回特征的按數次叠代中綜合重要性的排名。類feature_selection.RFECV會在交叉驗證循環中執行RFE以找到最佳數量的特征,增加參數cv,其他用法都和RFE壹模壹樣。

1.3 特征選擇總結

經驗來說,過濾法更快速,但更粗糙。包裝法和嵌入法更精確,比較適合具體到算法去調整,但計算量比較大,運行時間長。當數據量很大的時候,優先使用方差過濾和互信息法調整,再上其他特征選擇方法。使用邏輯回歸時,優先使用嵌入法。使用支持向量機時,優先使用包裝法。迷茫的時候,從過濾法走起,看具體數據具體分析。其實特征選擇只是特征工程中的第壹步。真正的高手,往往使用特征創造或特征提取來尋找高級特征。在Kaggle之類的算法競賽中,很多高分團隊都是在高級特征上做文章,而這是比調參和特征選擇更難的,提升算法表現的高深方法。

  • 上一篇:國外論壇源代碼
  • 下一篇:雙炮之後的連續下跌是怎麽回事?
  • copyright 2024編程學習大全網