特徵選擇常用算法綜述

//今天搜索beam搜索的時候看到這篇文章了=。=,感覺不錯。

1 綜述


(1) 什麼是特徵選擇

特徵選擇 ( Feature Selection )也稱特徵子集選擇( Feature Subset Selection , FSS ) ,或屬性選擇( Attribute Selection ) ,是指從全部特徵中選取一個特徵子集,使構造出來的模型更好。

 

(2) 爲什麼要做特徵選擇

       在機器學習的實際應用中,特徵數量往往較多,其中可能存在不相關的特徵,特徵之間也可能存在相互依賴,容易導致如下的後果:

Ø  特徵個數越多,分析特徵、訓練模型所需的時間就越長。

Ø  特徵個數越多,容易引起“維度災難”,模型也會越複雜,其推廣能力會下降。

 

特徵選擇能剔除不相關(irrelevant)或亢餘(redundant )的特徵,從而達到減少特徵個數,提高模型精確度,減少運行時間的目的。另一方面,選取出真正相關的特徵簡化了模型,使研究人員易於理解數據產生的過程。

 

 2 特徵選擇過程


2.1 特徵選擇的一般過程

 

       特徵選擇的一般過程可用圖1表示。首先從特徵全集中產生出一個特徵子集,然後用評價函數對該特徵子集進行評價,評價的結果與停止準則進行比較,若評價結果比停止準則好就停止,否則就繼續產生下一組特徵子集,繼續進行特徵選擇。選出來的特徵子集一般還要驗證其有效性。

       綜上所述,特徵選擇過程一般包括產生過程,評價函數,停止準則,驗證過程,這4個部分。

 

  (1) 產生過程( Generation Procedure )

         產生過程是搜索特徵子集的過程,負責爲評價函數提供特徵子集。搜索特徵子集的過程有多種,將在2.2小節展開介紹。

 

  (2) 評價函數( Evaluation Function )     

         評價函數是評價一個特徵子集好壞程度的一個準則。評價函數將在2.3小節展開介紹。

 

  (3) 停止準則( Stopping Criterion )

         停止準則是與評價函數相關的,一般是一個閾值,當評價函數值達到這個閾值後就可停止搜索。

 

  (4) 驗證過程( Validation Procedure )

         在驗證數據集上驗證選出來的特徵子集的有效性。

圖1. 特徵選擇的過程 ( M. Dash and H. Liu 1997 )


2.2 產生過程

      

產生過程是搜索特徵子空間的過程。搜索的算法分爲完全搜索(Complete),啓發式搜索(Heuristic),隨機搜索(Random) 3大類,如圖2所示。


 

圖2. 產生過程算法分類 ( M. Dash and H. Liu 1997 )


       下面對常見的搜索算法進行簡單介紹。


2.2.1完全搜索

      

  完全搜索分爲窮舉搜索(Exhaustive)與非窮舉搜索(Non-Exhaustive)兩類。

  (1) 廣度優先搜索( Breadth First Search )

         算法描述:廣度優先遍歷特徵子空間。

  算法評價:枚舉了所有的特徵組合,屬於窮舉搜索,時間複雜度是O(2n),實用性不高。


  (2)分支限界搜索( Branch and Bound )

         算法描述:在窮舉搜索的基礎上加入分支限界。例如:若斷定某些分支不可能搜索出比當前找到的最優解更優的解,則可以剪掉這些分支。


  (3) 定向搜索 (Beam Search )

         算法描述:首先選擇N個得分最高的特徵作爲特徵子集,將其加入一個限制最大長度的優先隊列,每次從隊列中取出得分最高的子集,然後窮舉向該子集加入1個特徵後產生的所有特徵集,將這些特徵集加入隊列。


  (4) 最優優先搜索 ( Best First Search )

         算法描述:與定向搜索類似,唯一的不同點是不限制優先隊列的長度。


2.2.2 啓發式搜索


  (1)序列前向選擇( SFS , Sequential Forward Selection )

  算法描述:特徵子集X從空集開始,每次選擇一個特徵x加入特徵子集X,使得特徵函數J( X)最優。簡單說就是,每次都選擇一個使得評價函數的取值達到最優的特徵加入,其實就是一種簡單的貪心算法。

  算法評價:缺點是隻能加入特徵而不能去除特徵。例如:特徵A完全依賴於特徵B與C,可以認爲如果加入了特徵B與C則A就是多餘的。假設序列前向選擇算法首先將A加入特徵集,然後又將B與C加入,那麼特徵子集中就包含了多餘的特徵A。


  (2)序列後向選擇( SBS , Sequential Backward Selection )

  算法描述:從特徵全集O開始,每次從特徵集O中剔除一個特徵x,使得剔除特徵x後評價函數值達到最優。

  算法評價:序列後向選擇與序列前向選擇正好相反,它的缺點是特徵只能去除不能加入。

  另外,SFS與SBS都屬於貪心算法,容易陷入局部最優值。


  (3) 雙向搜索( BDS , Bidirectional Search )

  算法描述:使用序列前向選擇(SFS)從空集開始,同時使用序列後向選擇(SBS)從全集開始搜索,當兩者搜索到一個相同的特徵子集C時停止搜索。

  雙向搜索的出發點是  。如下圖所示,O點代表搜索起點,A點代表搜索目標。灰色的圓代表單向搜索可能的搜索範圍,綠色的2個圓表示某次雙向搜索的搜索範圍,容易證明綠色的面積必定要比灰色的要小。

圖2. 雙向搜索


  (4) 增L去R選擇算法 ( LRS , Plus-L Minus-R Selection )

  該算法有兩種形式:

      <1> 算法從空集開始,每輪先加入L個特徵,然後從中去除R個特徵,使得評價函數值最優。( L > R )

    <2> 算法從全集開始,每輪先去除R個特徵,然後加入L個特徵,使得評價函數值最優。( L < R )

  算法評價:增L去R選擇算法結合了序列前向選擇與序列後向選擇思想, L與R的選擇是算法的關鍵。


  (5) 序列浮動選擇( Sequential Floating Selection )

  算法描述:序列浮動選擇由增L去R選擇算法發展而來,該算法與增L去R選擇算法的不同之處在於:序列浮動選擇的L與R不是固定的,而是“浮動”的,也就是會變化的。

    序列浮動選擇根據搜索方向的不同,有以下兩種變種。


    <1>序列浮動前向選擇( SFFS , Sequential Floating Forward Selection )


      算法描述:從空集開始,每輪在未選擇的特徵中選擇一個子集x,使加入子集x後評價函數達到最優,然後在已選擇的特徵中選擇子集z,使剔除子集z後評價函數達到最優。


    <2>序列浮動後向選擇( SFBS , Sequential Floating Backward Selection )


      算法描述:與SFFS類似,不同之處在於SFBS是從全集開始,每輪先剔除特徵,然後加入特徵。

           算法評價:序列浮動選擇結合了序列前向選擇、序列後向選擇、增L去R選擇的特點,並彌補了它們的缺點。


  (6) 決策樹( Decision Tree Method , DTM)

         算法描述:在訓練樣本集上運行C4.5或其他決策樹生成算法,待決策樹充分生長後,再在樹上運行剪枝算法。則最終決策樹各分支處的特徵就是選出來的特徵子集了。決策樹方法一般使用信息增益作爲評價函數。


2.2.3 隨機算法


  (1) 隨機產生序列選擇算法(RGSS, Random Generation plus Sequential Selection)

  算法描述:隨機產生一個特徵子集,然後在該子集上執行SFS與SBS算法。

  算法評價:可作爲SFS與SBS的補充,用於跳出局部最優值。


  (2) 模擬退火算法( SA, Simulated Annealing )

    模擬退火算法可參考 大白話解析模擬退火算法 。 

    算法評價:模擬退火一定程度克服了序列搜索算法容易陷入局部最優值的缺點,但是若最優解的區域太小(如所謂的“高爾夫球洞”地形),則模擬退火難以求解。


  (3) 遺傳算法( GA,  Genetic Algorithms )

    遺傳算法可參考 遺傳算法入門 。

    算法描述:首先隨機產生一批特徵子集,並用評價函數給這些特徵子集評分,然後通過交叉、突變等操作繁殖出下一代的特徵子集,並且評分越高的特徵子集被選中參加繁殖的概率越高。這樣經過N代的繁殖和優勝劣汰後,種羣中就可能產生了評價函數值最高的特徵子集。

    隨機算法的共同缺點:依賴於隨機因素,有實驗結果難以重現。



2.3 評價函數

      

評價函數的作用是評價產生過程所提供的特徵子集的好壞。

       評價函數根據其工作原理,主要分爲篩選器(Filter)、封裝器( Wrapper )兩大類。


篩選器通過分析特徵子集內部的特點來衡量其好壞。篩選器一般用作預處理,與分類器的選擇無關。篩選器的原理如下圖3:


圖3. Filter原理(Ricardo Gutierrez-Osuna 2008 )

 


封裝器實質上是一個分類器,封裝器用選取的特徵子集對樣本集進行分類,分類的精度作爲衡量特徵子集好壞的標準。封裝器的原理如圖4所示。

圖4. Wrapper原理 (Ricardo Gutierrez-Osuna 2008 )

 

 

       下面簡單介紹常見的評價函數。


 

  (1) 相關性( Correlation)

         運用相關性來度量特徵子集的好壞是基於這樣一個假設:好的特徵子集所包含的特徵應該是與分類的相關度較高(相關度高),而特徵之間相關度較低的(亢餘度低)。

         可以使用線性相關係數(correlation coefficient) 來衡量向量之間線性相關度。


  ( 2) 距離 (Distance Metrics )

         運用距離度量進行特徵選擇是基於這樣的假設:好的特徵子集應該使得屬於同一類的樣本距離儘可能小,屬於不同類的樣本之間的距離儘可能遠。

         常用的距離度量(相似性度量)包括歐氏距離、標準化歐氏距離、馬氏距離等。


 

  (3) 信息增益( Information Gain )

      

  假設存在離散變量Y,Y中的取值包括{y1,y2,....,ym} ,yi出現的概率爲Pi。則Y的信息熵定義爲:


    信息熵有如下特性:若集合Y的元素分佈越“純”,則其信息熵越小;若Y分佈越“紊亂”,則其信息熵越大。在極端的情況下:若Y只能取一個值,即P1=1,則H(Y)取最小值0;反之若各種取值出現的概率都相等,即都是1/m,則H(Y)取最大值log2m。

         在附加條件另一個變量X,而且知道X=xi後,Y的條件信息熵(Conditional Entropy)表示爲:

  在加入條件X前後的Y的信息增益定義爲

    類似的,分類標記C的信息熵H( C )可表示爲:

  將特徵Fj用於分類後的分類C的條件信息熵H( C | Fj )表示爲:

    選用特徵Fj前後的C的信息熵的變化成爲C的信息增益(Information Gain),用表示,公式爲:

  假設存在特徵子集A和特徵子集B,分類變量爲C,若IG( C|A ) > IG( C|B ) ,則認爲選用特徵子集A的分類結果比B好,因此傾向於選用特徵子集A。


 


  (4)一致性( Consistency )

           若樣本1與樣本2屬於不同的分類,但在特徵A、 B上的取值完全一樣,那麼特徵子集{A,B}不應該選作最終的特徵集。


 

  (5)分類器錯誤率 (Classifier error rate )

         使用特定的分類器,用給定的特徵子集對樣本集進行分類,用分類的精度來衡量特徵子集的好壞。

    

  以上5種度量方法中,相關性、距離、信息增益、一致性屬於篩選器,而分類器錯誤率屬於封裝器。

        

    篩選器由於與具體的分類算法無關,因此其在不同的分類算法之間的推廣能力較強,而且計算量也較小。而封裝器由於在評價的過程中應用了具體的分類算法進行分類,因此其推廣到其他分類算法的效果可能較差,而且計算量也較大。

 


參考資料

 

  [1] M. Dash, H. Liu, Feature Selection for Classification. In:Intelligent Data Analysis 1 (1997) 131–156.

 

  [2]Lei Yu,Huan Liu, Feature Selection for High-Dimensional Data:A Fast Correlation-Based Filter Solution

 

  [3] Ricardo Gutierrez-Osuna, Introduction to Pattern Analysis ( LECTURE 11: Sequential Feature Selection )

             http://courses.cs.tamu.edu/rgutier/cpsc689_f08/l11.pdf

來源:http://www.cnblogs.com/heaad/archive/2011/01/02/1924088.html
發佈了44 篇原創文章 · 獲贊 30 · 訪問量 17萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章