1. 程式人生 > >2. 特徵工程之特徵選擇

2. 特徵工程之特徵選擇

1. 前言

當資料預處理完成後,我們需要選擇有意義的特徵輸入機器學習的演算法和模型進行訓練。

在做資料分析的時候,特徵的來源一般有兩塊,一塊是業務已經整理好各種特徵資料,我們需要去找出適合我們問題需要的特徵;另一塊是我們從業務特徵中自己去尋找高階資料特徵。我們就針對這兩部分來分別討論。

2. 特徵選擇的方法

通常來說,從兩個方面考慮來選擇特徵:

  • 特徵是否發散:如果一個特徵不發散,例如方差接近於0,也就是說樣本在這個特徵上基本上沒有差異,這個特徵對於樣本的區分並沒有什麼用。
  • 特徵與目標的相關性:這點比較顯見,與目標相關性高的特徵,應當優選選擇。除方差法外,本文介紹的其他方法均從相關性考慮。

特徵選擇方法有很多,一般分為三類:

  1. 過濾法(Filter)比較簡單,它按照特徵的發散性或者相關性指標對各個特徵進行評分,設定評分閾值或者待選擇閾值的個數,選擇合適特徵。上面我們提到的方差篩選就是過濾法的一種。
  2. 包裝法(Wrapper),根據目標函式,通常是預測效果評分,每次選擇部分特徵,或者排除部分特徵。
  3. 整合法(Embedded),它先使用某些機器學習的演算法和模型進行訓練,得到各個特徵的權值係數,根據權值係數從大到小來選擇特徵。

2.1 Filter

2.1.1 方差選擇法

使用方差選擇法,先要計算各個特徵的方差,然後根據閾值,選擇方差大於閾值的特徵。使用feature_selection庫的VarianceThreshold類來選擇特徵

2.1.2 相關係數法

使用相關係數法,先要計算各個特徵對目標值的相關係數以及相關係數的P值。用feature_selection庫的SelectKBest類結合相關係數來選擇特徵

2.1.3 卡方檢驗

經典的卡方檢驗是檢驗定性自變數對定性因變數的相關性。假設自變數有N種取值,因變數有M種取值,考慮自變數等於i且因變數等於j的樣本頻數的觀察值與期望的差距,構建統計量:

\[ \chi^2=\sum\frac{(A-E}^2}{E} \]

2.1.4 互資訊法

經典的互資訊也是評價定性自變數對定性因變數的相關性的。
\[ I(X,Y)=∫_X∫_YP(X,Y)log\frac{P(X,Y)}{P(X)P(Y)} \]

2.2 Wrapper

2.2.1 遞迴特徵消除法

遞迴消除特徵法使用一個基模型來進行多輪訓練,每輪訓練後,消除若干權值係數的特徵,再基於新的特徵集進行下一輪訓練。

2.3 Embedded

2.3.1 基於懲罰項的特徵選擇法

使用帶懲罰項的基模型,除了篩選出特徵外,同時也進行了降維。使用feature_selection庫的SelectFromModel類結合帶L1懲罰項的邏輯迴歸模型

2.3.2 基於樹模型的特徵選擇法

樹模型中GBDT也可用來作為基模型進行特徵選擇,使用feature_selection庫的SelectFromModel類結合GBDT模型

(歡迎轉載,轉載請註明出處。歡迎溝通交流: [email protected]