關於機器學習特徵選擇的方法總結

機器學習特徵選擇的方法總結

1.特徵選擇的重要性

隨着深度學習的發展, 大大縮減了特徵提取和設計的任務。 不過, 特徵工程依然是各種機器學習應用領域的重要組成部分。其中對於特徵選擇(排序)的研究對於數據科學家、機器學習從業者來說非常重要。好的特徵選擇能夠提升模型的性能,更能幫助我們理解數據的特點、底層結構,對進一步改善模型、算法都有着重要作用。

特徵選擇主要有兩個功能:

  • 1.減少特徵數量、降維,使模型泛化能力更強,減少過擬合
  • 2.增強對特徵和特徵值之間的理解

特徵選擇的經典經驗總結起來主要有三種: 過濾式(Filter), 封裝式(Wrapper), 集成式(Embedded)。 接下來對這三大類進行詳細說明。

2.Filter 過濾式

顧名思義,就是要基於貪心的思想, 把需要的特徵篩/濾出來。 一般說來, 基於貪心就需要對特徵進行打分。 而這個打分可以基於領域知識, 相關性, 距離,缺失, 穩定性 等等。

2.1 單一特徵選擇

根據每個特徵屬性和目標屬性之間的計算值來進行排序選擇:

a. Welch’s t-Test: 來判斷兩個屬性的分佈的均值方差距離。
t=X1X2s12N1+s22N2 t=\frac{\overline{X}_{1}-\overline{X}_{2}}{\sqrt{\frac{s_{1}^{2}}{N_{1}}+\frac{s_{2}^{2}}{N_{2}}}}
b. Fish-Score: 和Welch’s t-Test類似, 計算兩個分佈的距離, 均值只差和方差之和的距離。
Si=k=1Knj(μijμi)2k=1Knjρij2 S_{i}=\frac{\sum_{k=1}^{K} n_{j}\left(\mu_{i j}-\mu_{i}\right)^{2}}{\sum_{k=1}^{K} n_{j} \rho_{i j}^{2}}
在這裏插入圖片描述
c. Chi-Squared test: 計算類別離散值之間的相關性。
χ2=i=1rj=1c(Oi,jEi,j)2Ei,j \chi^{2}=\sum_{i=1}^{r} \sum_{j=1}^{c} \frac{\left(O_{i, j}-E_{i, j}\right)^{2}}{E_{i, j}}
d. Information Gain:計算兩個劃分的一致性。
IG(fi,C)=H(fi)H(fiC) I G\left(f_{i}, \mathcal{C}\right)=H\left(f_{i}\right)-H\left(f_{i} | \mathcal{C}\right)

2.2 多特徵選擇

根據多個特徵屬性和目標屬性之間的計算值來進行排序選擇:

e. Relief-F: 根據隨機選擇的樣本點,來計算屬性之間的相關性。
Si=12k=1d(XikXiMk)d(XikXiHk) S_{i}=\frac{1}{2} \sum_{k=1}^{\ell} d\left(\mathbf{X}_{i k}-\mathbf{X}_{i M_{k}}\right)-d\left(\mathbf{X}_{i k}-\mathbf{X}_{i H_{k}}\right)
在這裏插入圖片描述
f. Correlation Feature Selection (CFS): 利用屬性之間的相關性, 進行選擇。
在這裏插入圖片描述

3. Wrapper 封裝式

通過目標函數來決定是否加入一個變量,就是先選定特定算法,然後再根據算法效果來選擇特徵集合。 一般會選用普遍效果較好的算法, 例如啓發式搜索,完全搜索,隨機搜索(GA,SA)等等。
在這裏插入圖片描述這可以使用前面提到的各種減小搜索空間的嘗試。 其中最經典的是使用啓發式搜索(Heuristic Search), 而概括的來說主要分爲兩大類:

g. Forward Selection: 挑出一些屬性, 然後慢慢增大挑出的集合。

h. Backward Elimination: 刪除一些屬性,然後慢慢減小保留的集合。

4. Embedded 集成式

利用正則化思想, 將部分特徵屬性的權重變成零。 常見的正則化有L1的Lasso,L2的Ridge和混合的Elastic Net。其中L1的算子有明顯的特徵選擇的功能。
在這裏插入圖片描述在這裏面,比較簡單的就是會自動進行特徵選擇, 而且一次性就搞定了, 速度也不錯, 難點就是損失函數的選擇和縮放參數的選擇。
4.1常見的損失函數:
在這裏插入圖片描述

  • Binary(0-1) loss: 灰線 對應錯誤率

  • Square loss: 紫線 對應最小二乘法
    V(f(x),y)=(1yf(x))2 V(f(\vec{x}), y)=(1-y f(\vec{x}))^{2}

  • Hinge loss: 淺藍 對應 SVM
    V(f(x),y)=max(0,1yf(x))=1yf(x)+ V(f(\vec{x}), y)=\max (0,1-y f(\vec{x}))=|1-y f(\vec{x})|_{+}

  • Logistic loss:紅線 對應 邏輯迴歸

V(f(x),y)=1ln2ln(1+eyf(x)) V(f(\vec{x}), y)=\frac{1}{\ln 2} \ln \left(1+e^{-y f(\vec{x})}\right)

  • Exponential loss:綠線 對應 adaboost
     exponential loss iϕ(i,y,f)=ieyif(xi) \text { exponential loss } \sum_{i} \phi(i, y, f)=\sum_{i} e^{-y_{i} f\left(x_{i}\right)}

4.2 結構化Lasso

除了上述的簡單的Lasso,還有結構化的Lasso。

i. Group Lasso: 先將屬性進行分組, 然後對每個分組,看成一個屬性那樣 的採用Lasso的方法選擇, 要麼全要, 要麼全部不要。 再進一步, Sparse Group Lasso再在組內進行選擇。
在這裏插入圖片描述j. Tree-Structured Lasso: 除了前面的扁平(Flat)的結構外, 還有層次化的結構。

在這裏插入圖片描述對於這種情況, 同樣採用類似Group Lasso的思想。 對於一個數的子結構, 要麼全要或者全不要,也可以允許分支單獨要。
在這裏插入圖片描述在這種樹結構的思想下, 那麼每個樹的分支的正則化懲罰也可以採用不同的形式。

在這裏插入圖片描述k. Graph Structure Lasso: 更進一步還可以推廣到基於圖的Lasso
在這裏插入圖片描述在圖的情況下, 那麼兩兩節點之間要定義一個懲罰項。
 penalt y(w,G)=λw1+(1λ)i,jAij(wiwj)2 \text { penalt } y(\mathbf{w}, \mathcal{G})=\lambda\|\mathbf{w}\|_{1}+(1-\lambda) \sum_{i, j} \mathbf{A}_{i j}\left(\mathbf{w}_{i}-\mathbf{w}_{j}\right)^{2}
樹結構Lasso也可以利用圖來表示。
在這裏插入圖片描述再次強調, 很多時候, 需要綜合上面的三種方式來進行綜合選擇。 特徵選擇不是一個容易的任務噢。
小結, 特徵選擇效果好還需要多實戰體會的, 下面再簡單歸納下:

Filter :

優點: 快速, 只需要基礎統計知識。

缺點:特徵之間的組合效應難以挖掘。

Wrapper:

優點: 直接面向算法優化, 不需要太多知識。

缺點: 龐大的搜索空間, 需要定義啓發式策略。

Embedded:

優點: 快速, 並且面向算法。

缺點: 需要調整結構和參數配置, 而這需要深入的知識和經驗。

參考內容:

http://www.rokkincat.com/blog/2016/04/28/feature-selection
https://mp.weixin.qq.com/s/TRgaqpokbNHXKS0E2Lz78A
http://www.denizyuret.com/2014/02/machine-learning-in-5-pictures.html

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章