特徵選擇之經典三刀

本文由作者授權發佈,未經許可,請勿轉載。

作者:侯江畔,網易杭州研究院算法工程師

數據決定了模型的上限,而算法只是去逼近這個上限。如何從海量特徵中科學提取關鍵特徵呢?

特徵選擇(Feature Selection)和特徵提取(Feature Extraction)是特徵工程(Feature Engineering)的兩個重要子內容。其中特徵提取是指從數據中找到可以表徵目的的屬性,而特徵選擇是從候選特徵中選出“優秀”的特徵。通過特徵選擇可以達到降維、提升模型效果、提升模型性能等效果,深度學習目前這麼火熱,其中一個重要原因是其減少了特徵選擇的工作,但對於機器學習,特徵選擇仍然是其應用中很重要的一步。
 

一、爲什麼要特徵選擇?

1.1特徵數量與分類器性能的關係


一般來說,進入模型的特徵數量與模型的效果之間滿足以下曲線,在某個位置達到最優。過多或過少都會使分類器的效果發生嚴重的下降。

1.2特徵不足的影響


當特徵不足時,極易發生數據重疊,這種情況下任何分類器都會失效。如下圖所示,僅依賴x1或x2都是無法區分這兩類數據的。

 

1.3特徵冗餘的影響


增加特徵可以理解爲向高維空間映射,當這個“維度”過高時,容易造成同類數據在空間中的距離邊遠,變稀疏,這也易使得很多分類算法失效。如下圖所示,僅依賴x軸本可劃分特徵,但y軸的引入使得同一類別不再聚集。



 

1.4特徵選擇的難點問題


首先我們已經明確,特徵選擇解決的工程問題是:當我們擁有大量特徵時,需要判斷哪些是相關特徵、哪些是不相關特徵。因而,特徵選擇的難點在於:其本質是一個複雜的組合優化問題。

當我們構建模型時,假設擁有N維特徵,每個特徵有兩種可能的狀態:保留和剔除。那麼這組狀態集合中的元素個數就是2­­N。如果使用窮舉法,其時間複雜度即爲O(2N)。假設N僅爲10時,如果窮舉所有特徵集合,需要進行1024次嘗試。這將是巨大的時間和計算資源的消耗,因而在特徵選擇時,我們需要找到明智的方法。
 

二、特徵選擇經典三刀

特徵選擇的經驗總結有三種方法:Fliter、Wrapper、Embedded。

 

2.1Filer


Filter故名思議就是過濾式方法,對過濾之後的特徵進行訓練,特徵選擇的過程與後序學習器無關。其評估手段是判斷單維特徵與目標變量之間的關係,常用的手段包括pearson相關係數、Gini係數、信息增益、方差校驗和相似度度量等。這裏選取Pearson係數與方差檢驗進行說明。
 

2.1.1方差


方差的統計學意義表徵的是數據分佈的“發散”程度,即方差越大數據分佈越不集中。而在特徵選擇中,我們往往認爲如果特徵分佈相對集中,即特徵取值差異不大,則其對分類器的貢獻值相對較小。

2.1.2 Pearson相關係數

Pearson係數能衡量分佈之間的線性相關性,但是計算相對複雜一些。其計算公式如下圖所示,但Pearson係數需要滿足的前提是兩個變量在誤差範圍之內服從高斯分佈。

 

2.2 Wrapper


Wrapper即封裝法,可理解爲將特徵選擇的過程與分類器封裝在一起,以一個分類器的交叉驗證結果,作爲特徵子集是否優秀的評估方式。

而特徵子集的產生方式分爲前向搜索與後向搜索兩種方法,在實現上,常見的方法有穩定性選擇(Stability Selection)和遞歸特徵消除(Recursive Feature Elimination)兩種方式。

2.2.1遞歸特徵消除

遞歸特徵消除的主要思想是,反覆構建模型,然後選出其中貢獻最差的特徵,把選出的特徵剔除,然後在剩餘特徵上繼續重複這個過程,直到所有特徵都已遍歷。這是一種後向搜索方法,採用了貪心法則。而特徵被剔除的順序,即是它的重要性排序。爲了增強穩定性,這裏模型評估常採用交叉驗證的方法。

2.2.2 穩定性選擇

這是對基於L1正則方法的一種補充,基於L1正則方法的侷限性在於:當面對一組關聯的特徵時,它往往只會選擇其中的一項特徵。爲了減輕該影響,使用了隨機化的技術,通過多次重新估計稀疏模型,用特徵被選擇爲重要的次數/總次數來表徵該特徵最終的重要程度。

穩定性選擇是一種基於抽樣和選擇相結合的方法,評估的方法可以是迴歸、SVM等可引入正則項的算法,理想情況下,重要特徵的得分會接近100%,而無用的特徵得分會接近於0.
 

2.3 Embedded


Embedded可以理解爲嵌入法,即使用分類器本身的特性進行特徵選擇。這種方法速度快,也易出效果,但需較深厚的先驗知識調節模型。

2.3.1 基於正則化的方法進行特徵選擇

線性模型也可用於特徵選擇。我們知道線性模型可以看作一個多項式模型,其中每一項的係數可以表徵這一維特徵的重要程度,越是重要的特徵在模型中對應的係數就會越大,而跟輸出變量越是無關的特徵對應的係數越接近於零。但線性模型無法解決相互之間不獨立的特徵,即是“多重共線性”,對離羣點或噪聲較爲敏感。


而在特徵選擇中,我們更常使用的是L1正則化與L2正則化。正則化在機器學習常常被作爲懲罰項,防止過擬合的發生,即上述公式的最後一項。其中,L1正則表示權值向量的絕對值之和,L2正則表示權值向量的平方和再開平方。當損失函數去均方誤差,正則項取L1時,即是LASSO迴歸;正則項取L2時即是Ridge迴歸。

2.3.1.1 L1正則化

目標函數在優化時常常使用梯度下降的方法,L1正則項是權值向量的絕對值之和,因此其對權值的偏導爲一常量,在梯度下降時,容易下降至0,這會導致 特徵稀疏,自然的淘汰不重要的特徵。這樣的特點使其可以天然的成爲特徵選擇的工具。雖然L1正則無法解決與線性模型相同的不穩定問題,但它的稀疏性仍然使其成爲特徵選擇的利器。

2.3.1.2 L2正則化

同理,因爲L2正則項是平方項之和,因此梯度下降的方向爲一個關於權值的表達式,梯度下降的過程則可以看作權值縮放的過程,它雖然不會使特徵稀疏,但對大數的懲罰力度大,因此可以使 各項權值趨於平均,解決線性模型與L1正則無法解決的不穩定問題,在特徵選擇時常常被用到。

2.3.2基於樹模型的特徵選擇

樹模型在學習時,是以純度爲評價基準,選擇最好的分裂屬性進行分裂,這本身也可以看作一個特徵選擇的過程。這裏選擇隨機森林爲選擇算法,在實現上,有平均不純度減少和平均精確度減少兩種。

2.3.2.1 平均不純度減少

樹模型的訓練過程,總在選擇最優的屬性將數據分裂,屬性的優劣是通過計算每個特徵對樹的不純度的減少程度。而對於隨機森林,可以計算 每課樹減少的不純度的平均值,作爲特徵的重要性係數。

但不純度方法存在一定的缺陷。不論哪種度量手段,都存在着一定的偏好。例如信息增益偏好取值多的屬性、信息增益率偏好取值少的屬性。且對於存在關聯的一組強特徵,率先被選擇的屬性重要性遠遠高於後被選擇的屬性,因爲某屬性一旦備選意味着數據集不純度會迅速下降,而其他屬性無法再做到這一點,容易對特徵的理解產生歧義。

2.3.2.2 平均精確率減少

平均精確度減少是直接度量每個特徵對模型精確率的影響。主要思路是打亂特徵的特徵值順序,度量順序變動對於模型精確率的影響。很明顯,對於不重要的變量,打亂順序對精確率影響不會太大,但重要的特徵,就會對精確率產生明顯的影響。
 

三、方法實現

我對上述常用方法進行了實現,抽象爲一個特徵分析的工具。

輸入:數據集特徵矩陣、數據集標籤值、特徵名稱

返回:所調用方法評估方式的特徵值得分
 

3.1 Filter


Pearson方法返回各個特徵的Pearson相關係數值。

Variance方法返回各個特徵的方差值。
 

3.2 Wrapper


RFECV是以交叉驗證爲評估方式的遞歸特徵消除方法,自定義參數nflod表示交叉驗證的k值,默認爲5;nstep大於等於1時表示每次剔除的特徵數目,小於1時表示按比例剔除特徵,默認爲1。

Stability_Selectio藉助隨機化LASSO模型實現的穩定性選擇方法,自定義參數n_model表示隨機模型的數量,默認200。
 

3.3 Embedded


L1_Regularization使用了帶有L1正則的線性迴歸,即LASSO方法。自定義參數al表示懲罰項係數,越大結果越稀疏,默認爲0.1。

L2_Regularization使用了帶有L2正則的線性迴歸,即Ridge方法。自定義參數al表示懲罰項係數,越大結果越均勻,默認爲1.0。

Mean_Decrease_Impurity是使用了隨機森林爲評價函數的平均不純度減少方法。

Mean_Decrease_accuracy是使用隨機森林爲評價方法的平均精確率減少方法。
 

四、總結

特徵選擇是一個非常重要的數據預處理過程。進行特徵選擇有兩個重要的意義:首先,我們經常會遇到維數災難問題,若能從中選擇出重要的特徵,使得後序學習僅在一部分特徵上構建模型,維數災難問題會大爲減輕。筆者自己的一個業務,通過特徵選擇後,準確率基本不變的情況下,維度降低了29維。第二個原因是去除不相關特徵往往會降低學習的難度。並且特徵分析有助於我們理解特徵背後表徵的具體含義,尤其是面對安全問題時,筆者認爲特徵背後的表徵意義並不低於機器學習的結果。

總之,希望可以有助於大家 用最少的資源,完成最好的業務。

發佈了652 篇原創文章 · 獲贊 284 · 訪問量 59萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章