【特徵工程】特徵選擇與特徵學習
在機器學習的具體實踐任務中,選擇一組具有代表性的特徵用於構建模型是非常重要的問題。特徵選擇通常選擇與類別相關性強、且特徵彼此間相關性弱的特徵子集,具體特徵選擇演算法通過定義合適的子集評價函數來體現。 在現實世界中,數據通常是複雜冗餘,富有變化的,有必要從原始數據發現有用的特性。人工選取出來的特徵依賴人力和專業知識,不利於推廣。於是我們需要通過機器來學習和抽取特徵,促進特徵工程的工作更加快速、有效。
特徵選擇特徵選擇的目標是尋找最優特徵子集。特徵選擇能剔除不相關(irrelevant)或冗餘(redundant )的特徵,從而達到減少特徵個數,提高模型精確度,減少運行時間的目的。另一方面,選取出真正相關的特徵簡化模型,協助理解數據產生的過程。 特徵選擇的一般過程如下圖所示:
圖中,(1)子集產生:按照一定的搜索策略產生候選特徵子集;(2)子集評估:通過某個評價函數評估特徵子集的優劣;(3)停止條件:決定特徵選擇演算法什麼時候停止;(4)子集驗證:用於驗證最終所選的特徵子集的有效性。特徵選擇的搜索策略
特徵選擇的搜索策略分為:完全搜索策略、啟發式策略以及隨機搜索策略。 特徵選擇本質上是一個組合優化問題,求解組合優化問題最直接的方法就是搜索,理論上可以通過窮舉法來搜索所有可能的特徵組合,選擇使得評價標準最優的特徵子集作為最後的輸出,但是n個特徵的搜索空間為2n,窮舉法的運算量隨著特徵維數的增加呈指數遞增,實際應用中經常碰到幾百甚至成千上萬個特徵,因此窮舉法雖然簡單卻難以實際應用。其他的搜索方法有啟發式的搜索和隨機搜索,這些搜索策略可以在運算效率和特徵子集質量之間尋找到一個較好的平衡點,而這也是眾多特徵選擇演算法努力的目標。 * 完全搜索(Complete)
廣度優先搜索( Breadth First Search ) 廣度優先遍歷特徵子空間。枚舉所有組合,窮舉搜索,實用性不高。 分支限界搜索( Branch and Bound ) 窮舉基礎上加入分支限界。例如:剪掉某些不可能搜索出比當前最優解更優的分支。 其他,如定向搜索 (Beam Search ),最優優先搜索 ( Best First Search )等
啟發式搜索(Heuristic)
序列前向選擇(SFS,Sequential Forward Selection) 從空集開始,每次加入一個選最優。 序列後向選擇(SBS,Sequential Backward Selection) 從全集開始,每次減少一個選最優。 增L去R選擇演算法 (LRS,Plus-L Minus-R Selection) 從空集開始,每次加入L個,減去R個,選最優(L>R)或者從全集開始,每次減去R個,增加L個,選最優(L
特徵選擇演算法
特徵選擇和機器學習演算法兩者存在緊密的聯繫,根據特徵選擇中子集評價標準和後續學習演算法的結合方式可分為嵌入式(Embedded)、過濾式(Filter)和封裝式(Wrapper)式三種。
嵌入式特徵選擇 在嵌入式特徵選擇中,特徵選擇演算法本身作為組成部分嵌入到學習演算法里。最典型的即決策樹演算法,如ID3、C4.5以及CART算 法等,決策樹演算法在樹增長過程的每個遞歸步都必須選擇一個特徵,將樣本集劃分成較小的子集,選擇特徵的依據通常是劃分後子節點的純度,劃分後子節點越純,則說明劃分效果越好,可見決策樹生成的過程也就是特徵選擇的過程。
過濾式特徵選擇 過濾式特徵選擇的評價標準從數據集本身的內在性質獲得,與特定的學習演算法無關,因此具有較好的通用性。通常選擇和類別相關度大的特徵或者特徵子集。過濾式特徵選擇的研究者認為,相關度較大的特徵或者特徵子集會在分類器上可以獲得較高的準確率。過濾式特徵選擇的評價標準分為四種,即距離度量、信息度量、關聯度度量以及一致性度量。 過濾式特徵選擇演算法的優缺點分別是:
優點:演算法的通用性強;省去了分類器的訓練步驟,演算法複雜性低,因而適用於大規模數據集;可以快速去除大量不相關的特徵,作為特徵的預篩選器非常合適。 缺點:由於演算法的評價標準獨立於特定的學習演算法,所選的特徵子集在分類準確率方面通常低於Wrapper方法。
封裝式特徵選擇 封裝式特徵選擇是利用學習演算法的性能來評價特徵子集的優劣。因此,對於一個待評價的特徵子集,Wrapper方法需要訓練一個分類器,根據分類器的性能對該特徵子集進行評價。Wrapper方法中用以評價特徵的學習演算法是多種多樣的,例如決策樹、神經網路、貝葉斯分類器、近鄰法以及支持向量機等等。 封裝式特徵選擇演算法的優缺點分別是:
優點:相對於Filter方法,Wrapper方法找到的特徵子集分類性能通常更好。 缺點:Wrapper方法選出的特徵通用性不強,當改變學習演算法時,需要針對該學習演算法重新進行特徵選擇;由於每次對子集的評價都要進行分類器的訓練和測試,所以演算法計算複雜度很高,尤其對於大規模數據集來說,演算法的執行時間很長。
有效性分析
對特徵的有效性進行分析,得到各個特徵的特徵權重,根據是否與模型有關可以分為: 1.與模型相關特徵權重,使用所有的特徵數據訓練出來模型,看在模型中各個特徵的權重,由於需要訓練出模型,模型相關的權重與此次學習所用的模型比較相關。不同的模型有不同的模型權重衡量方法。例如線性模型中,特徵的權重係數等。 2.與模型無關特徵權重。主要分析特徵與label的相關性,這樣的分析是與這次學習所使用的模型無關的。 與模型無關特徵權重分析方法包括(1)交叉熵,(2)Information Gain,(3)Odds ratio,(4)互信息,(5)KL散度等。
特徵學習特徵學習可以分為監督特徵學習和無監督特徵學習: 監督特徵學習包括監督字典學習、神經網路、多層感知機;無監督特徵學習包括無監督字典學習、主成分分析、獨立成分分析、自編碼器、矩陣分解和各種形式的聚類演算法。
監督特徵學習
監督字典學習 字典學習是從輸入數據中學習一組代表元素的字典,其中每個數據都可以表示為代表元素的加權和。通過最小化帶有L1正則項的平均誤差來確定字典元素和權重,並保證權重稀疏。 監督字典學習利用輸入數據和標籤的隱含結構來優化字典元素。
神經網路 神經網路是用來描述一系列學習演算法,通過相互關聯的節點構成的多層網路。它是受神經系統的啟發,其中節點可以看做是神經元,邊可以看成是突觸。每個邊都有相對應的權重,網路定義了計算規則,將數據從輸入層傳遞到輸出層。 多層神經網路可以用來進行特徵學習,因為它們可以學習在隱藏層中的輸出的表示。
非監督特徵學習非監督特徵學習的目標是捕捉高維數據中的底層結構,挖掘出低維的特徵。 K-means聚類 K-means聚類是一種矢量量化的方法,給定一組向量,K-means演算法將這些數據組織成k個子集,使得每個向量屬於最近的均值所在的子集。 在特徵學習中,K-means演算法可以將一些沒有標籤的輸入數據進行聚類,然後使用每個類別的質心來生成新的特徵。 最簡單的方法是在每個輸入樣本中加入K個二元特徵,其中當且僅當第j個質心距離採樣數據最近時,第j個特徵置為1。另一種方式是利用到子集的距離作為特徵,或者是經過徑向基函數進行轉換的子集距離。
主成分分析(Principal component analysis) 主成分分析主要用於降維。給定無標籤的數據集,PCA生成p個奇異值向量(p遠遠小於數據的維度),對應數據矩陣中p個最大的奇異值。這p個奇異值向量是從輸入數據中學習的特徵向量,它們代表了數據具有最大方差的方向。 PCA是一種線性特徵學習方法,因為p個奇異指向量是數據矩陣的線性方程。 PCA有幾點局限:首先,它假設最大方差的方向是最感興趣的,而實際上很多應用中可能不是。PCA依賴於原始數據的正交變換,它只挖掘了數據的一階、二階矩,這並沒有很好的表徵數據分布。最後,PCA只有在輸入數據向量是相關的情況下才能很好地降維。
局部線性嵌入(Local linear embedding) 局部線性嵌入(LLE)是一種非線性的非監督學習方法,用來從未標註的高維輸入中生成低維的近鄰保持表徵。 LLE的一般思想是,通過保持原有數據集的部分集合特性的低維數據來重構原始高維數據。LLE包含兩個主要步驟,第一步是近鄰保持(neighbor-preserving),其中每個輸入數據Xi通過K近鄰數據點的加權和重構,並且通過最小化平均平方重構誤差(average squared reconstruction error)找到最優權重;第二步是降維(dimension reduction),在低維空間中尋找向量,該向量使用第一步的權重可以最小化表示誤差。 相比PCA,LLE對於利用數據的隱含結構能力更強大。
獨立成分分析(Independent component analysis) 獨立成分分析是利用獨立非高斯成分的加權和學習數據表示的技術。非高斯前提的強制條件是因為當所有成分滿足高斯分布時權重無法唯一確定。
無監督字典學習(Unsupervised dictionary learning) 與監督字典學習不同的是,非監督字典學習不利用數據的標籤,只是利用數據的潛在結構來優化字典元素。無監督字典學習的例子是稀疏編碼,它用來重無標籤數據中學慣用於數據表示的基函數(即字典元素)。稀疏編碼可以用來學習超完備字典(overcomplete dictionary),其中字典元素的數目要遠遠大約輸入數據的維度。K-SVD是用於從無標記數據中學習數據稀疏表示的字典。
深度學習分層結構的神經系統啟發了由簡單學習模塊構成的多層深度學習架構來進行特徵學習。 在深度學習體系中每個中間層的輸出可以看做是原始輸入數據的一種表示,每層利用上一層中產生的表示作為輸入,生成新的表示作為輸出,提供給更高層。輸入的底層是原始數據,而最終層輸出的是最後的低維特徵或表徵。
受限玻爾茲曼機(Restricted Boltzmann Machine) 首先玻爾茲曼常常用來構建多層學習結構。它可以用包含一組二元隱含變數、一組可見變數、連接隱含節點和可見節點的邊的無向二分圖(undirected bipartite graph)來表示,它是無內節點連接的廣義玻爾茲曼機的特例。RBM的每個邊有一個權重,這些權重聯繫在一起定義了一個能量方程,該方程基於可見和隱含節點的聯合分布。基於RBM的拓撲學,隱含變數和可見變數是條件獨立的,這一特性便於RBM的計算。 RBM可以看做是無監督特徵學習的一層,可見變數對應輸入數據,隱含變數對應特徵探測器(feature detectors)。利用對比散度演算法(contrastive divergence)來最大可見變數的概率,訓練權重。 一般而言,上述RBM的訓練問題得到的是非稀疏的表示,而稀疏RBM,作為RBM的一種修正版本,是通過在數據似然的目標函數中添加正則化方法,來懲罰小常量中期望隱含變數的偏差。
自編碼器(Autoencoder) 自編碼器有編碼器和解碼器組成。編碼器使用原始數據作為輸入,生成特徵或表徵,解碼器利用編碼器抽取的特徵來作為輸入,重建原始輸入數據並輸出。編碼器和解碼器是由多層RBM構成。結構中的參數通過層與層的貪婪方式訓練得到:在一層特徵探測器學習之後,它們被提供給上層作為可見變數用於響應RBM的訓練,該過程一直重複直到停止條件滿足方結束。
轉載請註明作者Jason Ding及其出處 Github博客主頁(http://jasonding1354.github.io/) GitCafe博客主頁(http://jasonding1354.gitcafe.io/) CSDN博客(http://blog.csdn.net/jasonding1354) 簡書主頁(http://www.jianshu.com/users/2bd9b48f6ea8/latest_articles) Google搜索jasonding1354進入我的博客主頁
推薦閱讀:
※《群書治要360》學習分享(第一三六集)
※游泳教程游泳基礎教程游泳學習教程
※無量壽經科註第四回學習班【第90集】
※李中梓《診家正眼》脈象學習
※【新提醒】如何學習書法欣賞書法 著名書法家舒炯支招