繪制了一張導圖,有不對的地方歡迎指正:
下載地址
機器學習中,特征是很關鍵的.其中包括,特征的提取和特征的選擇.他們是降維的兩種方法,但又有所不同:
特征抽取(Feature Extraction):Creatting a subset of new features by combinations of the exsiting features.也就是說,特征抽取后的新特征是原來特征的一個映射。
特征選擇(Feature Selection):choosing a subset of all the features(the ones more informative)。也就是說,特征選擇后的特征是原來特征的一個子集。
特征提取
最好的情況下,當然是有專家知道該提取什么樣的特征,但是在不知道的前提下,一般的降維方法可以派上用場:(from wiki)
- Principal component analysis
- Semidefinite embedding
- Multifactor dimensionality reduction
- Multilinear subspace learning
- Nonlinear dimensionality reduction
- Isomap
- Kernel PCA
- Multilinear PCA
- Latent semantic analysis
- Partial least squares
- Independent component analysis
- Autoencoder
(1)Signal representation(信號表示): The goal of the feature extraction mapping is to represent the samples accurately in a low-dimensional space. 也就是說,特征抽取后的特征要能夠精確地表示樣本信息,使得信息丟失很小。對應的方法是PCA.
(2)Signal classification(信號分類): The goal of the feature extraction mapping is toenhance the class-discriminatory information in a low-dimensional space. 也就是說,特征抽取后的特征,要使得分類后的准確率很高,不能比原來特征進行分類的准確率低。對與線性來說,對應的方法是LDA .
在圖像處理方面,有廣泛的應用.
特征選擇
主要過程:
(1)產生過程
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)評價函數
(1) 相關性( Correlation)------------filter
運用相關性來度量特征子集的好壞是基於這樣一個假設:好的特征子集所包含的特征應該是與分類的相關度較高(相關度高),而特征之間相關度較低的(亢余度低)。
可以使用線性相關系數(correlation coefficient) 來衡量向量之間線性相關度。
( 2) 距離 (Distance Metrics )------------filter
運用距離度量進行特征選擇是基於這樣的假設:好的特征子集應該使得屬於同一類的樣本距離盡可能小,屬於不同類的樣本之間的距離盡可能遠。
常用的距離度量(相似性度量)包括歐氏距離、標准化歐氏距離、馬氏距離等。
(3) 信息增益( Information Gain )------------filter
假設存在離散變量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 )-------------filter
若樣本1與樣本2屬於不同的分類,但在特征A、 B上的取值完全一樣,那么特征子集{A,B}不應該選作最終的特征集。
(5)分類器錯誤率 (Classifier error rate )---------------wrapper
使用特定的分類器,用給定的特征子集對樣本集進行分類,用分類的精度來衡量特征子集的好壞。
以上5種度量方法中,相關性、距離、信息增益、一致性屬於篩選器,而分類器錯誤率屬於封裝器。
(3)停止准則
(4)驗證過程
主要分3類:(from wiki)
Filter Method
思想:與模型無關.基於一些變特征的衡量標准(即給每一個特征打分,表示這個特征的重要程度),排序后除去那些得分較低的特征..
主要方法:
1.Chi-squared test(卡方檢驗)
2.information gain(信息增益)或信息增益率
3.correlation coefficient scores(相關系數)
優點:計算時間上較高效,對於過擬合問題具有較高的魯棒性
缺點:傾向於選擇冗余的特征,因為他們不考慮特征之間的相關性,有可能某一個特征的分類能力很差,但是它和某些其它特征組合起來會得到不錯的效果
Wrapper Method
思想:根據不同的特征集合所獲得的預測效果建立一個黑盒學習,不斷優化.
通過目標學習算法來評估特征集合
假如有p個特征,那么就會有2p種特征組合,每種組合對應了一個模型。Wrapper類方法的思想是枚舉出所有可能的情況,從中選取最好的特征組合。
這種方式的問題是:由於每種特征組合都需要訓練一次模型,而訓練模型的代價實際上是很大的,如果p非常大,那么上述方式顯然不具有可操作性。下面介紹兩種優化的方法:forward search(前向搜索)和backward search(后向搜索)。
forward search初始時假設已選特征的集合為空集,算法采取貪心的方式逐步擴充該集合,直到該集合的特征數達到一個閾值,該閾值可以預先設定,也可以通過交叉驗證獲得。算法的偽碼如下:
對於算法的外重循環,當F中包含所有特征時或者F中的特征數達到了閾值,則循環結束,算法最后選出在整個搜索過程中最優的特征集合。
backward search初始時假設已選特征集合F為特征的全集,算法每次刪除一個特征,直到F的特征數達到指定的閾值或者F被刪空。該算法在選擇刪除哪一個特征時和forward search在選擇一個特征加入F時是一樣的做法。
將子集的選擇看作是一個搜索尋優問題,生成不同的組合,對組合進行評價,再與其他的組合進行比較。這樣就將子集的選擇看作是一個優化問題,
主要方法:recursive feature elimination algorithm(遞歸特征消除算法).這里有很多的優化算法可以解決,尤其是一些啟發式的優化算法,如GA,PSO,DE,ABC等,詳見“優化算法——人工蜂群算法(ABC)”,“優化算法——粒子群算法(PSO)”。
優點:考慮到特征與特征之間的關聯性
缺點:1.當觀測數據較少時容易過擬合;2.當特征數量較多時,計算時間增長;
Embedded Method(折中)
思想:旨在集合filter和wrapper方法的優點(時間復雜度較低,並且也考慮特征之間的組合關系),在事先了解什么是好的特征的的前提下才可以使用該方法
主要方法:正則化,可以見“簡單易學的機器學習算法——嶺回歸(Ridge Regression)”,嶺回歸就是在基本線性回歸的過程中加入了正則項。我們知道L1正則化自帶特征選擇的功能,它傾向於留下相關特征而刪除無關特征。比如在文本分類中,我們不再需要進行顯示的特征選擇這一步,而是直接將所有特征扔進帶有L1正則化的模型里,由模型的訓練過程來進行特征的選擇。
優點:集合了前面兩種方法的優點
缺點:必須事先知道什么是好的選擇
一般來說,特征選擇算法的選用需要考慮下因素:
1) 分類器的性能。要顯著提高學習算法的性能,可以采用 Wrapper 模型。例如可以選用采用啟發式搜索策略的 SBS-SLASH 算法,或基於遺傳算法的Wrapper 方法(GA)。
2) 能否去除冗余特征。如果只是要去除不相關的特征,可以采用 Relief 系列算法、互信息法(MI)或 Symmetric Uncertainty,這些算法可以有效的去除和類別不相關的特征,但是無法去除冗余特征。若要同時除去不相關的和冗余特征,可采用 CFS 算法或 FCBF。另外還可以考慮多種算法的結合,例如先用 Relief 算法快速去除不相關的特征,然后采用一種 Wrapper 方法去除冗余特征。
3) 數據集的規模。對於小規模數據,可以采用使用完全搜索策略的 Filter 模型或 Wrapper 模型,例如 BB、BFF、Bobro。對於大規模數據,一般采用運行速度快的 Filter 模型,例如 Relief 系列算法及 FCBF。
4) 類別信息。目前非監督的特征選擇算法還比較少,在樣本類別未知的情況下,需要選用無監督的特征選擇算法,例如 Dash 等提出的一種基於熵的 Filter模型。
5) 數據集的數據類型。Relief 系列算法可以處理數值的(numeric)或名詞性的(nominal)屬性。互信息(MI)、FCBF 在處理連續的數值屬性時,需要預
先對特征離散化。BB、BFF 及 Bobro 等則不能處理名詞性的屬性
Ref:
Guyon, I., & Elisseeff, A. (2003). An introduction to variable and feature selection. The Journal of Machine Learning Research, 3, 1157-1182.
Hall, M. A. (1999). Correlation-based feature selection for machine learning (Doctoral dissertation, The University of Waikato).(第3\4章)
Kohavi, R., & John, G. H. (1997). Wrappers for feature subset selection.Artificial intelligence, 97(1), 273-324.
M. Dash, H. Liu, Feature Selection for Classification. In:Intelligent Data Analysis 1 (1997) 131–156.
Lei Yu,Huan Liu, Feature Selection for High-Dimensional Data:A Fast Correlation-Based Filter Solution
Ricardo Gutierrez-Osuna, Introduction to Pattern Analysis ( LECTURE 11: Sequential Feature Selection )
http://courses.cs.tamu.edu/rgutier/cpsc689_f08/l11.pdf
http://blog.csdn.net/henryczj/article/details/41043883
http://www.cnblogs.com/heaad/archive/2011/01/02/1924088.html