Hike News
Hike News

機器學習-特徵工程-特徵選擇-嵌入法

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 懲罰項

重要參數

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

總結

  • 比起必須思考很多統計量的過濾法來說,嵌入法可能是更有效的選擇
  • 過濾法計算較嵌入法快
    • 大型數據中,優先使用過濾法
    • 或使用結合過濾法和嵌入法的包裝法(wrapper)