介紹
Null Importances是競賽中比較靠譜的特征篩選方法,且在多個(ge) Kaggle結構化比賽中被驗證過。
特征篩選從(cong) 原始特征空間篩選部分特征,具體(ti) 篩選方法可以分為(wei) :
- 過濾法;
- 包裝法;
- 嵌入法;
過濾法思路使用相關(guan) 統計值來計算特征有效性,然後完成篩選;包裝法使用特征帶來的精度增益來衡量;嵌入法使用特征在模型內(nei) 部權重來衡量重要性。
在競賽中一般使用包裝法來篩選特征,但單純追求精度收益非常容易過擬合,導致線上和線下不一致。
原理
使用包裝法和嵌入法篩選特征,容易篩選得到有較高CV(驗證集)精度,但導致分布一致的特征。
- CV精度增加,線上不一定有提高;
- 樹模型重要性高,不一定有效的;
舉(ju) 一個(ge) 例子:樣本標簽和ID兩(liang) 列,兩(liang) 列是一一對應,如果將ID列加入訓練,CV精度可能不會(hui) 增加,但ID在樹模型特征重要性會(hui) 很高。
Null Importances的出發點也是如此,特征重要性隻反映特征的信息增益或使用次數,但並不能說明特征一定有效。
步驟
Null Importances思路如下:
步驟1:將原有特征和標簽使用樹模型訓練,得到每個(ge) 特征原始重要性A;
步驟2:將數據的標簽打亂(luan) ,特征不變再此訓練,記錄下打散後的每個(ge) 特征重要性B,將此步驟重複N次;
步驟3:將步驟1中特征步驟2兩(liang) 個(ge) 特征重要性進行比較。
- 若A遠大於B,則特征為有效特征;
- 若A小於等於B,則特征為無效特征;
步驟2重複N是為(wei) 了看標簽打散後的特征重要性分布,A與(yu) B的分布比較,會(hui) 更加清晰。
Null Importances是借助了嵌入法的重要性計算過程,然後使用重要性變化來完成衡量過程。如下圖所示,使用LightGBM模型來完成上述操作。紅色為(wei) 原始重要性A,藍色為(wei) 打亂(luan) 後的重要性。
每一行對應一個(ge) 特征,左邊特征使用次數,右邊為(wei) 特征信息增益。
無效特征
有效特征
參考資料
https://academic.oup.com/bioinformatics/article/26/10/1340/193348
https://www.kaggle.com/ogrellier/feature-selection-with-null-importances
評論已經被關(guan) 閉。