先看看博客上大家是怎么認為的吧:
如果用少量訓練數據訓練出來的模型(Ma)比使用全部數據但是經過特征裁剪訓練出來的模型(Mb)性能還要高,那么能說明什么問題?這里面兩個注意的地方,其一是少量數據產生的特征甚至還要比全部數據裁剪后的特征數量少很多,其二是如果用少量數據中的特征在全部數據上訓練得到模型Mc,我猜測性能會比Mb更低。如果猜想成立,那么又說明了什么呢。
在自然語言處理中,我感覺特征中的term比template要重要很多,而事實上一個具體的特征又會由很多term合並而成。那么特征分組是否可以考慮以term為單位,尤其是衡量特征的有效性。特征選擇(feature selection)是一種很有實用價值的技術,本質上來說是一種為數據挖掘消除數據噪聲的技術。但我們對某件事務進行判斷時,我們會根據以往的經驗根據 某些信息,而不是所有的信息做出判斷。比如,判斷一輛車的品牌,我們會去看車頭車尾的標志,更細致一點會去看車的銘牌,因為這是最權威,也是最容易判斷車 輛品牌的信息。如果根據車的外形去判斷車輛的品牌就有可能把QQ當作Spark,把F3當作花冠;如果根據車的價格去判斷,也會把奧迪和大奔弄混。也就是說,人做判斷時會選擇出最有效的信息來做出自己的抉擇。
計算機在面對類似問題的卻無法根據已有的經驗去選擇最有效的信息,而大量無效信息對於計算機來說就是噪聲,反而會影響計算機的判斷結果。如果是前面對車輛品牌進行判斷的例子,還可以人工的選擇出最有效的信息。但是如果面對的是DNA序列、復雜的圖片,那就只能依靠計算機了。於是這就誕生了特征選擇技 術,選出與結果最相關的特征,從而提高判斷的准確率。
http://www.zhizhihu.com/html/y2011/3188.html
特征選擇是指從一組給定的特征集中,按照某一准則選擇出一組具有良好區分特性的特征子集。特征選擇又稱獨立評估法,在進行特征選擇時一般都是利用某種評價函數獨立地對每個原始特征項進行評分,然后將它們按分值的高低排序,從中選取若干個分值最高的特征項。
特征選擇實際包含兩個方面:特征提取和特征選擇。特征提取是一種將數據從高維空間到低維空間的變換,達到降維的目的;特征選擇是指從一組特征中去除冗余或不相關的特征來降維。兩者常聯合使用。
特征選擇的作用主要是降低計算開銷和提高分類性能。即可以減小數據處理量、節省處理時間,減輕數據中噪聲的影響,提高信息處理系統的性能。
良好的特征集一般具有以下幾個特點:可區分性、可靠性、獨立性、數量少。
特征選擇的基本方法為:先產生特征子集(選擇算法),然后對子集進行評價(評價標准)。
特征子集的形成方法有:窮舉法、啟發法、隨機法。
評價函數可分為:
篩選器(評價函數與分類器無關)
封裝器(采用分類器的錯誤概率作為評價函數):距離測度、信息測度、相關性測度、一致性測度。
常見的特征提取方法有:主成分分析(PCA)、LDA(線性奇異分析)、獨立分量分析(ICA)、神經網絡、粗糙集屬性約簡等。而比較新的方法有:非線性降維方法、流形學習等,它們正成為特征選擇的研究熱點。
注:PCA與LDA的區別
PCA:非監督學習,把原始數據作為一類,使數據盡可能分開
LDA:有監督學習,已知兩類數據的類別,使該兩類盡可能分開
http://www.cnblogs.com/heaad/archive/2011/01/02/1924088.html
特征選擇是指從一組給定的特征集中,按照某一准則選擇出一組具有良好區分特性的特征子集。特征選擇又稱獨立評估法,在進行特征選擇時一般都是利用某種評價函數獨立地對每個原始特征項進行評分,然后將它們按分值的高低排序,從中選取若干個分值最高的特征項。
特征選擇實際包含兩個方面:特征提取和特征選擇。特征提取是一種將數據從高維空間到低維空間的變換,達到降維的目的;特征選擇是指從一組特征中去除冗余或不相關的特征來降維。兩者常聯合使用。
特征選擇的作用主要是降低計算開銷和提高分類性能。即可以減小數據處理量、節省處理時間,減輕數據中噪聲的影響,提高信息處理系統的性能。
良好的特征集一般具有以下幾個特點:可區分性、可靠性、獨立性、數量少。
特征選擇的基本方法為:先產生特征子集(選擇算法),然后對子集進行評價(評價標准)。
特征子集的形成方法有:窮舉法、啟發法、隨機法。
評價函數可分為:
篩選器(評價函數與分類器無關)
封裝器(采用分類器的錯誤概率作為評價函數):距離測度、信息測度、相關性測度、一致性測度。
常見的特征提取方法有:主成分分析(PCA)、LDA(線性奇異分析)、獨立分量分析(ICA)、神經網絡、粗糙集屬性約簡等。而比較新的方法有:非線性降維方法、流形學習等,它們正成為特征選擇的研究熱點。
注:PCA與LDA的區別
PCA:非監督學習,把原始數據作為一類,使數據盡可能分開
LDA:有監督學習,已知兩類數據的類別,使該兩類盡可能分開
(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種度量方法中,相關性、距離、信息增益、一致性屬於篩選器,而分類器錯誤率屬於封裝器。
篩選器由於與具體的分類算法無關,因此其在不同的分類算法之間的推廣能力較強,而且計算量也較小。而封裝器由於在評價的過程中應用了具體的分類算法進行分類,因此其推廣到其他分類算法的效果可能較差,而且計算量也較大。