Introduction
- 包裝法(wrapper)仍是一種特徵選擇和演算法訓練同時進行的方法
- 與嵌入法相似的地方,仍是依賴算法有
coef_
及feature_importances_
等屬性來完成特徵選擇 - 不同之處為 使用一個專業的數據挖掘演算法;而非使用 在評估模型使用的演算法
-
- 黑箱中所使用的Learning Algorithm是一個目標函數,專門用於選取特徵
- 不需像過濾法那樣在指定評估指標 和 threshold值
- 黑箱中所使用的Learning Algorithm是一個目標函數,專門用於選取特徵
計算成本位於嵌入法與過濾法中間
- 包裝法效果是所有特徵選擇方法中最利於提升模型表現的
- 不適用於大
- 包裝法相比嵌入法更能保證模型效果
Process
- 在初始特徵(全部特徵)集上訓練黑箱中的Learning Algorithm
- 獲得
coef
,feature_importances_
等屬性作為重要程度指標 - 除去最不重要的特徵,得到修剪的特徵集合
- 回到步驟1,直到達到所指定所需數量的特徵
遞歸特徵消除法(RFE)
- 最典型的Learning Algorithm為遞歸特徵消除法(Recursive feature elimination,RFE)
- 為一貪婪優化演算法,旨在找尋最佳的特徵子集
from sklearn.feature_selection import RFE
重要參數
estimator
填寫實例化後的演算法模型實例
n_features_to_select
填寫想要選擇出來的特徵個數
- 預設為
None
- 意指想保留的維度為多少
- 為一超參數
- 可使用學習曲線法進行優化
step
填寫每次迭代中欲移除的特徵個數
- 預設為
1
方法
與其他轉換器(transformer)一樣皆具有fit_transform
、fit
、transform
、inverse_transform
等方法
重要屬性
.support_
返回所有的特徵是否最後被選中的boolean矩陣
.ranking_
返回特徵 按數次迭代中綜合重要性的排名
- 排名越前面的特徵越重要
RFECV
1 | from feature_selection import RFECV |
- 其會在交叉驗證循環中執行
RFE
以找到最佳數量的特徵 - 增加參數
cv
(交叉驗證的次數),其他用法與RFE
一模一樣
特徵選擇總結
- 過濾法較快速但是粗糙
- 包裝法和嵌入法更精確,計算量較大,運行時間長
- 數據量大時,優先使用方差過濾(
VarianceThreshold
)和互信息法(mutal_info_classif(regression)),再使用其他的特徵選擇方法 - Logistic Regression:優先使用嵌入法
- SVM:優先使用包裝法
- 不知道用哪個時,先使用過濾法