機器學習-特徵工程-特徵選擇-包裝法

Introduction

  • 包裝法(wrapper)仍是一種特徵選擇和演算法訓練同時進行的方法
  • 與嵌入法相似的地方,仍是依賴算法有coef_feature_importances_等屬性來完成特徵選擇
  • 不同之處為 使用一個專業的數據挖掘演算法;而非使用 在評估模型使用的演算法
  • wrapper method

    • 黑箱中所使用的Learning Algorithm是一個目標函數,專門用於選取特徵
      • 不需像過濾法那樣在指定評估指標 和 threshold值
  • 計算成本位於嵌入法與過濾法中間

  • 包裝法效果是所有特徵選擇方法中最利於提升模型表現的
  • 不適用於大
  • 包裝法相比嵌入法更能保證模型效果

Process

  1. 在初始特徵(全部特徵)集上訓練黑箱中的Learning Algorithm
  2. 獲得coef, feature_importances_等屬性作為重要程度指標
  3. 除去最不重要的特徵,得到修剪的特徵集合
  4. 回到步驟1,直到達到所指定所需數量的特徵

遞歸特徵消除法(RFE)

  • 最典型的Learning Algorithm為遞歸特徵消除法(Recursive feature elimination,RFE)
  • 為一貪婪優化演算法,旨在找尋最佳的特徵子集
  • from sklearn.feature_selection import RFE

重要參數

estimator

填寫實例化後的演算法模型實例

n_features_to_select

填寫想要選擇出來的特徵個數

  • 預設為None
  • 意指想保留的維度為多少
  • 為一超參數
    • 可使用學習曲線法進行優化

step

填寫每次迭代中欲移除的特徵個數

  • 預設為1

方法

與其他轉換器(transformer)一樣皆具有fit_transformfittransforminverse_transform 等方法

重要屬性

.support_

返回所有的特徵是否最後被選中的boolean矩陣

.ranking_

返回特徵 按數次迭代中綜合重要性的排名

  • 排名越前面的特徵越重要

RFECV

1
from feature_selection import RFECV
  • 其會在交叉驗證循環中執行RFE找到最佳數量的特徵
  • 增加參數cv(交叉驗證的次數),其他用法與RFE一模一樣

特徵選擇總結

  • 過濾法較快速但是粗糙
  • 包裝法和嵌入法更精確,計算量較大,運行時間長
  • 數據量大時,優先使用方差過濾(VarianceThreshold)和互信息法(mutal_info_classif(regression)),再使用其他的特徵選擇方法
  • Logistic Regression:優先使用嵌入法
  • SVM:優先使用包裝法
  • 不知道用哪個時,先使用過濾法