1. 程式人生 > >機器學習筆記(十一)特徵選擇和稀疏學習

機器學習筆記(十一)特徵選擇和稀疏學習

建議檢視原貼  轉載只是為了方便複習,查詢

11.特徵選擇和稀疏學習 11.1子集搜尋與評價 物件都有很多屬性來描述,屬性也稱為特徵(feature),用於刻畫物件的某一個特性。對一個學習任務而言,有些屬性是關鍵有用的,而有些屬性則可能不必要納入訓練資料。對當前學習任務有用的屬性稱為相關特徵(relevant feature)、無用的屬性稱為無關特徵(irrelevantfeature)。從給定的特徵集合中選擇出相關特徵子集的過程,稱為特徵選擇(feature selection)。

特徵選擇時一個數據預處理(data preprocessing)過程,在現實機器學習任務中,基於避免維數災難和降低不相關特徵帶來的學習難度,在獲得資料之後往往會先進行特徵選擇再訓練學習器。當然特徵選擇要確保不丟失重要特徵。給定資料集,若學習任務不同,則相關特徵很可能不同,因此無關特徵是指與當前學習任務無關。若一個屬性是從其他屬性中推演而出的,則成為冗餘特徵(redundant feature)。

假定資料中不涉及冗餘特徵,並假定初始的特徵集包含了所有的重要資訊,那麼如何進行特徵選擇呢?要從初始的特徵集合中選取一個包含了所有重要資訊的特徵子集,若沒有任何領域知識作為先驗假設,那就只有遍歷所有子集,這計算開銷相當大,一旦屬性稍多就會出現組合爆炸。較為可行的一個做法是:先產生一個候選子集,然後評價,基於評價結果產生下一輪候選子集,再評價…如此下去,直至無法找到更好的候選子集。這個做法就關係兩個很重要的過程:如何評價候選子集的優劣?又如何根據評價結果遴選下一輪候選子集呢?

1)子集搜尋(subsetsearch)

給定特徵集合{a1,a2,…,ad},可將每個特徵看做一個候選子集,對這d個候選單特徵子集進行評價,選出一個最優的,然後加入一個特徵,構成包含兩個特徵的候選子集…假定在k+1輪時,最後的候選(k+1)個特徵子集不如上一輪的選定集,則停止生成候選子集,並將上一輪選定的k特徵集合作為特徵選擇結果。上述這種逐漸增加相關特徵的策略稱為前向(forward)搜尋。如果從完整的特徵集合開始,每次嘗試去掉一個無關特徵,這樣逐漸減少特徵的策略稱為後向(backward)搜尋。也可將前後和後向搜尋結合起來,每一輪逐漸增加選定相關特徵、同時減少無關特徵,這樣的策略稱為雙向(bidirectional)搜尋。

上述策略是貪心的,因為它們僅僅考慮了使本輪選定集最優,如在第三輪假定a5優於a6,於是選定集為{a2,a4,a5},然後在第四輪卻可能是{a2,a4,a6,a8}優於所有的{a2,a4,a5,ai}。要解決這個問題,就只能進行窮舉搜尋。

2)子集評價(subsetevaluation)

給定資料集D,假定D中第i類樣本所佔的比例為pi(i=1,2,…,|y|),假定樣本屬性均為離散型。對屬性子集A,假定根據其取值將D分成了V個子集{D1,D2,…,DV},每個子集中的樣本在A上取值相同,計算屬性子集A的資訊增益:

資訊增益Gain(A)越大,意味著特徵子集A包含的歐主語分類的資訊越多。如此,對每個候選特徵子集,可基於訓練資料集D來計算其資訊增益,以此作為評價準則。

更一般的,特徵子集A實際上確定了對資料集D的一個劃分,每個劃分區域對應著A上的一個取值,而樣本標記資訊y則對應對D的真實劃分,通過估算這兩個劃分的差異,就能對A進行評價。與y對應的劃分的差異越小,則說明A越好。資訊熵僅是判斷這個差異的一個途徑,其他能判斷兩個劃分差異的機制都能用於特徵子集評價。

綜上兩點,將特徵子集搜尋機制與子集評價機制結合,就可得到特徵選擇方法。如將前向搜尋與資訊熵結合,與決策樹相似。事實上,決策樹也可用於特徵選擇,樹節點的劃分屬性所組成的集合就是選擇出的特徵子集。其他的特徵選擇方法未必如決策樹般特徵選擇這麼明顯,不過在本質上都顯式或隱式地結合了某種或多種子集搜尋機制和子集評價機制。

常見的特徵選擇方法大致可分三類:過濾式(filter)、包裹式(wrapper)和嵌入式(embedding)。

11.2過濾式選擇 過濾式方法先對資料集進行特徵選擇,然後再訓練學習器,特徵選擇過程與後續學習器無關。先用特徵選擇過程對初始特徵進行過濾,再用過濾後的特徵訓練模型。Relief是一種著名的過濾式特徵選擇方法,該方法設計了一個相關統計量來度量特徵的重要性。該統計量是一個向量,其每個分量對應於一個初始特徵,而特徵子集的重要性則是由子集中每個特徵所對應的相關統計量分量之和決定。指定一個閾值,選擇比閾值大的相關統計量分量所對應的特徵即可;也可指定要選擇的特徵個數k,然後選擇相關統計量分量最大的k個特徵。

Relief的關鍵是如何確定相關統計量。給定訓練集{(x1,y1),(x2,y2),…,(xm,ym)},對每個示例xi,Relief先在xi的同類樣本中尋找其最近鄰xi,nh,稱為猜中近鄰(near-hit);再從xi的異類樣本中尋找其最近鄰xi,nm,稱為猜錯近鄰(near-miss);相關統計量對應於屬性j的分量為:

11.3包裹式選擇 和過濾式特徵選擇不考慮後續學習器不同,包裹式特徵選擇直接把最終將要使用的學習器效能作為特徵子集的評價準則。換言之,包裹式特徵選擇的目的就是為給定學習器選擇最有利於其效能、量身定做的特徵子集。一般而言,包裹式特徵選擇方法直接針對給定學習器進行優化,從最終學習器效能來說,包裹式特徵選擇比過濾式特徵選擇更好,但由於在特徵選擇過程中要多次訓練學習器,其計算開銷也比過濾式特徵選大很多。

LVW(LasVegas Wrapper)是一個典型的包裹式特徵選擇方法,它在拉斯維加斯方法框架下隨用隨機策略進行子集搜尋,並以最終分類器的誤差為特徵子集評價準則。演算法描述如下:

輸入:資料集D;

      特徵集A;

      學習演算法Σ;

      停止條件控制引數T。

過程:

      E=∞;//初始誤差無窮大

      D=|A|;

      A*=A;

      t=0;

      while t<T do

          隨機產生特徵子集A’;

          d’=|A’|;

          E’=CrossValidation(Σ(DA’));//在特徵子集A’上通過交叉驗證估計學習器誤差

          if (E’<E)  或 ((E’=E) 與(d’<d)) then //誤差小於原來的,更新

              t=0;

              E=E’;

              d=d’;

              A*=A’;

          else t=t+1;

          end if

      end while

輸出:特徵子集A*

演算法中通過在資料集D上使用交叉驗證法CrossValidation來估計學習器Σ的誤差,這個誤差是在僅考慮特徵子集A’時得到的,即特徵子集A’上的誤差,若它比當前特徵子集A上的誤差更小,或者誤差相當但A’中包含的特徵數更少,則將A’保留下來。

由於LVW演算法中特徵子集搜尋採用了隨機策略,而每次特徵子集評價都需訓練學習器,計算開銷很大,因此演算法設定了停止條件控制引數T。然而,整個LVW演算法是基於拉斯維加斯方法框架,若初始特徵數很多(即|A|很大)、T設定較大,則演算法可能執行很長時間都打不到停止條件。就是,若有時間限制,可能無解。

注意:拉斯維加斯方法和蒙特卡羅方法是兩個以著名賭城名字命名的隨機化方法。兩者主要區別是:若有時間限制,則拉斯維加斯方法或者給出滿足要求的解,或者不給出解;而蒙特卡羅方法一定會給出解,雖然給出的解未必滿足要求。若無時間限制,則兩者都能給出滿足要求的解。

11.4嵌入式選擇與L1正則化 在過濾式和包裹式特徵選擇方法中,特徵選擇過程與學習器訓練過程有明顯的分別;與此不同,嵌入式特徵選擇是將特徵選擇過程與學習器訓練過程融為一體,兩者在同一個優化過程中完成,即在學習器訓練過程中自動地進行了特徵選擇。

用特徵子集評價與學習器訓練的前後關係來來說,過濾式是在學習器訓練前完成特徵子集選擇和評價;包裹式是在學習器訓練後評價特徵子集從而選擇特徵;嵌入式則是在學習器訓練過程中同步評價並選擇特徵子集。

11.5稀疏表示與字典學習 把資料集D看成一個矩陣,每行對應一個樣本,每列對應一個特徵。特徵選擇所考慮的問題是特徵具有稀疏性,即矩陣中的許多列與當前學習任務無關,通過特徵選擇去除這些列,則學習器訓練過程僅需在叫小的矩陣上進行,學習任務的難度可能有所降低,設計的計算和儲存開銷會減少,學得模型的可解釋性也會提高。

對於稀疏性,還存在一種情況是:D所對應的矩陣中存在很多零元素,這些零元素不是整行或整列存在。這和直接去掉其中一個或若干個列的稀疏性不一樣,直接去除整列,是做了無關性特徵剔除,不管樣本是否在這個特徵上是否為零。這種存在零元素情況的矩陣,在學習任務中有不少,如文件分類任務,將每個文件看做一個樣本,每個字或詞作為一個特徵,字或詞在文件中出現的頻率或次數作為特徵的取值;即D所對應的矩陣,每行是一個文件,每列是一個字或詞,行列交匯點就是某個字或詞在某文件中出現的頻率或次數。《康熙詞典》中有47035個漢字,就是矩陣有4萬多個列,就算是僅考慮《現代漢語常用字表》中的漢字,矩陣也有3500列。對給定的文件,相當多的字是不會出現在這個文件中,矩陣的每一行有大量的零元素,不同的文件,零元素出現的列也不相同。

如果樣本具有這樣的稀疏表達形式時,對學習任務來說是有好處的。如線性支援向量機之所以在文件資料上有很好的效能,恰是由於文字資料在使用上述的字頻後具有高度稀疏性,使大多數問題變得線性可分。同時,稀疏樣本也不會造成儲存上的巨大負擔,因為稀疏矩陣有很多高效儲存方法。

若給定的資料集D是稠密的,即普通非稀疏資料,能否轉化為稀疏表示(sparserepresentation)形式,從而享有稀疏性所帶來的好處呢?自然這種稀疏表示,是恰當稀疏,而不是過度稀疏。如漢語文件,基於《現代漢語常用字表》得到的可能是恰當稀疏,即其稀疏性足以讓學習任務變得簡單可行,而基於《康熙詞典》則可能是過度稀疏,與前者相比,也許並未給學習任務帶來更多好處。

不過,一般的學習任務,如影象分類,並沒有《現代漢語常用字表》恰有稀疏表示,需要通過學習一個字典。為普通稠密表達的樣本找到合適的字典,將樣本轉化為合適的稀疏表示形式,從而使學習任務得以簡化,模型複雜度得以降低,稱為字典學習(dictionary learning),也稱稀疏編碼(sparse coding)。實際上,字典學習側重於學得字典的過程,而稀疏編碼則側重於對樣本進行稀疏表達的過程;不過二者在同一優化求解過程中完成,因此不做區分。下面是說明字典學習。

給定資料集{x1,x2,…,xm},字典學習最簡單的形式為:

11.6壓縮感知 在現實任務中,常有根據部分資訊來恢復全部資訊的需求,如在資料通訊中將模擬訊號轉換為數字訊號,根據奈奎斯特(Nyquist)取樣定理,令取樣頻率達到模擬訊號最高頻率的兩倍,則取樣後的數字訊號就保留了模擬訊號的全部資訊;換言之,由此獲得的數字訊號可精確重構原模擬訊號。然而,為了便於傳輸、儲存,在實踐中人們通常對取樣的數字訊號進行壓縮,這有可能損失一些資訊,而在訊號傳輸過程中,由於信道出現丟包等問題,又可能損失部分資訊;如此,接收方基於收到的訊號,能否精確地重構出原訊號呢?壓縮感知(compressed sensing)為解決此類問題提供了思路。

與特徵選擇、稀疏表示不同,壓縮感知關注的是如何利用訊號本身所具有的稀疏性,從部分觀測樣本中恢復原訊號。通常認為,壓縮感知分為感知測量和重構恢復兩個階段。感知測量關注如何對原始訊號進行處理以獲得稀疏樣本表示,涉及傅立葉變換、小波變換以及字典學習、稀疏編碼等;重構恢復關注的是如何基於稀疏性從少量觀測中恢復原訊號,這是壓縮感知的精髓。壓縮感知的理論比較複雜,文中扼要介紹了限定等距性(Restricted Isometry Property,RIP)。

本章節總的目的是奔著兩個目的,一個是減少樣本訓練的量;一個是減少儲存和計算開銷;這就提出了三個思路:特徵選擇、稀疏表示、壓縮感知。特徵選擇有三種方法,過濾式、包裹式、嵌入式,主要思想就是去掉與學習任務無關的屬性;稀疏表示,則從樣本表示上出發,通過矩陣支援;壓縮感知,資料壓縮方面研究。要掌握這個章節,還是要掌握矩陣數學基礎知識;也明顯感覺出,機器學習的數學基礎理論在根本上到了可用極致,後面要深入,就要數學突破。或者說,在已知可用的數學理論上,都用上了,後面要突破,有賴於數學基礎理論的再突破。

從第10張降維和度量學習開始,不再像前面幾張介紹具體演算法,而是介紹演算法的基礎理論,這個對數學的要求更高了,要做很多課外數學功課來輔助理解,不過仍然感覺不深入,有種淺嘗輒止的感覺,沒有痛快淋漓的感覺。說白了,還是欠缺數學基礎理論的支援,沒有這個,機器學習的基礎理論就只能膚淺理解,再輔以具體演算法模型應用。

實際上,降維和特徵選擇都是減少冗餘樣本量保證有效樣本量用於訓練學習,矩陣在這中間發揮了很大作用。基礎矩陣理論的應用是根本。我大致將這分成四個層面:1)數學基礎理論研究,如能出泰勒展開式、奇異分解等;2)數學知識應用,如降維和特徵選擇用到具體的矩陣知識;3)機器學習演算法理論研究,這層和第2層緊密相關,就是用數學知識來研究演算法基礎理論,如能推導範數最小化;4)機器學習具體演算法應用,如SVM、決策樹等再實際學習任務中的應用。

就目前個人而言,勉強可以在第3層,但要到第2層就已經不太可能,除非重新掌握其完整的數學邏輯。而只有突破第2層,才能到第1層,稱為真正的大師。目前應集中第4層,從而引導後續的突破。