機器學習特徵選擇常用算法

2021-01-10 電子產品世界

1. 綜述

本文引用地址:http://www.eepw.com.cn/article/201807/383585.htm

(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)表示為:

假設存在特徵子集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種度量方法中,相關性、距離、信息增益、一致性屬於篩選器,而分類器錯誤率屬於封裝器。

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

相關焦點

  • 機器學習十大算法都是何方神聖?看完你就懂了
    大數據原本在工業界中就已經炙手可熱,而基於大數據的機器學習則更加流行,因為其通過對數據的計算,可以實現數據預測、為公司提供決策依據。跟我們生活息息相關的最常見機器學習算法包括電影推薦算法、圖書推薦算法。這些算法都是基於你的電影觀看記錄或圖書購買記錄來給你做推薦的。James Le 在 KDnuggets 上發布了一篇文章,介紹了他是如何入門機器學習的。
  • 曼孚科技:AI算法領域常用的39個術語(上)
    算法是人工智慧(AI)核心領域之一。本文整理了算法領域常用的39個術語,希望可以幫助大家更好地理解這門學科。1. Attention 機制Attention的本質是從關注全部到關注重點。將有限的注意力集中在重點信息上,從而節省資源,快速獲得最有效的信息。2.
  • 改進遺傳算法的支持向量機特徵選擇解決方案
    但是如果缺少了對樣本進行有效地特徵選擇,支持向量機在分類時往往會出現訓練時間過長以及較低的分類準確率,這恰恰是由於支持向量機無法利用混亂的樣本分類信息而引起的,因此特徵選擇是分類問題中的一個重要環節。特徵選擇的任務是從原始的特徵集合中去除對分類無用的冗餘特徵以及那些具有相似分類信息的重複特徵,因而可以有效降低特徵維數,縮短訓練時間,提高分類準確率。
  • 機器學習:入門方法與學習路徑 (附資料)
    3.2 典型算法 絕大多數問題用典型機器學習的算法都能解決,粗略地列舉一下這些方法如下: 處理分類問題的常用算法包括:邏輯回歸(工業界最常用),支持向量機,隨機森林,樸素貝葉斯(NLP中常用),深度神經網絡(視頻、圖片、語音等多媒體數據中使用)。
  • 回歸、分類與聚類:三大方向剖解機器學習算法的優缺點(附Python和R...
    所以,當你使用一個固定的數據測試集來評估性能,挑選最適合算法時,你應該針對你的問題嘗試多種不同的算法。當然,你所使用的算法必須要適合於你試圖解決的問題,這也就有了如何選擇正確的機器學習任務這一問題。做個類比,如果你需要打掃你的房子,你可能會用吸塵器、掃帚或者是拖把,但是你絕不會掏出一把鏟子然後開始挖地。
  • 機器學習算法中的概率方法
    摘要本文介紹機器學習算法中的概率方法。概率方法會對數據的分布進行假設,對概率密度函數進行估計,並使用這個概率密度函數進行決策。本文介紹四種最常用的概率方法:線性回歸 (用於回歸任務)、對數機率回歸 (用於二分類任務)、Softmax 回歸 (用於多分類任務) 和樸素貝葉斯分類器 (用於多分類任務)。
  • 清華大學發布首個自動圖機器學習工具包,開源易用可擴展
    機器之心報導機器之心編輯部如何應用自動機器學習 (AutoML) 加速圖機器學習任務的處理?清華大學發布全球首個開源自動圖學習工具包:AutoGL (Auto Graph Learning),支持在圖數據上全自動進行機器學習。人工智慧的蓬勃發展離不開數據、算力、算法這三大要素。
  • ...首個自動圖機器學習工具包AutoGL,開源易用可擴展,支持自定義模型
    機器之心報導機器之心編輯部如何應用自動機器學習 (AutoML) 加速圖機器學習任務的處理?清華大學發布全球首個開源自動圖學習工具包:AutoGL (Auto Graph Learning),支持在圖數據上全自動進行機器學習。人工智慧的蓬勃發展離不開數據、算力、算法這三大要素。
  • 超簡單機器學習入門好書推薦
    想要深入學習,可以先系統的看看相關的書籍和視頻課程,機器學習可以從兩個方向說起:學習算法和應用領域,如果你有足夠的機器學習知識,並對特定的領域有良好的理解,在職場供求中你肯定可以站在優勢的那一邊,以下為你推薦5本入門好書!1、周志華《機器學習理論導引》這本書為有志於學習和研究機器學習理論的讀者提供導引。
  • 人工智慧之K近鄰算法(KNN)
    前言:人工智慧機器學習有關算法內容,請參見公眾號「科技優化生活」之前相關文章。人工智慧之機器學習主要有三大類:1)分類;2)回歸;3)聚類。今天我們重點探討一下K近鄰(KNN)算法。^_^本文引用地址:http://www.eepw.com.cn/article/201806/381808.htm  K近鄰KNN(k-Nearest Neighbor)算法,也叫K最近鄰算法,1968年由 Cover 和 Hart 提出,是機器學習算法中比較成熟的算法之一。K近鄰算法使用的模型實際上對應於對特徵空間的劃分。KNN算法不僅可以用於分類,還可以用於回歸。
  • 深度學習和機器學習的線性代數入門
    正確理解機器學習和深度學習的概念,掌握以下這些數學領域至關重要:線性代數微積分矩陣分解概率論解析幾何機器學習和深度學習中的線性代數在機器學習中,很多情況下需要向量化處理,為此,掌握線性代數的知識至關重要。
  • 算法有沒有價值觀?知乎內容推薦算法解析
    因此,我們嘗試通過序列標註的方式來識別導流內容,提高算法的識別準確度。 模型常用的序列標註算法,有 HMM、CRF、RNN、BILSTM-CRF 等。BILSTM-CRF 在多個自然語言序列標註問題(NER、POS)上都表現優秀,同時,通過實驗,我們也發現 BILSTM-CRF 表現優於其他模型。
  • 美國德州農工大學胡俠教授:機器學習的可解釋性與自動機器學習 |...
    基於用戶的機器學習主要分兩方面:一、機器學習的入口。機器學習廣泛應用於各行各業,但要用好一個機器學習系統,把效果提升上去,就必須要有數據科學的背景。這大大阻礙了機器學習在各行各業的落地前景。二、數據的入口。如何做好自動的機器學習,即給定一個數據,系統自動推薦相應的深度學習算法,這是我想講的第二個問題。
  • AI Time 第二期:論道自動機器學習與可解釋機器學習
    梅俏竹:可解釋機器學習與自動機器學習並不矛盾自動機器學習與可解釋機器學習並不矛盾。全自動的機器學習,可以具有可解釋性,可解釋機器學習也可以是自動的。考慮一個簡單的問題,在做診斷時,一個強大的機器學習診斷系統能夠讀 X 光片,能夠判斷出患者是否患病。但是我們不僅要做診斷,還要把診斷結果描述給患者聽,最終讓病患接受醫生的建議。
  • 資料| 《 機器學習數學基礎 》
    《 機器學習數學基礎 》機器學習構建於數學語言之上,以表達看似直觀實則難以形式化的概念。一旦得到恰當的形式化,我們就可以使用數學工具推導出機器學習算法設計的選擇結果。這幫助我們理解正在解決的任務,同時了解智能的本質。全球數學專業的學生常見的一種抱怨是數學話題似乎與實際問題沒有什麼相關。我們認為機器學習是促使人們學習數學的直接動力。本書旨在作為構建現代機器學習基礎的大量數學文獻的指南。我們通過直接指出數學概念在基礎機器學習問題中的有用性來促進對數學概念學習的需求。
  • 一個簡單的案例帶你了解支持向量機算法(Python代碼)
    介紹掌握機器學習算法並不是一個不可能完成的事情。大多數的初學者都是從學習回歸開始的。是因為回歸易於學習和使用,但這能夠解決我們全部的問題嗎?當然不行!因為,你要學習的機器學習算法不僅僅只有回歸!把機器學習算法想像成一個裝有斧頭,劍,刀,弓箭,匕首等等武器的軍械庫。你有各種各樣的工具,但你應該學會在正確的時間和場合使用它們。
  • Python算法新手入門大全
    幾個印度小哥,在GitHub上建了一個各種Python算法的新手入門大全,現在標星已經超過2.6萬。這個項目主要包括兩部分內容:一是各種算法的基本原理講解,二是各種算法的代碼實現。簡單介紹下。算法的基本原理講解部分,包括排序算法、搜索算法、插值算法、跳躍搜索算法、快速選擇算法、禁忌搜索算法、加密算法等。
  • 最入門級別的機器學習圖書:Chris Bishop發布在線新書
    「我的問題看起來不能用任何標準算法解決。」機器學習對於入門者而言是令人畏懼的在本書中,作者從一個新的視角審視機器學習,即基於模型的機器學習。從這個視角來看,我們會更系統、清晰地了解創建高效機器學習解決方案的過程。本教程適應於全方位了解機器學習技術和應用,並有助於大家構建成功的機器學習解決方案。
  • 機器學習 · R語言包大全(共99個包)
    有很多R語言包都可以實現機器學習相關的思想和方法。spa:聯合基於特徵的和基於圖形的數據對某些因變量進行預測  綜合的包    Meta packages  caret: 提供許多函數建立預測模型,包括參數調整、變量重要性測量,跟並行算法(MPI、NWS等)可以結合使用
  • 機器學習遇見生物學:詳解蛋白質摺疊預測中的算法
    機器之心原創作者:王子嘉編輯:H4O蛋白質摺疊問題耗費巨大,而使用機器學習或許能夠更為高效、準確地解決這一難題。本文介紹了目前這一領域遇到的問題,以及機器學習怎樣幫助解決的具體算法。蛋白質摺疊問題一直是一個耗費巨大的難題,但是這個難題的解決又對人類具有巨大的意義。