Introduction
- 嵌入法(Embedded)是讓演算法自己決定使用那些特徵的方法
- 特徵選擇 及 演算法訓練 同時進行
- 特徵的選擇是依賴模型的表現來進行選擇,因此為一循環過程
- Embedded method
- 最後得到各個特徵的權值,根據權值從大到小選擇特徵
- 相比過濾法,嵌入法的篩選的特徵更為精確,對模型更有效
- 缺點1:無法有效界定有用特徵 權值係數的臨界值
- 不像過濾法有p值可幫助我們做界定
- 只能說要是權值係數為0時,則對模型毫無貢獻
- 改善方法:
- 權值係數作為 超參數,使用學習曲線方法進行調參
- 根據 模型本身性質 判斷權值係數範圍
- 缺點2:因為其是引入演算法來挑選特徵,且會使用全部特徵
- 計算時間與所使用的演算法 及 數據量有關係
from sklearn.feature_selection import SelectFromModel
SelectFromModel
- 為一種 元轉換器
- 可與任何擬合後具有
coef_
,feature_importances_
屬性 或 參數中可選懲罰項的評估器合用- RandomForest, DecisionTree:具有
feature_importances_
(取值範圍為0-1)- 若重要性低於閥值:特徵不重要
- LogisticRegression:l1,l2 懲罰項
- SVM:l2 懲罰項
- RandomForest, DecisionTree:具有
重要參數
estimator
所使用的演算法模型,只要是帶feature_importances_
or coef_
屬性 or 帶有 l1, l2懲罰項的演算法都可以使用
- 必須將模型實例化後,填入實例化的模型變量
threshold
特徵重要性的閥值,重要性低於指定的值都將被刪除
- 挑選threshold的值非常重要,其決定刪掉多少特徵
- 其為超參數
- 使用學習曲線方法調教此參數
方法
fit_transform
與其他轉換器不一樣的是fit_transform
參數中須放入兩個參數
X_Embedded = SelectFromModel(estimator=RFC_,threshold=0.005).fit_transform(X,y)
- 第一個參數須放入欲轉換的feature矩陣
X
- 第二個參數為Label矩陣
y
- 第一個參數須放入欲轉換的feature矩陣
總結
- 比起必須思考很多統計量的過濾法來說,嵌入法可能是更有效的選擇
- 過濾法計算較嵌入法快
- 大型數據中,優先使用過濾法
- 或使用結合過濾法和嵌入法的包裝法(wrapper)