維度學習、度量學習

      之所以將這三個放在一起,主要是在學習的時候,感覺他們之間有很大的關聯,是一大類非監督學習,且其中的主要算法都可以從這幾個學習方法的角度來解釋。我的一個不成熟的解釋是,這三種算法都是在尋找一種轉換,將數據放在一個適合的空間,以求獲得合適的度量方式(距離度量,維度度量等等)。這裏主要總結了其他大神們的傑作,以及西瓜書上的內容。維度災難發生時,利用維度學習將數據轉換到合適空間;流形學習利用拓撲流形概念來實現降維;維度和流形學習都是尋找低維空間,尋找度量方式,而度量學習直接尋找一種度量方式。維度學習主要有MDS,PCA等;流形學習主要有Isomap,LLE等;度量學習主要有NCA,LDA等。以下詳細分析。

 

轉自http://blog.csdn.net/u014470581/article/details/51770356

維度學習

這裏,我們討論特徵選擇和特徵提取,前者選取重要的特徵子集,後者由原始輸入形成較少的新特徵,理想情況下,無論是分類還是迴歸,我們不應該將特徵選擇或特徵提取作爲一個單獨的進程,分類或者回歸方法應該能夠利用任何必要的特徵,而丟棄不相關的特徵。但是,考慮到算法存儲量和時間的複雜度,或者輸入不必要的特徵等原因,還是需要降維。較簡單的模型在小數據上更爲魯棒,有小方差,模型的變化更依賴於樣本的特殊性,包括噪聲,離羣點等。同時,低緯度描述數據,方便我們隊數據繪圖,可視化分析數據結構和離羣點。

降低方法,一般爲特徵選擇,特徵提取,按監督和非監督分: 
非監督:PCA、FA ,LLE
監督:LDA,MDS 
其中,PCA,FA,MDS,LDA,都是線性投影方法,非線性維度規約有等距特徵映射,局部線性嵌入LLE。

維度歸約使用數據編碼或變換,以便得到原數據的歸約或“壓縮”表示。如果原數據可以由壓縮數據重新構造而不丟失任何信息,則該數據歸約是無損的。如果我們只能重新構造原數據的近似表示,則該數據歸約是有損的。有一些很好的串壓縮算法。儘管它們通常是無損的,但是隻允許有限的數據操作。

一.先說特徵選擇,即子集選擇。

在子集選擇中,我們選擇最佳子集,其含的維度最少,但對正確率的貢獻最大。在維度較大時,採用啓發式方法,在合理的時間內得到一個合理解(但不是最優解)。維度較小時,對所有子集做檢驗。
有兩種方法,向前選擇,即從空集開始逐漸增加特徵,每次添加一個降低誤差最多的變量,直到進一步添加不會降低誤差或者降低很少。同時,可以用浮動搜索,每一步可以改變增加和去掉的特徵數量,以此來加速。
向後選擇中,從所有變量開始,逐個排除他們,每次排除一個降低誤差最多的變量,直到進一步的排除會顯著提高誤差。如果我們預料有許多無用特徵時,向前選擇更可取。 
在兩種情況下,誤差檢測都應在不同於訓練集的驗證集上做,因爲我們想要檢驗泛化準確率。使用更多的特徵,我們一般會有更低的訓練誤差,但不一定有更低的驗證誤差。 
像人臉識別這樣的應用中,特徵選擇不是很好的降維方法,因爲個體像素本身並不攜帶很多識別信息,攜帶臉部識別信息的是許多像素值的組合。這可以用特徵提取來歸約。

二. 主成分分析(PCA)

1. 問題

     真實的訓練數據總是存在各種各樣的問題:

1、 比如拿到一個汽車的樣本,裏面既有以“千米/每小時”度量的最大速度特徵,也有“英里/小時”的最大速度特徵,顯然這兩個特徵有一個多餘。

2、 拿到一個數學系的本科生期末考試成績單,裏面有三列,一列是對數學的興趣程度,一列是複習時間,還有一列是考試成績。我們知道要學好數學,需要有濃厚的興趣,所以第二項與第一項強相關,第三項和第二項也是強相關。那是不是可以合併第一項和第二項呢?

3、 拿到一個樣本,特徵非常多,而樣例特別少,這樣用迴歸去直接擬合非常困難,容易過度擬合。比如北京的房價:假設房子的特徵是(大小、位置、朝向、是否學區房、建造年代、是否二手、層數、所在層數),搞了這麼多特徵,結果只有不到十個房子的樣例。要擬合房子特徵->房價的這麼多特徵,就會造成過度擬合。

4、 這個與第二個有點類似,假設在IR中我們建立的文檔-詞項矩陣中,有兩個詞項爲“learn”和“study”,在傳統的向量空間模型中,認爲兩者獨立。然而從語義的角度來講,兩者是相似的,而且兩者出現頻率也類似,是不是可以合成爲一個特徵呢?

5、 在信號傳輸過程中,由於信道不是理想的,信道另一端收到的信號會有噪音擾動,那麼怎麼濾去這些噪音呢?

     回顧我們之前介紹的《模型選擇和規則化》,裏面談到的特徵選擇的問題。但在那篇中要剔除的特徵主要是和類標籤無關的特徵。比如“學生的名字”就和他的“成績”無關,使用的是互信息的方法。

     而這裏的特徵很多是和類標籤有關的,但裏面存在噪聲或者冗餘。在這種情況下,需要一種特徵降維的方法來減少特徵數,減少噪音和冗餘,減少過度擬合的可能性。

     下面探討一種稱作主成分分析(PCA)的方法來解決部分上述問題。PCA的思想是將n維特徵映射到k維上(k<n),這k維是全新的正交特徵。這k維特徵稱爲主元,是重新構造出來的k維特徵,而不是簡單地從n維特徵中去除其餘n-k維特徵。

2. PCA計算過程

     首先介紹PCA的計算過程:

     假設我們得到的2維數據如下:

     clip_image001[4]

     行代表了樣例,列代表特徵,這裏有10個樣例,每個樣例兩個特徵。可以這樣認爲,有10篇文檔,x是10篇文檔中“learn”出現的TF-IDF,y是10篇文檔中“study”出現的TF-IDF。也可以認爲有10輛汽車,x是千米/小時的速度,y是英里/小時的速度,等等。

     第一步分別求x和y的平均值,然後對於所有的樣例,都減去對應的均值。這裏x的均值是1.81,y的均值是1.91,那麼一個樣例減去均值後即爲(0.69,0.49),得到

     clip_image002[4]

     第二步,求特徵協方差矩陣,如果數據是3維,那麼協方差矩陣是

     clip_image003[4]

     這裏只有x和y,求解得

     clip_image004[4]

     對角線上分別是x和y的方差,非對角線上是協方差。協方差大於0表示x和y若有一個增,另一個也增;小於0表示一個增,一個減;協方差爲0時,兩者獨立。協方差絕對值越大,兩者對彼此的影響越大,反之越小。

     第三步,求協方差的特徵值和特徵向量,得到

     clip_image005[4]

     上面是兩個特徵值,下面是對應的特徵向量,特徵值0.0490833989對應特徵向量爲clip_image007[4],這裏的特徵向量都歸一化爲單位向量。

    第四步,將特徵值按照從大到小的順序排序,選擇其中最大的k個,然後將其對應的k個特徵向量分別作爲列向量組成特徵向量矩陣。

     這裏特徵值只有兩個,我們選擇其中最大的那個,這裏是1.28402771,對應的特徵向量是clip_image009[6]

     第五步,將樣本點投影到選取的特徵向量上。假設樣例數爲m,特徵數爲n,減去均值後的樣本矩陣爲DataAdjust(m*n),協方差矩陣是n*n,選取的k個特徵向量組成的矩陣爲EigenVectors(n*k)。那麼投影后的數據FinalData爲

     clip_image011[4]

     這裏是

     FinalData(10*1) = DataAdjust(10*2矩陣)×特徵向量clip_image009[7]

     得到結果是

     clip_image012[4]

     這樣,就將原始樣例的n維特徵變成了k維,這k維就是原始特徵在k維上的投影。

     上面的數據可以認爲是learn和study特徵融合爲一個新的特徵叫做LS特徵,該特徵基本上代表了這兩個特徵。

     上述過程有個圖描述:

     clip_image013[4]

     正號表示預處理後的樣本點,斜着的兩條線就分別是正交的特徵向量(由於協方差矩陣是對稱的,因此其特徵向量正交),最後一步的矩陣乘法就是將原始樣本點分別往特徵向量對應的軸上做投影。

     如果取的k=2,那麼結果是

     clip_image014[4]

     這就是經過PCA處理後的樣本數據,水平軸(上面舉例爲LS特徵)基本上可以代表全部樣本點。整個過程看起來就像將座標系做了旋轉,當然二維可以圖形化表示,高維就不行了。上面的如果k=1,那麼只會留下這裏的水平軸,軸上是所有點在該軸的投影。

     這樣PCA的過程基本結束。在第一步減均值之後,其實應該還有一步對特徵做方差歸一化。比如一個特徵是汽車速度(0到100),一個是汽車的座位數(2到6),顯然第二個的方差比第一個小。因此,如果樣本特徵中存在這種情況,那麼在第一步之後,求每個特徵的標準差clip_image016[6],然後對每個樣例在該特徵下的數據除以clip_image016[7]

     歸納一下,使用我們之前熟悉的表示方法,在求協方差之前的步驟是:

     clip_image017[4]

     其中clip_image019[6]是樣例,共m個,每個樣例n個特徵,也就是說clip_image019[7]是n維向量。clip_image021[4]是第i個樣例的第j個特徵。clip_image023[4]是樣例均值。clip_image025[4]是第j個特徵的標準差。

     整個PCA過程貌似及其簡單,就是求協方差的特徵值和特徵向量,然後做數據轉換。但是有沒有覺得很神奇,爲什麼求協方差的特徵向量就是最理想的k維向量?其背後隱藏的意義是什麼?整個PCA的意義是什麼?

3. PCA理論基礎

     要解釋爲什麼協方差矩陣的特徵向量就是k維理想特徵,我看到的有三個理論:分別是最大方差理論、最小錯誤理論和座標軸相關度理論。這裏簡單探討前兩種,最後一種在討論PCA意義時簡單概述。

3.1 最大方差理論

     在信號處理中認爲信號具有較大的方差,噪聲有較小的方差,信噪比就是信號與噪聲的方差比,越大越好。如前面的圖,樣本在橫軸上的投影方差較大,在縱軸上的投影方差較小,那麼認爲縱軸上的投影是由噪聲引起的。

因此我們認爲,最好的k維特徵是將n維樣本點轉換爲k維後,每一維上的樣本方差都很大。

     比如下圖有5個樣本點:(已經做過預處理,均值爲0,特徵方差歸一)

     clip_image026[4]

     下面將樣本投影到某一維上,這裏用一條過原點的直線表示(前處理的過程實質是將原點移到樣本點的中心點)。

     clip_image028[4]

     假設我們選擇兩條不同的直線做投影,那麼左右兩條中哪個好呢?根據我們之前的方差最大化理論,左邊的好,因爲投影后的樣本點之間方差最大。

     這裏先解釋一下投影的概念:

     QQ截圖未命名

     紅色點表示樣例clip_image037[14],藍色點表示clip_image037[15]在u上的投影,u是直線的斜率也是直線的方向向量,而且是單位向量。藍色點是clip_image037[16]在u上的投影點,離原點的距離是clip_image039[4](即clip_image030[4]或者clip_image041[4])由於這些樣本點(樣例)的每一維特徵均值都爲0,因此投影到u上的樣本點(只有一個到原點的距離值)的均值仍然是0。

     回到上面左右圖中的左圖,我們要求的是最佳的u,使得投影后的樣本點方差最大。

     由於投影后均值爲0,因此方差爲:

     clip_image042[4]

     中間那部分很熟悉啊,不就是樣本特徵的協方差矩陣麼(clip_image037[17]的均值爲0,一般協方差矩陣都除以m-1,這裏用m)。

     用clip_image044[10]來表示clip_image046[4]clip_image048[6]表示clip_image050[4],那麼上式寫作

     clip_image052[4] 

     由於u是單位向量,即clip_image054[4],上式兩邊都左乘u得,clip_image056[4]

     即clip_image058[4]

     We got it!clip_image044[11]就是clip_image048[7]的特徵值,u是特徵向量。最佳的投影直線是特徵值clip_image044[12]最大時對應的特徵向量,其次是clip_image044[13]第二大對應的特徵向量,依次類推。

     因此,我們只需要對協方差矩陣進行特徵值分解,得到的前k大特徵值對應的特徵向量就是最佳的k維新特徵,而且這k維新特徵是正交的。得到前k個u以後,樣例clip_image037[18]通過以下變換可以得到新的樣本。

     clip_image059[4]

     其中的第j維就是clip_image037[19]clip_image061[4]上的投影。

     通過選取最大的k個u,使得方差較小的特徵(如噪聲)被丟棄。

     這是其中一種對PCA的解釋

3.2 最小平方誤差理論

     clip_image001

     假設有這樣的二維樣本點(紅色點),回顧我們前面探討的是求一條直線,使得樣本點投影到直線上的點的方差最大。本質是求直線,那麼度量直線求的好不好,不僅僅只有方差最大化的方法。再回想我們最開始學習的線性迴歸等,目的也是求一個線性函數使得直線能夠最佳擬合樣本點,那麼我們能不能認爲最佳的直線就是迴歸後的直線呢?迴歸時我們的最小二乘法度量的是樣本點到直線的座標軸距離。比如這個問題中,特徵是x,類標籤是y。迴歸時最小二乘法度量的是距離d。如果使用迴歸方法來度量最佳直線,那麼就是直接在原始樣本上做迴歸了,跟特徵選擇就沒什麼關係了。

     因此,我們打算選用另外一種評價直線好壞的方法,使用點到直線的距離d’來度量。

     現在有n個樣本點clip_image003,每個樣本點爲m維(這節內容中使用的符號與上面的不太一致,需要重新理解符號的意義)。將樣本點clip_image005在直線上的投影記爲clip_image007,那麼我們就是要最小化

     clip_image009

     這個公式稱作最小平方誤差(Least Squared Error)。

     而確定一條直線,一般只需要確定一個點,並且確定方向即可。

     第一步確定點:

     假設要在空間中找一點clip_image011來代表這n個樣本點,“代表”這個詞不是量化的,因此要量化的話,我們就是要找一個m維的點clip_image011[1],使得

     clip_image012

     最小。其中clip_image014是平方錯誤評價函數(squared-error criterion function),假設m爲n個樣本點的均值:

     clip_image015

     那麼平方錯誤可以寫作:

     clip_image017

     後項與clip_image019無關,看做常量,而clip_image021,因此最小化clip_image014[1]時,

     clip_image023 

     clip_image019[1]是樣本點均值。

     第二步確定方向:

     我們從clip_image019[2]拉出要求的直線(這條直線要過點m),假設直線的方向是單位向量e。那麼直線上任意一點,比如clip_image007[1]就可以用點m和e來表示

     clip_image025 

     其中clip_image027clip_image029到點m的距離。

     我們重新定義最小平方誤差:

     clip_image030

     這裏的k只是相當於i。clip_image032就是最小平方誤差函數,其中的未知參數是clip_image034和e。

     實際上是求clip_image032[1]的最小值。首先將上式展開:

     clip_image036

     我們首先固定e,將其看做是常量,clip_image038,然後對clip_image027[1]進行求導,得

     clip_image039

     這個結果意思是說,如果知道了e,那麼將clip_image041與e做內積,就可以知道了clip_image043在e上的投影離m的長度距離,不過這個結果不用求都知道。

     然後是固定clip_image027[2],對e求偏導數,我們先將公式(8)代入clip_image032[2],得 

     clip_image044

     其中clip_image045 與協方差矩陣類似,只是缺少個分母n-1,我們稱之爲散列矩陣(scatter matrix)。

     然後可以對e求偏導數,但是e需要首先滿足clip_image038[1],引入拉格朗日乘子clip_image047,來使clip_image049最大(clip_image032[3]最小),令

     clip_image050

     求偏導

     clip_image051

     這裏存在對向量求導數的技巧,方法這裏不多做介紹。可以去看一些關於矩陣微積分的資料,這裏求導時可以將clip_image049[1]看作是clip_image053,將clip_image055看做是clip_image057

     導數等於0時,得

     clip_image058

     兩邊除以n-1就變成了,對協方差矩陣求特徵值向量了。

     從不同的思路出發,最後得到同一個結果,對協方差矩陣求特徵向量,求得後特徵向量上就成爲了新的座標,如下圖:

     clip_image059

     這時候點都聚集在新的座標軸周圍,因爲我們使用的最小平方誤差的意義就在此。

4. PCA理論意義

     PCA將n個特徵降維到k個,可以用來進行數據壓縮,如果100維的向量最後可以用10維來表示,那麼壓縮率爲90%。同樣圖像處理領域的KL變換使用PCA做圖像壓縮。但PCA要保證降維後,還要保證數據的特性損失最小。再看回顧一下PCA的效果。經過PCA處理後,二維數據投影到一維上可以有以下幾種情況:

     clip_image060

     我們認爲左圖好,一方面是投影后方差最大,一方面是點到直線的距離平方和最小,而且直線過樣本點的中心點。爲什麼右邊的投影效果比較差?直覺是因爲座標軸之間相關,以至於去掉一個座標軸,就會使得座標點無法被單獨一個座標軸確定。

     PCA得到的k個座標軸實際上是k個特徵向量,由於協方差矩陣對稱,因此k個特徵向量正交。看下面的計算過程。

     假設我們還是用clip_image062來表示樣例,m個樣例,n個特徵。特徵向量爲e,clip_image064表示第i個特徵向量的第1維。那麼原始樣本特徵方程可以用下面式子來表示:

     前面兩個矩陣乘積就是協方差矩陣clip_image066(除以m後),原始的樣本矩陣A是第二個矩陣m*n。

     clip_image068

     上式可以簡寫爲clip_image070

     我們最後得到的投影結果是clip_image072,E是k個特徵向量組成的矩陣,展開如下:

     clip_image074

     得到的新的樣例矩陣就是m個樣例到k個特徵向量的投影,也是這k個特徵向量的線性組合。e之間是正交的。從矩陣乘法中可以看出,PCA所做的變換是將原始樣本點(n維),投影到k個正交的座標系中去,丟棄其他維度的信息。舉個例子,假設宇宙是n維的(霍金說是11維的),我們得到銀河系中每個星星的座標(相對於銀河系中心的n維向量),然而我們想用二維座標去逼近這些樣本點,假設算出來的協方差矩陣的特徵向量分別是圖中的水平和豎直方向,那麼我們建議以銀河系中心爲原點的x和y座標軸,所有的星星都投影到x和y上,得到下面的圖片。然而我們丟棄了每個星星離我們的遠近距離等信息。

     clip_image075

5. 總結與討論

     這一部分來自http://www.cad.zju.edu.cn/home/chenlu/pca.htm

     PCA技術的一大好處是對數據進行降維的處理。我們可以對新求出的“主元”向量的重要性進行排序,根據需要取前面最重要的部分,將後面的維數省去,可以達到降維從而簡化模型或是對數據進行壓縮的效果。同時最大程度的保持了原有數據的信息。

     PCA技術的一個很大的優點是,它是完全無參數限制的。在PCA的計算過程中完全不需要人爲的設定參數或是根據任何經驗模型對計算進行干預,最後的結果只與數據相關,與用戶是獨立的。
但是,這一點同時也可以看作是缺點。如果用戶對觀測對象有一定的先驗知識,掌握了數據的一些特徵,卻無法通過參數化等方法對處理過程進行干預,可能會得不到預期的效果,效率也不高。

     clip_image076

     圖表 4:黑色點表示採樣數據,排列成轉盤的形狀。 
     容易想象,該數據的主元是clip_image077或是旋轉角clip_image078

     如圖表 4中的例子,PCA找出的主元將是clip_image077[1]。但是這顯然不是最優和最簡化的主元。clip_image077[2]之間存在着非線性的關係。根據先驗的知識可知旋轉角clip_image078[1]是最優的主元(類比極座標)。則在這種情況下,PCA就會失效。但是,如果加入先驗的知識,對數據進行某種劃歸,就可以將數據轉化爲以clip_image078[2]爲線性的空間中。這類根據先驗知識對數據預先進行非線性轉換的方法就成爲kernel-PCA,它擴展了PCA能夠處理的問題的範圍,又可以結合一些先驗約束,是比較流行的方法。

     有時數據的分佈並不是滿足高斯分佈。如圖表 5所示,在非高斯分佈的情況下,PCA方法得出的主元可能並不是最優的。在尋找主元時不能將方差作爲衡量重要性的標準。要根據數據的分佈情況選擇合適的描述完全分佈的變量,然後根據概率分佈式

     clip_image079

     來計算兩個向量上數據分佈的相關性。等價的,保持主元間的正交假設,尋找的主元同樣要使clip_image080。這一類方法被稱爲獨立主元分解(ICA)。

     clip_image081

     圖表 5:數據的分佈並不滿足高斯分佈,呈明顯的十字星狀。 
     這種情況下,方差最大的方向並不是最優主元方向。

     另外PCA還可以用於預測矩陣中缺失的元素。

6. 其他參考文獻

     A tutorial on Principal Components Analysis LI Smith – 2002

     A Tutorial on Principal Component Analysis J Shlens

     http://www.cmlab.csie.ntu.edu.tw/~cyy/learning/tutorials/PCAMissingData.pdf

     http://www.cad.zju.edu.cn/home/chenlu/pca.htm

所謂主成分,就是在某方向上樣本投影之後,被廣泛散佈,使得樣本之間的差別變得最明顯。爲了得到唯一解並且使得該方向成爲最重要因素,要求該向量長度爲1,利用拉格朗日,計算出在方差最大情況下,我們選擇具有最大特徵值的特徵向量爲該投影向量。後面次方差最大。。。如此類推。由於協方差矩陣是對稱的,因此,對於兩個不同的特徵值,特徵向量是正交的。
通常情況下,我們考慮貢獻90%以上方差的前K個分量,或者利用斜坡圖,目視化分析拐點k,也可以忽略特徵值小於平均輸入方差的特徵向量。
當然,如果原維之間不相關,則PCA就沒有收益。在許多圖像和語音處理任務中,鄰近的輸入時高度相關的。 
如果原維的方差變化顯著,則他們對主成分方向的影響比相關性大。因此,一般在PCA之前預處理下,使得每個維都具有0均值和單位方差。或者,爲了使協方差而不是個體方差起作用,我們用協相關矩陣R而不是協方差矩陣S的本徵向量。
離羣點對方差有很大影響,從而影響特徵向量,魯棒的估計方法是允許計算離羣點存在時的參數,如計算數據的馬氏距離,丟棄哪些遠離的孤立點數據。 
當原維度很大時,我們可以直接從數據計算特徵向量,特徵值,不必計算協方差矩陣。 
在所有正交線性投影中,PCA最小化重構誤差。 
這裏,作爲一種維度歸約方法,我們直觀地介紹主成分分析。 
假定待歸約的數據由n個屬性或維描述的元組或數據向量組成。主成分分析(principal components analysis)或PCA(又稱Karhunen-Loeve或K-L方法)搜索k個最能代表數據的n維正交向量,其中k≤n。這樣,原來的數據投影到一個小得多的空間,導致維度歸約。不像屬性子集選擇通過保留原屬性集的一個子集來減少屬性集的大小,PCA通過創建一個替換的、更小的變量集“組合”屬性的基本要素。原數據可以投影到該較小的集合中。PCA常常揭示先前未曾察覺的聯繫,並因此允許解釋不尋常的結果。

基本過程如下:

(1)對輸入數據規範化,使得每個屬性都落入相同的區間。此步有助於確保具有較大定義域的屬性不會支配具有較小定義域的屬性。 
(2)PCA計算k個標準正交向量,作爲規範化輸入數據的基。這些是單位向量,每一個方向都垂直於另一個。這些向量稱爲主成分。輸入數據是主成分的線性組合。

(3)對主成分按“重要性”或強度降序排列。主成分基本上充當數據的新座標軸,提供關於方差的重要信息。也就是說,對座標軸進行排序,使得第一個座標軸顯示數據的最大方差,第二個顯示次大方差,如此下去。例如,圖2-17顯示原來映射到軸X1和X2的給定數據集的前兩個主成分Y1和Y2。這一信息幫助識別數據中的分組或模式。

(4)既然主成分根據“重要性”降序排列,就可以通過去掉較弱的成分(即方差較小)來歸約數據的規模。使用最強的主成分,應當能夠重構原數據的很好的近似。

圖2-17 主成分分析。Y1和Y2是給定數據的前兩個主成分

PCA計算開銷低,可以用於有序和無序的屬性,並且可以處理稀疏和傾斜數據。多於2維的多維數據可以通過將問題歸約爲2維問題來處理。主成分可以用作多元迴歸和聚類分析的輸入。與小波變換相比,PCA能夠更好地處理稀疏數據,而小波變換更適合高維數據。


三.FA


FA也是非監督的,但與PCA相反,其旨在找到較少數量的因子,刻畫觀測變量之間的依賴性。但是,對於維度歸約,除了因子可解釋性,允許識別公共原因,簡單解釋,知識提取外,FA與PCA相比,並無優勢。

1 問題

     之前我們考慮的訓練數據中樣例clip_image002的個數m都遠遠大於其特徵個數n,這樣不管是進行迴歸、聚類等都沒有太大的問題。然而當訓練樣例個數m太小,甚至m<<n的時候,使用梯度下降法進行迴歸時,如果初值不同,得到的參數結果會有很大偏差(因爲方程數小於參數個數)。另外,如果使用多元高斯分佈(Multivariate Gaussian distribution)對數據進行擬合時,也會有問題。讓我們來演算一下,看看會有什麼問題:

多元高斯分佈的參數估計公式如下:

     clip_image004

     clip_image006

     分別是求mean和協方差的公式,clip_image002[1]表示樣例,共有m個,每個樣例n個特徵,因此clip_image008是n維向量,clip_image010是n*n協方差矩陣。

     當m<<n時,我們會發現clip_image010[1]是奇異陣(clip_image012),也就是說clip_image014不存在,沒辦法擬合出多元高斯分佈了,確切的說是我們估計不出來clip_image010[2]

     如果我們仍然想用多元高斯分佈來估計樣本,那怎麼辦呢?

2 限制協方差矩陣

     當沒有足夠的數據去估計clip_image010[3]時,那麼只能對模型參數進行一定假設,之前我們想估計出完全的clip_image010[4](矩陣中的全部元素),現在我們假設clip_image010[5]就是對角陣(各特徵間相互獨立),那麼我們只需要計算每個特徵的方差即可,最後的clip_image010[6]只有對角線上的元素不爲0

     clip_image016

     回想我們之前討論過的二維多元高斯分佈的幾何特性,在平面上的投影是個橢圓,中心點由clip_image008[1]決定,橢圓的形狀由clip_image010[7]決定。clip_image010[8]如果變成對角陣,就意味着橢圓的兩個軸都和座標軸平行了。

     clip_image018

     如果我們想對clip_image010[9]進一步限制的話,可以假設對角線上的元素都是等值的。

     clip_image020

     其中

     clip_image022

     也就是上一步對角線上元素的均值,反映到二維高斯分佈圖上就是橢圓變成圓。

     當我們要估計出完整的clip_image010[10]時,我們需要m>=n+1才能保證在最大似然估計下得出的clip_image010[11]是非奇異的。然而在上面的任何一種假設限定條件下,只要m>=2都可以估計出限定的clip_image010[12]

     這樣做的缺點也是顯然易見的,我們認爲特徵間獨立,這個假設太強。接下來,我們給出一種稱爲因子分析的方法,使用更多的參數來分析特徵間的關係,並且不需要計算一個完整的clip_image010[13]

3 邊緣和條件高斯分佈

     在討論因子分析之前,先看看多元高斯分佈中,條件和邊緣高斯分佈的求法。這個在後面因子分析的EM推導中有用。

     假設x是有兩個隨機向量組成(可以看作是將之前的clip_image024分成了兩部分)

     clip_image026

     其中clip_image028clip_image030,那麼clip_image032。假設x服從多元高斯分佈clip_image034,其中

     clip_image035

     其中clip_image037clip_image039,那麼clip_image041clip_image043,由於協方差矩陣是對稱陣,因此clip_image045

     整體看來clip_image047clip_image049聯合分佈符合多元高斯分佈。

     那麼只知道聯合分佈的情況下,如何求得clip_image047[1]的邊緣分佈呢?從上面的clip_image008[2]clip_image010[14]可以看出,

     clip_image051,clip_image053,下面我們驗證第二個結果

     clip_image054

     由此可見,多元高斯分佈的邊緣分佈仍然是多元高斯分佈。也就是說clip_image056

     上面Cov(x)裏面有趣的是clip_image058,這個與之前計算協方差的效果不同。之前的協方差矩陣都是針對一個隨機變量(多維向量)來說的,而clip_image058[1]評價的是兩個隨機向量之間的關係。比如clip_image060={身高,體重},clip_image049[1]={性別,收入},那麼clip_image062求的是身高與身高,身高與體重,體重與體重的協方差。而clip_image058[2]求的是身高與性別,身高與收入,體重與性別,體重與收入的協方差,看起來與之前的大不一樣,比較詭異的求法。

     上面求的是邊緣分佈,讓我們考慮一下條件分佈的問題,也就是clip_image064的問題。根據多元高斯分佈的定義,clip_image066

     且

     clip_image067

     這是我們接下來計算時需要的公式,這兩個公式直接給出,沒有推導過程。如果想了解具體的推導過程,可以參見Chuong B. Do寫的《Gaussian processes》。

4 因子分析例子

     下面通過一個簡單例子,來引出因子分析背後的思想。

     因子分析的實質是認爲m個n維特徵的訓練樣例clip_image069的產生過程如下:

     1、 首先在一個k維的空間中按照多元高斯分佈生成m個clip_image071(k維向量),即

     clip_image073

     2、 然後存在一個變換矩陣clip_image075,將clip_image071[1]映射到n維空間中,即

     clip_image077

     因爲clip_image071[2]的均值是0,映射後仍然是0。

     3、 然後將clip_image079加上一個均值clip_image008[3](n維),即

     clip_image081

     對應的意義是將變換後的clip_image079[1](n維向量)移動到樣本clip_image002[2]的中心點clip_image008[4]

     4、 由於真實樣例clip_image002[3]與上述模型生成的有誤差,因此我們繼續加上誤差clip_image083(n維向量),

     而且clip_image083[1]符合多元高斯分佈,即

     clip_image085

     clip_image087

     5、 最後的結果認爲是真實的訓練樣例clip_image002[4]的生成公式

     clip_image089

     讓我們使用一種直觀方法來解釋上述過程:

     假設我們有m=5個2維的樣本點clip_image002[5](兩個特徵),如下:

clip_image090

     那麼按照因子分析的理解,樣本點的生成過程如下:

     1、 我們首先認爲在1維空間(這裏k=1),存在着按正態分佈生成的m個點clip_image092,如下

clip_image095

     均值爲0,方差爲1。

     2、 然後使用某個clip_image097將一維的z映射到2維,圖形表示如下:

clip_image100

     3、 之後加上clip_image102,即將所有點的橫座標移動clip_image104,縱座標移動clip_image106,將直線移到一個位置,使得直線過點clip_image008[5],原始左邊軸的原點現在爲clip_image008[6](紅色點)。

clip_image111

     然而,樣本點不可能這麼規則,在模型上會有一定偏差,因此我們需要將上步生成的點做一些擾動(誤差),擾動clip_image113

     4、 加入擾動後,我們得到黑色樣本clip_image002[6]如下:

clip_image118

     5、 其中由於z和clip_image119的均值都爲0,因此clip_image008[7]也是原始樣本點(黑色點)的均值。

     由以上的直觀分析,我們知道了因子分析其實就是認爲高維樣本點實際上是由低維樣本點經過高斯分佈、線性變換、誤差擾動生成的,因此高維數據可以使用低維來表示。

5 因子分析模型

     上面的過程是從隱含隨機變量z經過變換和誤差擾動來得到觀測到的樣本點。其中z被稱爲因子,是低維的。

     我們將式子再列一遍如下:

     clip_image121

     clip_image085[1]

     clip_image123

     其中誤差clip_image119[1]和z是獨立的。

     下面使用的因子分析表示方法是矩陣表示法,在參考資料中給出了一些其他的表示方法,如果不明白矩陣表示法,可以參考其他資料。

     矩陣表示法認爲z和x聯合符合多元高斯分佈,如下

     clip_image125

     求clip_image127之前需要求E[x]

     clip_image129

           clip_image131

           clip_image133

     我們已知E[z]=0,因此

     clip_image135

     下一步是計算clip_image010[15]

     其中clip_image137

     接着求clip_image139

     clip_image140

     這個過程中利用了z和clip_image119[2]獨立假設(clip_image142)。並將clip_image144看作已知變量。

     接着求clip_image146

     clip_image147

     然後得出聯合分佈的最終形式

     clip_image148

     從上式中可以看出x的邊緣分佈clip_image150

     那麼對樣本clip_image152進行最大似然估計

     clip_image154

     然後對各個參數求偏導數不就得到各個參數的值了麼?

     可惜我們得不到closed-form。想想也是,如果能得到,還幹嘛將z和x放在一起求聯合分佈呢。根據之前對參數估計的理解,在有隱含變量z時,我們可以考慮使用EM來進行估計。

6 因子分析的EM估計

     我們先來明確一下各個參數,z是隱含變量,clip_image156是待估參數。

     回想EM兩個步驟:

循環重複直到收斂 {

(E步)對於每一個i,計算

clip_image158

(M步)計算

clip_image159

     我們套用一下:

     (E步):

     clip_image161

     根據第3節的條件分佈討論,

     clip_image163

     因此

     clip_image164

     那麼根據多元高斯分佈公式,得到

     clip_image166

     (M步):

     直接寫要最大化的目標是

     clip_image167

     其中待估參數是clip_image169

     下面我們重點求clip_image171的估計公式

     首先將上式簡化爲:

     clip_image173

     這裏clip_image175表示clip_image177服從clip_image179分佈。然後去掉與clip_image144[1]不相關的項(後兩項),得

     clip_image181

     去掉不相關的前兩項後,對clip_image144[2]進行導,

     clip_image182

     第一步到第二步利用了tr a = a(a是實數時)和tr AB = tr BA。最後一步利用了    

     tr就是求一個矩陣對角線上元素和。

     最後讓其值爲0,並且化簡得

     clip_image184

     然後得到

     clip_image185

     到這裏我們發現,這個公式有點眼熟,與之前回歸中的最小二乘法矩陣形式類似

     clip_image186

     這裏解釋一下兩者的相似性,我們這裏的x是z的線性函數(包含了一定的噪聲)。在E步得到z的估計後,我們找尋的clip_image144[3]實際上是x和z的線性關係。而最小二乘法也是去找特徵和結果直接的線性關係。

到這還沒完,我們需要求得括號裏面的值

     根據我們之前對z|x的定義,我們知道

     clip_image187

     第一步根據z的條件分佈得到,第二步根據clip_image189得到

     將上面的結果代入(7)中得到

     clip_image190

     至此,我們得到了clip_image144[4],注意一點是E[z]和clip_image192的不同,後者需要求z的協方差。

     其他參數的迭代公式如下:

     clip_image193

     均值clip_image008[8]在迭代過程中值不變。

     clip_image195

     然後將clip_image197上的對角線上元素抽取出來放到對應的clip_image199中,就得到了clip_image199[1]

7 總結

     根據上面的EM的過程,要對樣本X進行因子分析,只需知道要分解的因子數(z的維度)即可。通過EM,我們能夠得到轉換矩陣clip_image144[5]和誤差協方差clip_image199[2]

     因子分析實際上是降維,在得到各個參數後,可以求得z。但是z的各個參數含義需要自己去琢磨。

     下面從一個ppt中摘抄幾段話來進一步解釋因子分析。

     因子分析(factor analysis)是一種數據簡化的技術。它通過研究衆多變量之間的內部依賴關係,探求觀測數據中的基本結構,並用少數幾個假想變量來表示其基本的數據結構。這幾個假想變量能夠反映原來衆多變量的主要信息。原始的變量是可觀測的顯在變量,而假想變量是不可觀測的潛在變量,稱爲因子。

     例如,在企業形象或品牌形象的研究中,消費者可以通過一個有24個指標構成的評價體系,評價百貨商場的24個方面的優劣。

     但消費者主要關心的是三個方面,即商店的環境、商店的服務和商品的價格。因子分析方法可以通過24個變量,找出反映商店環境、商店服務水平和商品價格的三個潛在的因子,對商店進行綜合評價。而這三個公共因子可以表示爲:

     clip_image201

     這裏的clip_image203就是樣例x的第i個分量,clip_image207就是clip_image008[9]的第i個分量,clip_image209就是clip_image144[6]的第i行第j列元素,clip_image211是z的第i個分量,clip_image213clip_image215

clip_image211[1]是不可觀測的潛在因子。24個變量共享這三個因子,但是每個變量又有自己的個性,不被包含的部分clip_image213[1],稱爲特殊因子。

     注:

     因子分析與迴歸分析不同,因子分析中的因子是一個比較抽象的概念,而回歸因子有非常明確的實際意義;

     主成分分析分析與因子分析也有不同,主成分分析僅僅是變量變換,而因子分析需要構造因子模型。

     主成分分析:原始變量的線性組合表示新的綜合變量,即主成分;

     因子分析:潛在的假想變量和隨機影響變量的線性組合表示原始變量。

     PPT地址

     http://www.math.zju.edu.cn/webpagenew/uploadfiles/attachfiles/2008123195228555.ppt

     其他值得參考的文獻

     An Introduction to Probabilistic Graphical Models by Jordan Chapter 14

     主成分分析和因子分析的區別http://cos.name/old/view.php?tid=10&id=82

四.ICA

1. 問題:

     1、PCA是一種數據降維的方法,但是隻對符合高斯分佈的樣本點比較有效,那麼對於其他分佈的樣本,有沒有主元分解的方法呢?

     2、經典的雞尾酒宴會問題(cocktail party problem)。假設在party中有n個人,他們可以同時說話,我們也在房間中一些角落裏共放置了n個聲音接收器(Microphone)用來記錄聲音。宴會過後,我們從n個麥克風中得到了一組數據clip_image002,i表示採樣的時間順序,也就是說共得到了m組採樣,每一組採樣都是n維的。我們的目標是單單從這m組採樣數據中分辨出每個人說話的信號。

     將第二個問題細化一下,有n個信號源clip_image004clip_image006,每一維都是一個人的聲音信號,每個人發出的聲音信號獨立。A是一個未知的混合矩陣(mixing matrix),用來組合疊加信號s,那麼

     clip_image008

     x的意義在上文解釋過,這裏的x不是一個向量,是一個矩陣。其中每個列向量是clip_image010clip_image012

     表示成圖就是

     clip_image014

     這張圖來自

     http://amouraux.webnode.com/research-interests/research-interests-erp-analysis/blind-source-separation-bss-of-erps-using-independent-component-analysis-ica/

     clip_image033

     clip_image035的每個分量都由clip_image037的分量線性表示。A和s都是未知的,x是已知的,我們要想辦法根據x來推出s。這個過程也稱作爲盲信號分離。

     令clip_image039,那麼clip_image041

     將W表示成

     clip_image042

     其中clip_image044,其實就是將clip_image046寫成行向量形式。那麼得到:

     clip_image048

2. ICA的不確定性(ICA ambiguities)

     由於w和s都不確定,那麼在沒有先驗知識的情況下,無法同時確定這兩個相關參數。比如上面的公式s=wx。當w擴大兩倍時,s只需要同時擴大兩倍即可,等式仍然滿足,因此無法得到唯一的s。同時如果將人的編號打亂,變成另外一個順序,如上圖的藍色節點的編號變爲3,2,1,那麼只需要調換A的列向量順序即可,因此也無法單獨確定s。這兩種情況稱爲原信號不確定。

     還有一種ICA不適用的情況,那就是信號不能是高斯分佈的。假設只有兩個人發出的聲音信號符合多值正態分佈,clip_image050,I是2*2的單位矩陣,s的概率密度函數就不用說了吧,以均值0爲中心,投影面是橢圓的山峯狀(參見多值高斯分佈)。因爲clip_image052,因此,x也是高斯分佈的,均值爲0,協方差爲clip_image054

     令R是正交陣clip_image056clip_image058。如果將A替換成A’。那麼clip_image060。s分佈沒變,因此x’仍然是均值爲0,協方差clip_image062

     因此,不管混合矩陣是A還是A’,x的分佈情況是一樣的,那麼就無法確定混合矩陣,也就無法確定原信號。

3. 密度函數和線性變換

     在討論ICA具體算法之前,我們先來回顧一下概率和線性代數裏的知識。

     假設我們的隨機變量s有概率密度函數clip_image064(連續值是概率密度函數,離散值是概率)。爲了簡單,我們再假設s是實數,還有一個隨機變量x=As,A和x都是實數。令clip_image066是x的概率密度,那麼怎麼求clip_image066[1]

     令clip_image039[1],首先將式子變換成clip_image068,然後得到clip_image070,求解完畢。可惜這種方法是錯誤的。比如s符合均勻分佈的話(clip_image072),那麼s的概率密度是clip_image074,現在令A=2,即x=2s,也就是說x在[0,2]上均勻分佈,可知clip_image076。然而,前面的推導會得到clip_image078。正確的公式應該是

     clip_image080

     推導方法

     clip_image082

     clip_image084

     更一般地,如果s是向量,A可逆的方陣,那麼上式子仍然成立。

4. ICA算法

     ICA算法歸功於Bell和Sejnowski,這裏使用最大似然估計來解釋算法,原始的論文中使用的是一個複雜的方法Infomax principal。

     我們假定每個clip_image086有概率密度clip_image088,那麼給定時刻原信號的聯合分佈就是

     clip_image090

     這個公式代表一個假設前提:每個人發出的聲音信號各自獨立。有了p(s),我們可以求得p(x)

     clip_image092

     左邊是每個採樣信號x(n維向量)的概率,右邊是每個原信號概率的乘積的|W|倍。

     前面提到過,如果沒有先驗知識,我們無法求得W和s。因此我們需要知道clip_image094,我們打算選取一個概率密度函數賦給s,但是我們不能選取高斯分佈的密度函數。在概率論裏我們知道密度函數p(x)由累計分佈函數(cdf)F(x)求導得到。F(x)要滿足兩個性質是:單調遞增和在[0,1]。我們發現sigmoid函數很適合,定義域負無窮到正無窮,值域0到1,緩慢遞增。我們假定s的累積分佈函數符合sigmoid函數

     clip_image096

     求導後

     clip_image098

     這就是s的密度函數。這裏s是實數。

     如果我們預先知道s的分佈函數,那就不用假設了,但是在缺失的情況下,sigmoid函數能夠在大多數問題上取得不錯的效果。由於上式中clip_image100是個對稱函數,因此E[s]=0(s的均值爲0),那麼E[x]=E[As]=0,x的均值也是0。

     知道了clip_image100[1],就剩下W了。給定採樣後的訓練樣本clip_image002[1],樣本對數似然估計如下:

     使用前面得到的x的概率密度函數,得

     clip_image101

     大括號裏面是clip_image103

     接下來就是對W求導了,這裏牽涉一個問題是對行列式|W|進行求導的方法,屬於矩陣微積分。這裏先給出結果,在文章最後再給出推導公式。

     clip_image105

     最終得到的求導後公式如下,clip_image107的導數爲clip_image109(可以自己驗證):

     clip_image110

     其中clip_image112是梯度上升速率,人爲指定。

     當迭代求出W後,便可得到clip_image114來還原出原始信號。

     注意:我們計算最大似然估計時,假設了clip_image116clip_image118之間是獨立的,然而對於語音信號或者其他具有時間連續依賴特性(比如溫度)上,這個假設不能成立。但是在數據足夠多時,假設獨立對效果影響不大,同時如果事先打亂樣例,並運行隨機梯度上升算法,那麼能夠加快收斂速度。

     回顧一下雞尾酒宴會問題,s是人發出的信號,是連續值,不同時間點的s不同,每個人發出的信號之間獨立(clip_image086[1]clip_image120之間獨立)。s的累計概率分佈函數是sigmoid函數,但是所有人發出聲音信號都符合這個分佈。A(W的逆陣)代表了s相對於x的位置變化,x是s和A變化後的結果。

5. 實例

     clip_image122

     s=2時的原始信號

     clip_image124

     觀察到的x信號

     clip_image126

     使用ICA還原後的s信號

6. 行列式的梯度

     對行列式求導,設矩陣A是n×n的,我們知道行列式與代數餘子式有關,

     clip_image127

     clip_image129是去掉第i行第j列後的餘子式,那麼對clip_image131求導得

     clip_image132

     adj(A)跟我們線性代數中學的clip_image134是一個意思,因此

 clip_image135

7. ICA算法擴展描述

     上面介紹的內容基本上是講義上的,與我看的另一篇《Independent Component Analysis:

Algorithms and Applications》(Aapo Hyvärinen and Erkki Oja)有點出入。下面總結一下這篇文章裏提到的一些內容(有些我也沒看明白)。

     首先裏面提到了一個與“獨立”相似的概念“不相關(uncorrelated)”。Uncorrelated屬於部分獨立,而不是完全獨立,怎麼刻畫呢?

     如果隨機變量clip_image002clip_image004是獨立的,當且僅當clip_image006

     如果隨機變量clip_image002[1]clip_image004[1]是不相關的,當且僅當clip_image008

     第二個不相關的條件要比第一個獨立的條件“松”一些。因爲獨立能推出不相關,不相關推不出獨立。

     證明如下:

     clip_image009

     clip_image010

     clip_image012

     反過來不能推出。

     比如,clip_image002[2]clip_image004[2]的聯合分佈如下(0,1),(0,-1),(1,0),(-1,0)。

     clip_image014

     因此clip_image002[3]clip_image004[3]不相關,但是

     clip_image016

     因此clip_image002[4]clip_image004[4]不滿足上面的積分公式,clip_image002[5]clip_image004[5]不是獨立的。

     上面提到過,如果clip_image018是高斯分佈的,A是正交的,那麼clip_image020也是高斯分佈的,且clip_image020[1]clip_image022之間是獨立的。那麼無法確定A,因爲任何正交變換都可以讓clip_image020[2]達到同分布的效果。但是如果clip_image018[1]中只有一個分量是高斯分佈的,仍然可以使用ICA。

     那麼ICA要解決的問題變爲:如何從x中推出s,使得s最不可能滿足高斯分佈?

     中心極限定理告訴我們:大量獨立同分布隨機變量之和滿足高斯分佈。

     clip_image023

     我們一直假設的是clip_image020[3]是由獨立同分布的主元clip_image018[2]經過混合矩陣A生成。那麼爲了求clip_image018[3],我們需要計算clip_image018[4]的每個分量clip_image025。定義clip_image027,那麼clip_image029,之所以這麼麻煩再定義z是想說明一個關係,我們想通過整出一個clip_image031來對clip_image020[4]進行線性組合,得出y。而我們不知道得出的y是否是真正的s的分量,但我們知道y是s的真正分量的線性組合。由於我們不能使s的分量成爲高斯分佈,因此我們的目標求是讓y(也就是clip_image033)最不可能是高斯分佈時的w。

     那麼問題遞歸到如何度量y是否是高斯分佈的了。

     一種度量方法是kurtosis方法,公式如下:

     clip_image034

     如果y是高斯分佈,那麼該函數值爲0,否則絕大多數情況下值不爲0。

     但這種度量方法不怎麼好,有很多問題。看下一種方法:

     負熵(Negentropy)度量方法。

     我們在信息論裏面知道對於離散的隨機變量Y,其熵是

     clip_image035

     連續值時是

     clip_image036

     在信息論裏有一個強有力的結論是:高斯分佈的隨機變量是同方差分佈中熵最大的。也就是說對於一個隨機變量來說,滿足高斯分佈時,最隨機。

     定義負熵的計算公式如下:

     clip_image037

     也就是隨機變量y相對於高斯分佈時的熵差,這個公式的問題就是直接計算時較爲複雜,一般採用逼近策略。

     clip_image038

     這種逼近策略不夠好,作者提出了基於最大熵的更優的公式:

     clip_image039

     之後的FastICA就基於這個公式。

     另外一種度量方法是最小互信息方法:

     clip_image040

     這個公式可以這樣解釋,前一個H是clip_image042的編碼長度(以信息編碼的方式理解),第二個H是y成爲隨機變量時的平均編碼長度。之後的內容包括FastICA就不再介紹了,我也沒看懂。

8. ICA的投影追蹤解釋(Projection Pursuit)

     投影追蹤在統計學中的意思是去尋找多維數據的“interesting”投影。這些投影可用在數據可視化、密度估計和迴歸中。比如在一維的投影追蹤中,我們尋找一條直線,使得所有的數據點投影到直線上後,能夠反映出數據的分佈。然而我們最不想要的是高斯分佈,最不像高斯分佈的數據點最interesting。這個與我們的ICA思想是一直的,尋找獨立的最不可能是高斯分佈的s。

     在下圖中,主元是縱軸,擁有最大的方差,但最interesting的是橫軸,因爲它可以將兩個類分開(信號分離)。

     clip_image043

9. ICA算法的前處理步驟

     1、中心化:也就是求x均值,然後讓所有x減去均值,這一步與PCA一致。

     2、漂白:目的是將x乘以一個矩陣變成clip_image045,使得clip_image045[1]的協方差矩陣是clip_image047。解釋一下吧,原始的向量是x。轉換後的是clip_image045[2]

     clip_image045[3]的協方差矩陣是clip_image047[1],即

     clip_image048

     我們只需用下面的變換,就可以從x得到想要的clip_image045[4]

     clip_image049

     其中使用特徵值分解來得到E(特徵向量矩陣)和D(特徵值對角矩陣),計算公式爲

     clip_image050

     下面用個圖來直觀描述一下:

     假設信號源s1和s2是獨立的,比如下圖橫軸是s1,縱軸是s2,根據s1得不到s2。

     clip_image051

     我們只知道他們合成後的信號x,如下

     image

     此時x1和x2不是獨立的(比如看最上面的尖角,知道了x1就知道了x2)。那麼直接代入我們之前的極大似然概率估計會有問題,因爲我們假定x是獨立的。

     因此,漂白這一步爲了讓x獨立。漂白結果如下:

     clip_image053

     可以看到數據變成了方陣,在clip_image045[5]的維度上已經達到了獨立。

     然而這時x分佈很好的情況下能夠這樣轉換,當有噪音時怎麼辦呢?可以先使用前面提到的PCA方法來對數據進行降維,濾去噪聲信號,得到k維的正交向量,然後再使用ICA。

10. 小結

     ICA的盲信號分析領域的一個強有力方法,也是求非高斯分佈數據隱含因子的方法。從之前我們熟悉的樣本-特徵角度看,我們使用ICA的前提條件是,認爲樣本數據由獨立非高斯分佈的隱含因子產生,隱含因子個數等於特徵數,我們要求的是隱含因子。

     而PCA認爲特徵是由k個正交的特徵(也可看作是隱含因子)生成的,我們要求的是數據在新特徵上的投影。同是因子分析,一個用來更適合用來還原信號(因爲信號比較有規律,經常不是高斯分佈的),一個更適合用來降維(用那麼多特徵幹嘛,k個正交的即可)。有時候也需要組合兩者一起使用。這段是我的個人理解,僅供參考。

五.MDS 
假設給定N個點,切每對點之間的距離dij.但我們不知道這些點的確切座標,也不知道他們的維度,以及該距離是如何計算的。多維定標(MDS)是把這些點映射到低維空間(如2維)的方法,使他們在低維空間的歐式距離儘可能的接近原空間給定的距離dij.實際上,在相關矩陣上而不是協方差矩陣上做PCA等價於標準化的歐式距離做MDS,其中每個變量有單位方差。這裏也不做詳細解釋。


六.線性判別分析(LDA)

1. 問題

     之前我們討論的PCA、ICA也好,對樣本數據來言,可以是沒有類別標籤y的。回想我們做迴歸時,如果特徵太多,那麼會產生不相關特徵引入、過度擬合等問題。我們可以使用PCA來降維,但PCA沒有將類別標籤考慮進去,屬於無監督的。

     比如回到上次提出的文檔中含有“learn”和“study”的問題,使用PCA後,也許可以將這兩個特徵合併爲一個,降了維度。但假設我們的類別標籤y是判斷這篇文章的topic是不是有關學習方面的。那麼這兩個特徵對y幾乎沒什麼影響,完全可以去除。

     再舉一個例子,假設我們對一張100*100像素的圖片做人臉識別,每個像素是一個特徵,那麼會有10000個特徵,而對應的類別標籤y僅僅是0/1值,1代表是人臉。這麼多特徵不僅訓練複雜,而且不必要特徵對結果會帶來不可預知的影響,但我們想得到降維後的一些最佳特徵(與y關係最密切的),怎麼辦呢?

2. 線性判別分析(二類情況)

     回顧我們之前的logistic迴歸方法,給定m個n維特徵的訓練樣例clip_image002(i從1到m),每個clip_image004對應一個類標籤clip_image006。我們就是要學習出參數clip_image008,使得clip_image010(g是sigmoid函數)。

     現在只考慮二值分類情況,也就是y=1或者y=0。

     爲了方便表示,我們先換符號重新定義問題,給定特徵爲d維的N個樣例,clip_image012,其中有clip_image014個樣例屬於類別clip_image016,另外clip_image018個樣例屬於類別clip_image020

     現在我們覺得原始特徵數太多,想將d維特徵降到只有一維,而又要保證類別能夠“清晰”地反映在低維數據上,也就是這一維就能決定每個樣例的類別。

     我們將這個最佳的向量稱爲w(d維),那麼樣例x(d維)到w上的投影可以用下式來計算

     clip_image022

     這裏得到的y值不是0/1值,而是x投影到直線上的點到原點的距離。

     當x是二維的,我們就是要找一條直線(方向爲w)來做投影,然後尋找最能使樣本點分離的直線。如下圖:

     clip_image024

     從直觀上來看,右圖比較好,可以很好地將不同類別的樣本點分離。

     接下來我們從定量的角度來找到這個最佳的w。

     首先我們尋找每類樣例的均值(中心點),這裏i只有兩個

     clip_image026

     由於x到w投影后的樣本點均值爲

     clip_image028

     由此可知,投影后的的均值也就是樣本中心點的投影。

     什麼是最佳的直線(w)呢?我們首先發現,能夠使投影后的兩類樣本中心點儘量分離的直線是好的直線,定量表示就是:

     clip_image030

     J(w)越大越好。

     但是隻考慮J(w)行不行呢?不行,看下圖

     clip_image031

     樣本點均勻分佈在橢圓裏,投影到橫軸x1上時能夠獲得更大的中心點間距J(w),但是由於有重疊,x1不能分離樣本點。投影到縱軸x2上,雖然J(w)較小,但是能夠分離樣本點。因此我們還需要考慮樣本點之間的方差,方差越大,樣本點越難以分離。

     我們使用另外一個度量值,稱作散列值(scatter),對投影后的類求散列值,如下

     clip_image033

     從公式中可以看出,只是少除以樣本數量的方差值,散列值的幾何意義是樣本點的密集程度,值越大,越分散,反之,越集中。

     而我們想要的投影后的樣本點的樣子是:不同類別的樣本點越分開越好,同類的越聚集越好,也就是均值差越大越好,散列值越小越好。正好,我們可以使用J(w)和S來度量,最終的度量公式是

     clip_image035

     接下來的事就比較明顯了,我們只需尋找使J(w)最大的w即可。

     先把散列值公式展開

     clip_image037

     我們定義上式中中間那部分

     clip_image039

     這個公式的樣子不就是少除以樣例數的協方差矩陣麼,稱爲散列矩陣(scatter matrices)

     我們繼續定義

     clip_image041

     clip_image043稱爲Within-class scatter matrix。

     那麼回到上面clip_image045的公式,使用clip_image047替換中間部分,得

     clip_image049

     clip_image051

     然後,我們展開分子

     clip_image052

     clip_image054稱爲Between-class scatter,是兩個向量的外積,雖然是個矩陣,但秩爲1。

     那麼J(w)最終可以表示爲

     clip_image056

     在我們求導之前,需要對分母進行歸一化,因爲不做歸一的話,w擴大任何倍,都成立,我們就無法確定w。因此我們打算令clip_image058,那麼加入拉格朗日乘子後,求導

     clip_image059

     其中用到了矩陣微積分,求導時可以簡單地把clip_image061當做clip_image063看待。

     如果clip_image043[1]可逆,那麼將求導後的結果兩邊都乘以clip_image065,得

     clip_image066

     這個可喜的結果就是w就是矩陣clip_image068的特徵向量了。

     這個公式稱爲Fisher linear discrimination。

     等等,讓我們再觀察一下,發現前面clip_image070的公式

     clip_image072

     那麼

     clip_image074

     代入最後的特徵值公式得

     clip_image076

     由於對w擴大縮小任何倍不影響結果,因此可以約去兩邊的未知常數clip_image078clip_image080,得到

     clip_image082

     至此,我們只需要求出原始樣本的均值和方差就可以求出最佳的方向w,這就是Fisher於1936年提出的線性判別分析。

     看上面二維樣本的投影結果圖:

     clip_image083

3. 線性判別分析(多類情況)

     前面是針對只有兩個類的情況,假設類別變成多個了,那麼要怎麼改變,才能保證投影后類別能夠分離呢?

我們之前討論的是如何將d維降到一維,現在類別多了,一維可能已經不能滿足要求。假設我們有C個類別,需要K維向量(或者叫做基向量)來做投影。

     將這K維向量表示爲clip_image085

     我們將樣本點在這K維向量投影后結果表示爲clip_image087,有以下公式成立

     clip_image089

     clip_image091

     爲了像上節一樣度量J(w),我們打算仍然從類間散列度和類內散列度來考慮。

     當樣本是二維時,我們從幾何意義上考慮:

     clip_image092

     其中clip_image094clip_image043[2]與上節的意義一樣,clip_image096是類別1裏的樣本點相對於該類中心點clip_image098的散列程度。clip_image100變成類別1中心點相對於樣本中心點clip_image102的協方差矩陣,即類1相對於clip_image102[1]的散列程度。

     clip_image043[3]

     clip_image104

     clip_image106的計算公式不變,仍然類似於類內部樣本點的協方差矩陣

     clip_image108

     clip_image054[1]需要變,原來度量的是兩個均值點的散列情況,現在度量的是每類均值點相對於樣本中心的散列情況。類似於將clip_image094[1]看作樣本點,clip_image102[2]是均值的協方差矩陣,如果某類裏面的樣本點較多,那麼其權重稍大,權重用Ni/N表示,但由於J(w)對倍數不敏感,因此使用Ni。

     clip_image110

     其中

     clip_image112

     clip_image102[3]是所有樣本的均值。

     上面討論的都是在投影前的公式變化,但真正的J(w)的分子分母都是在投影后計算的。下面我們看樣本點投影后的公式改變:

     這兩個是第i類樣本點在某基向量上投影后的均值計算公式。

     clip_image114

     clip_image116

     下面兩個是在某基向量上投影后的clip_image043[4]clip_image070[1]

     clip_image118

     clip_image120

     其實就是將clip_image102[4]換成了clip_image122

     綜合各個投影向量(w)上的clip_image124clip_image126,更新這兩個參數,得到

     clip_image128

     clip_image130

     W是基向量矩陣,clip_image124[1]是投影后的各個類內部的散列矩陣之和,clip_image126[1]是投影后各個類中心相對於全樣本中心投影的散列矩陣之和。

     回想我們上節的公式J(w),分子是兩類中心距,分母是每個類自己的散列度。現在投影方向是多維了(好幾條直線),分子需要做一些改變,我們不是求兩兩樣本中心距之和(這個對描述類別間的分散程度沒有用),而是求每類中心相對於全樣本中心的散列度之和。

     然而,最後的J(w)的形式是

     clip_image132

     由於我們得到的分子分母都是散列矩陣,要將矩陣變成實數,需要取行列式。又因爲行列式的值實際上是矩陣特徵值的積,一個特徵值可以表示在該特徵向量上的發散程度。因此我們使用行列式來計算(此處我感覺有點牽強,道理不是那麼有說服力)。

     整個問題又迴歸爲求J(w)的最大值了,我們固定分母爲1,然後求導,得出最後結果(我翻查了很多講義和文章,沒有找到求導的過程)

     clip_image134

     與上節得出的結論一樣

     clip_image136

     最後還歸結到了求矩陣的特徵值上來了。首先求出clip_image138的特徵值,然後取前K個特徵向量組成W矩陣即可。

     注意:由於clip_image070[2]中的clip_image140 秩爲1,因此clip_image070[3]的秩至多爲C(矩陣的秩小於等於各個相加矩陣的秩的和)。由於知道了前C-1個clip_image094[2]後,最後一個clip_image142可以有前面的clip_image094[3]來線性表示,因此clip_image070[4]的秩至多爲C-1。那麼K最大爲C-1,即特徵向量最多有C-1個。特徵值大的對應的特徵向量分割性能最好。

     由於clip_image138[1]不一定是對稱陣,因此得到的K個特徵向量不一定正交,這也是與PCA不同的地方。

4. 實例

      將3維空間上的球體樣本點投影到二維上,W1相比W2能夠獲得更好的分離效果。

      clip_image002

      PCA與LDA的降維對比:

      clip_image004

      PCA選擇樣本點投影具有最大方差的方向,LDA選擇分類性能最好的方向。

      LDA既然叫做線性判別分析,應該具有一定的預測功能,比如新來一個樣例x,如何確定其類別?

      拿二值分來來說,我們可以將其投影到直線上,得到y,然後看看y是否在超過某個閾值y0,超過是某一類,否則是另一類。而怎麼尋找這個y0呢?

      看

      clip_image006

      根據中心極限定理,獨立同分布的隨機變量和符合高斯分佈,然後利用極大似然估計求

      clip_image008

      然後用決策理論裏的公式來尋找最佳的y0,詳情請參閱PRML。

      這是一種可行但比較繁瑣的選取方法,可以看第7節(一些問題)來得到簡單的答案。

5. 使用LDA的一些限制

      1、 LDA至多可生成C-1維子空間

      LDA降維後的維度區間在[1,C-1],與原始特徵數n無關,對於二值分類,最多投影到1維。

      2、 LDA不適合對非高斯分佈樣本進行降維。

      clip_image010

      上圖中紅色區域表示一類樣本,藍色區域表示另一類,由於是2類,所以最多投影到1維上。不管在直線上怎麼投影,都難使紅色點和藍色點內部凝聚,類間分離。

      3、 LDA在樣本分類信息依賴方差而不是均值時,效果不好。

      clip_image011

      上圖中,樣本點依靠方差信息進行分類,而不是均值信息。LDA不能夠進行有效分類,因爲LDA過度依靠均值信息。

      4、 LDA可能過度擬合數據。

6. LDA的一些變種

1、 非參數LDA

      非參數LDA使用本地信息和K臨近樣本點來計算clip_image013,使得clip_image013[1]是全秩的,這樣我們可以抽取多餘C-1個特徵向量。而且投影后分離效果更好。

2、 正交LDA

      先找到最佳的特徵向量,然後找與這個特徵向量正交且最大化fisher條件的向量。這種方法也能擺脫C-1的限制。

3、 一般化LDA

      引入了貝葉斯風險等理論

4、 核函數LDA

      將特徵clip_image015,使用核函數來計算。

7. 一些問題

      上面在多值分類中使用的

      clip_image017

      是帶權重的各類樣本中心到全樣本中心的散列矩陣。如果C=2(也就是二值分類時)套用這個公式,不能夠得出在二值分類中使用的clip_image013[2]

      clip_image019

      因此二值分類和多值分類時求得的clip_image013[3]會不同,而clip_image021意義是一致的。

      對於二值分類問題,令人驚奇的是最小二乘法和Fisher線性判別分析是一致的。

      下面我們證明這個結論,並且給出第4節提出的y0值得選取問題。

      回顧之前的線性迴歸,給定N個d維特徵的訓練樣例clip_image023(i從1到N),每個clip_image025對應一個類標籤clip_image027。我們之前令y=0表示一類,y=1表示另一類,現在我們爲了證明最小二乘法和LDA的關係,我們需要做一些改變

      clip_image029

      就是將0/1做了值替換。

      我們列出最小二乘法公式

      clip_image031

      w和clip_image033是擬合權重參數。

      分別對clip_image033[1]和w求導得

      clip_image035

      clip_image037

      從第一個式子展開可以得到

      clip_image039

      消元后,得

      clip_image041

      clip_image043

      可以證明第二個式子展開後和下面的公式等價

      clip_image045

      其中clip_image047clip_image049與二值分類中的公式一樣。

      由於clip_image051

      因此,最後結果仍然是

      clip_image053

      這個過程從幾何意義上去理解也就是變形後的線性迴歸(將類標籤重新定義),線性迴歸後的直線方向就是二值分類中LDA求得的直線方向w。

      好了,我們從改變後的y的定義可以看出y>0屬於類clip_image055,y<0屬於類clip_image057。因此我們可以選取y0=0,即如果clip_image059,就是類clip_image055[1],否則是類clip_image057[1]

 

這裏主要介紹線性判別式分析(LDA),主要基於Fisher Discriminant Analysis with Kernals[1]和Fisher Linear Discriminant Analysis[2]兩篇文獻。

  LDA與PCA的一大不同點在於,LDA是有監督的算法,而PCA是無監督的,因爲PCA算法沒有考慮數據的標籤(類別),只是把原數據映射到一些方差比較大的方向(基)上去而已。而LDA算法則考慮了數據的標籤。文獻[2]中舉了一個非常形象的例子,說明了在有些情況下,PCA算法的性能很差,如下圖:                                   

 我們用不同的顏色標註C1,C2兩個不同類別的數據。根據PCA算法,數據應該映射到方差最大的那個方向,亦即Y軸方向,但是如果映射到Y軸方向,C1,C2兩個不同類別的數據將完全混合在一起,很難區分開,所以使用PCA算法進行降維後再進行分類的效果會非常差。但是使用LDA算法,數據會映射到X軸方向。

  LDA算法會考慮到數據的類別屬性,給定兩個類別C1、C2,我們希望找到一個向量ω,當數據映射到ω的方向上時,來自兩個類的數據儘可能的分開,同一個類內的數據儘可能的緊湊。數據的映射公式爲:z=ωTx,  其中z是數據x到ω上的投影,因而也是一個d維到1維的維度歸約。

  令 m 1和m 1分別表示C1類數據投影之前個投影之後的均值,易知m 1=ωTm1,同理m2=ωTm2

  令s 1 2和s22分別表示C1和C2類數據在投影之後的散佈(scatter),亦即s12=∑(ωTxt-m1)2rt,s22=∑(ωTxt-m2)2(1-rt)其中如果xt∈C1,則rt=1,否則rt=0。

  我們希望|m 1-m 2|儘可能的大,而s12+s22儘可能的小,Fisher線性判別式就是最大化下面式子的ω:

  J(ω)=(m 1-m 2)2/(s12+s22)     式子-1

  改寫式子-1中的分子:  (m 1-m 2)2=  (ωTm1-ωTm2)2=ωT(m1-m2)(m1-m2)Tω=ωTSBω

  其中 S B=( m 1- m 2)(m1-m2)T    式子-2

  是 類間散佈矩陣(between class scatter matrix)。

  改寫式子-1中的分母:

  ∑(ω Tx t-m1)2rt=∑ωT(xt-m1)(xt-m1)Tωrt=ωTS1ω, 其中S 1=∑rt(xt-m1)(xt-m1)T是C1的類內散佈矩陣(within class scatter matrix)。

  令 S W= S 1+ S 2,是 類內散佈的總和,則s 12+s22=ωTSWω。

  所以式子-1可以改寫爲:

  J(ω)=(ω T S Bω)/(ω TSWω)    式子-3

  我們只需要使式子-3對於ω求導,然後使導數等於0,便可以求出ω的值:ω=c S W-1(m1-m2),其中c是一個參數,我們只對ω的方向感興趣,所以c可以取值爲1.

  另外,最後求得的 J(ω)的值等於λ k,λ k是SW-1SB的最大的特徵值,而ω則是SW-1SB的最大特徵值所對應的特徵向量。

  最後有一些關於LDA算法的討論,出自文獻[1]:

  1. Fisher LDA對數據的分佈做了一些很強的假設,比如每個類的數據都是高斯分佈,各個類的協方差相等。雖然這些強假設很可能在實際數據中並不滿足,但是Fisher LDA已經被證明是非常有效地降維算法,其中的原因是線性模型對於噪音的魯棒性比較好,不容易過擬合。

  2. 準確的估計數據的散佈矩陣是非常重要的,很可能會有較大的偏置。用式子-2進行估計在樣本數據比較少(相對於維數來說)時會產生較大的變異性。

  參考文獻:

  [1] Fisher Discriminant Analysis with Kernals. Sebastian Mika, Gunnar Ratsch, Jason Weston, Bernhadr Scholkopf, Klaus-Robert Muller.

  [2] Fisher Linear Discriminant Analysis. Max Welling.

  [3] 機器學習導論。 Ethem Alpaydin

七.局部線性嵌入LLE

LLE(Locally Linear Embedding)算法,即局部線性嵌入算法。該算法是針對非線性信號特徵矢量維數的優化方法,這種維數優化並不是僅僅在數量上簡單的約簡,而是在保持原始數據性質不變的情況下,將高維空間的信號映射到低維空間上,即特徵值的二次提取[1]  。

理論的提出

LLE 是 S.T.Roweis 等人提出了一種針對非線性數據的無監督降維方法,它是流行學習算法中的一種用局部線性反映全局的非線性的算法,並能夠使降維的數據保持原有數據的拓撲結構。LLE 是一種用局部線性的非線性維數約簡方法,該算法在一定程度上擴大了對維數約簡的認識。[2] 

自從在 2000 年 Roweis 提出了局部線性嵌入(LLE)算法後,使得流行學習在最近幾年裏得到迅速發展,流行學習與傳統的線性降維方法相比,能夠非常有效地發現非線性高維空間的維數,有利於對高維數據的維數約簡和數據分析,在機器學習和認知科學領域受到廣大研究者的重視。[3] 
基本原理
LLE 算法假設在局部領域內數據點是線性的,所以鄰域內任意一點,都可用局部近鄰點來線性表示。LLE 算法是由重構成本函數最小化求出最優權值,各點的局部鄰域權值能夠在多尺度變換下仍保持不變。LLE 算法無迭代計算過程,可使計算複雜度大幅度的減小。
假設樣本集由 N 個 D 維矢量Xi 組成。每一樣本點都可以用它的近鄰域點帶權值線性組合表示,其中權值能反映出局部鄰域的信息。根據這些信息,可使這種低維空間中仍保留原高維空間中的幾何性質,通過重疊的局部鄰域,得到整體的信息。這種方法的關鍵就在於:用局部線性結構來反映全局的非線性結構。在每一小塊局部上,流行可近似的看成是平坦的,故這種算法不會產生較大的錯誤
將 N 個 D 維矢量組成的矩陣作爲輸入,輸出矢量爲一個 N 個 d 維矢量(d<D)組成的矩陣。矩陣 Y 的第 k 列對應是矩陣 X 中的第 k 列。
優缺點
優點
(1)LLE 算法能夠突破主元分析法在非線性數據的侷限,可以處理、分析非線性信號。
(2)該算法可以很好表達數據的內在流行結構,能夠保留數據的本質特徵,這樣可以很好的保留原有數據特徵,這點在故障診斷中有重要的意義。
(3)該算法本身參數的選擇很少,故能更好的進行特徵參數優化,這爲故障檢測和故障診斷打下堅實的基礎。
缺點
(1)LLE 算法需要進行稠密採樣;
(2)該算法的局部鄰域參數 k、嵌入維數 d 和信號中的噪聲,會影響高維空間的降維效果;
(3)LLE 無法處理等距流行等。[4] 
主要應用
LLE 主要應用在人臉識別圖像處理等領域中,在故障診斷中應用較少,並且大部分是在信號處理中的應用。
參考資料
  • 1.  龔明.基於局部線性嵌入算法的柴油機故障診斷研究[碩士學位論文].太原:中北大學,2013.
  • 2.  Mclvor R T ,Humphreys P K.A case-based reasoning approach to the make or buy decision[J].Integrated Manufacturing Systems,2000(5):295~310.
  • 3.  王珏,周志華,周傲英.機器學習及其應用:清華大學出版社,2000:135-139
  • 4.  羅方瓊.LLE 流行學習的若干問題分析[J].研究與開發,2012(3):13~16

八.等距特徵映射

實際上,6和7屬於流形算法了。這裏簡單解釋下等距特徵映射,也叫ISOMAP。

例如,一張人臉100*100的二維圖像,在這種情況下,每張人臉是10000維空間裏的一個點。假設隨着一個人由右向左慢慢轉動頭部,我們取一系列照片,我們得到這個面部圖像序列沿着10000維空間中的一條軌跡,而這條曲線不是線性的。現在考慮許多人的人臉,隨着他們轉動頭部,所有人的人臉軌跡定義了10000維空間中的一個流形,並且這就是我們想要建模的。實際上,兩張人臉的相似性,不能簡單用像素差的和表示,而是應該計算沿着流形的距離,這稱作測地距離。等距特徵映射就是估計這種距離,使用多維定標進行緯度歸約。

九.小波變換

離散小波變換(DWT)是一種線性信號處理技術,當用於數據向量X時,將它變換成數值上不同的小波係數向量X’。兩個向量具有相同的長度。當這種技術用於數據歸約時,每個元組看作一個n維數據向量,即X = (x1, x2, ., xn),描述n個數據庫屬性在元組上的n個測量值。

“如果小波變換的數據與原數據的長度相等,這種技術如何能夠用於數據歸約?”關鍵在在我們的記號中,代表向量的變量用粗斜體,描述向量的度量用斜體。

於小波變換後的數據可以截短。僅存放一小部分最強的小波係數,就能保留近似的壓縮數據。

例如,保留大於用戶設定的某個閾值的所有小波係數,其他係數置爲0。這樣,結果數據表示非常稀疏,使得如果在小波空間進行計算,利用數據稀疏特點的操作計算得非常快。該技術也能用於消除噪聲,而不會光滑掉數據的主要特徵,使得它們也能有效地用於數據清理。給定一組係數,使用所用的DWT的逆,可以構造原數據的近似。

DWT與離散傅里葉變換(DFT)有密切關係,DFT是一種涉及正弦和餘弦的信號處理技術。然而一般地說,DWT是一種更好的有損壓縮。也就是說,對於給定的數據向量,如果DWT和DFT保留相同數目的係數,DWT將提供原數據的更準確的近似。因此,對於等價的近似,DWT比DFT需要的空間小。不像DFT,小波空間局部性相當好,有助於保留局部細節。

只有一種DFT,但有若干族DWT。圖2-16顯示了一些小波族。流行的小波變換包括Haar-2, Daubechies-4和Daubechies-6變換。應用離散小波變換的一般過程使用一種分層金字塔算法(pyramid algorithm),它在每次迭代將數據減半,導致很快的計算速度。該方法如下:

圖2-16 小波族的例子。小波名後的數是小波的消失瞬間。這是係數必須滿足的數學聯繫集,並且與小波係數的個數有關

(1)輸入數據向量的長度L必須是2的整數冪。必要時(L≥n),通過在數據向量後添加0, 這一條件可以滿足。 
(2)每個變換涉及應用兩個函數。第一個使用某種數據光滑,如求和或加權平均。第二個進行加權差分,產生數據的細節特徵。 
(3)兩個函數作用於X中的數據點對,即用於所有的測量對(x2i, x2i+1)。這導致兩個長度爲L/2的數據集。一般,它們分別代表輸入數據的光滑後的版本或低頻版本和它的高頻內容。
(4)兩個函數遞歸地作用於前面循環得到的數據集,直到得到的數據集長度爲2。 
(5)由以上迭代得到的數據集中選擇值,指定其爲數據變換的小波係數。等價地,可以將矩陣乘法用於輸入數據,以得到小波係數。所用的矩陣依賴於給定的DWT。矩陣必須是標準正交的,即列是單位向量並相互正交,使得矩陣的逆是它的轉置。儘管受篇幅限制,這裏我們不再討論,但這種性質允許由光滑和光滑-差數據集重構數據。通過將矩陣因子分解成幾個稀疏矩陣,對於長度爲n的輸入向量,“快速DWT”算法的複雜度爲O (n)。

小波變換可以用於多維數據,如數據立方體。可以按以下方法做:首先將變換用於第一個維,然後第二個,如此下去。計算複雜性關於立方體中單元的個數是線性的。對於稀疏或傾斜數據和具有有序屬性的數據,小波變換給出很好的結果。據報道,小波變換的有損壓縮比當前的商業標準JPEG壓縮好。小波變換有許多實際應用,包括指紋圖像壓縮、計算機視覺、時間序列數據分析和數據清理。

 

流形學習

轉自http://blog.sciencenet.cn/blog-722391-583413.html

流形(manifold)的概念最早是在1854年由 Riemann 提出的(德文Mannigfaltigkeit),現代使用的流形定義則是由 Hermann Weyl 在1913年給出的。江澤涵先生對這個名詞的翻譯出自文天祥《正氣歌》“天地有正氣,雜然賦流形”,日本人則將之譯爲“多樣體”,二者孰雅孰鄙,高下立判。

流形(Manifold),一般可以認爲是局部具有歐氏空間性質的空間。而實際上歐氏空間就是流形最簡單的實例。像地球表面這樣的球面是一個稍爲複雜的例子。一般的流形可以通過把許多平直的片折彎並粘連而成。

流形在數學中用於描述幾何形體,它們提供了研究可微性的最自然的舞臺。物理上,經典力學的相空間和構造廣義相對論的時空模型的四維僞黎曼流形都是流形的實例。他們也用於組態空間(configuration space)。環(torus)就是雙擺的組態空間。

如果把幾何形體的拓撲結構看作是完全柔軟的,因爲所有變形(同胚)會保持拓撲結構不變,而把解析簇看作是硬的,因爲整體的結構都是固定的(譬如一個1維多項式,如果你知道(0,1)區間的取值,則整個實屬範圍的值都是固定的,局部的擾動會導致全局的變化),那麼我們可以把光滑流形看作是介於兩者之間的形體,其無窮小的結構是硬的,而整體結構是軟的。這也許是中文譯名流形的原因(整體的形態可以流動),該譯名由著名數學家和數學教育學家江澤涵引入。這樣,流形的硬度使它能夠容納微分結構,而它的軟度使得它可以作爲很多需要獨立的局部擾動的數學和物理上的模型。

最容易定義的流形是拓撲流形,它局部看起來象一些"普通"的歐氏空間Rn。形式化的講,一個拓撲流形是一個局部同胚於一個歐氏空間的拓撲空間。這表示每個點有一個領域,它有一個同胚(連續雙射其逆也連續)將它映射到Rn。這些同胚是流形的座標圖。

通常附加的技術性假設被加在該拓撲空間上,以排除病態的情形。可以根據需要要求空間是豪斯朵夫的並且第二可數。這表示下面所述的有兩個原點的直線不是拓撲流形,因爲它不是豪斯朵夫的。

流形在某一點的維度就是該點映射到的歐氏空間圖的維度(定義中的數字n)。連通流形中的所有點有相同的維度。有些作者要求拓撲流形的所有的圖映射到同一歐氏空間。這種情況下,拓撲空間有一個拓撲不變量,也就是它的維度。其他作者允許拓撲流形的不交併有不同的維度。

 

 

自從2000年以後,流形學習被認爲屬於非線性降維的一個分支。衆所周知,引導這一領域迅速發展的是2000年Science雜誌上的兩篇文章: Isomap and LLE (Locally Linear Embedding)。

1. 流形學習的基本概念

那流形學習是什莫呢?爲了好懂,我儘可能應用少的數學概念來解釋這個東西。所謂流形(manifold)就是一般的幾何對象的總稱。比如人,有中國人、美國人等等;流形就包括各種維數的曲線曲面等。和一般的降維分析一樣,流形學習把一組在高維空間中的數據在低維空間中重新表示。和以往方法不同的是,在流形學習中有一個假設,就是所處理的數據採樣於一個潛在的流形上,或是說對於這組數據存在一個潛在的流形。對於不同的方法,對於流形性質的要求各不相同,這也就產生了在流形假設下的各種不同性質的假設,比如在Laplacian Eigenmaps中要假設這個流形是緊緻黎曼流形等。對於描述流形上的點,我們要用座標,而流形上本身是沒有座標的,所以爲了表示流形上的點,必須把流形放入外圍空間(ambient space)中,那末流形上的點就可以用外圍空間的座標來表示。比如R^3中的球面是個2維的曲面,因爲球面上只有兩個自由度,但是球面上的點一般是用外圍R^3空間中的座標表示的,所以我們看到的R^3中球面上的點有3個數來表示的。當然球面還有柱座標球座標等表示。對於R^3中的球面來說,那末流形學習可以粗略的概括爲給出R^3中的表示,在保持球面上點某些幾何性質的條件下,找出找到一組對應的內蘊座標(intrinsic coordinate)表示,顯然這個表示應該是兩維的,因爲球面的維數是兩維的。這個過程也叫參數化(parameterization)。直觀上來說,就是把這個球面儘量好的展開在通過原點的平面上。在PAMI中,這樣的低維表示也叫內蘊特徵(intrinsic feature)。一般外圍空間的維數也叫觀察維數,其表示也叫自然座標(外圍空間是歐式空間)表示,在統計中一般叫observation。

瞭解了流形學習的這個基礎,那末流形學習中的一些是非也就很自然了,這個下面穿插來說。由此,如果你想學好流形學習裏的方法,你至少要了解一些微分流形和黎曼幾何的基本知識。

2. 代表方法

a) Isomap。

Josh Tenenbaum的Isomap開創了一個數據處理的新戰場。在沒有具體說Isomap之前,有必要先說說MDS(Multidimensional Scaling)這個方法。我們國內的很多人知道PCA,卻很多人不知道MDS。PCA和MDS是相互對偶的兩個方法。MDS就是理論上保持歐式距離的一個經典方法,MDS最早主要用於做數據的可視化。由於MDS得到的低維表示中心在原點,所以又可以說保持內積。也就是說,用低維空間中的內積近似高維空間中的距離。經典的MDS方法,高維空間中的距離一般用歐式距離。

Isomap就是借窩生蛋。他的理論框架就是MDS,但是放在流形的理論框架內,原始的距離換成了流形上的測地線(geodesic)距離。其它一模一樣。所謂的測地線,就是流形上加速度爲零的曲線,等同於歐式空間中的直線。我們經常聽到說測地線是流形上兩點之間距離最短的線。其實這末說是不嚴謹的。流形上兩點之間距離最短的線是測地線,但是反過來不一定對。另外,如果任意兩個點之間都存在一個測地線,那末這個流形必須是連通的鄰域都是凸的。Isomap就是把任意兩點的測地線距離(準確地說是最短距離)作爲流形的幾何描述,用MDS理論框架理論上保持這個點與點之間的最短距離。在Isomap中,測地線距離就是用兩點之間圖上的最短距離來近似的,這方面的算法是一般計算機系中用的圖論中的經典算法。

如果你曾細緻地看過Isomap主頁上的matlab代碼,你就會發現那個代碼的實現複雜度遠超與實際論文中敘述的算法。在那個代碼中,除了論文中寫出的算法外,還包括了 outlier detection和embedding scaling。這兩樣東西,保證了運行他們的程序得到了結果一般來說相對比較理想。但是,這在他們的算法中並沒有敘述。如果你直接按照他論文中的方法來實現,你可以體會一下這個結果和他們結果的差距。從此我們也可以看出,那幾個作者做學問的嚴謹態度,這是值得我們好好學習的。

另外比較有趣的是,Tenenbaum根本不是做與數據處理有關算法的人,他是做計算認知科學(computational cognition science)的。在做這個方法的時候,他還在stanford,02年就去了MIT開創一派,成了CoCoSci 的掌門人,他的組成長十分迅速。但是有趣的是,在Isomap之後,他包括他在MIT帶的學生就從來再也沒有做過類似的工作。其原因我今年夏天有所耳聞。他在今年參加 UCLA Alan Yuille 組織的一個summer school上說,(不是原文,是大意)我們經常忘了做研究的原始出發點是什莫。他做Isomap就是爲了找一個好的visual perception的方法,他還堅持了他的方向和信仰,computational cognition,他沒有隨波逐流。而由他引導起來的 manifold learning 卻快速的發展成了一個新的方向。

這是一個值得我們好好思考的問題。我們做一個東西,選擇一個研究方向究竟是爲了什莫。你考慮過嗎?
(當然,此問題也在問我自己)

b) LLE (Locally linear Embedding)

LLE在作者寫出的表達式看,是個具有十分對稱美的方法. 這種看上去的對稱對於啓發人很重要。LLE的思想就是,一個流形在很小的局部鄰域上可以近似看成歐式的,就是局部線性的。那末,在小的局部鄰域上,一個點就可以用它周圍的點在最小二乘意義下最優的線性表示。LLE把這個線性擬合的係數當成這個流形局部幾何性質的刻畫。那末一個好的低維表示,就應該也具有同樣的局部幾何,所以利用同樣的線性表示的表達式,最終寫成一個二次型的形式,十分自然優美。

注意在LLE出現的兩個加和優化的線性表達,第一個是求每一點的線性表示係數的。雖然原始公式中是寫在一起的,但是求解時,是對每一個點分別來求得。第二個表示式,是已知所有點的線性表示係數,來求低維表示(或嵌入embedding)的,他是一個整體求解的過程。這兩個表達式的轉化正好中間轉了個彎,使一些人困惑了,特別後面一個公式寫成一個二次型的過程並不是那末直觀,很多人往往在此卡住,而阻礙了全面的理解。我推薦大家去精讀 Saul 在JMLR上的那篇LLE的長文。那篇文章無論在方法表達還是英文書寫,我認爲都是精品,值得好好玩味學習。

另外值得強調的是,對於每一點處擬合得到的係數歸一化的操作特別重要,如果沒有這一步,這個算法就沒有效果。但是在原始論文中,他們是爲了保持數據在平行移動下embedding不變。

LLE的matlab代碼寫得簡潔明瞭,是一個樣板。

在此有必要提提Lawrence Saul這個人。在Isomap和LLE的作者們中,Saul算是唯一一個以流形學習(並不限於)爲研究對象開創學派的人。Saul早年主要做參數模型有關的算法。自從LLE以後,坐陣UPen創造了一個個佳績。主要成就在於他的兩個出色學生,Kilian Weinberger和 Fei Sha,做的方法。拿了很多獎,在此不多說,可以到他主頁上去看。Weinberger把學習核矩陣引入到流形學習中來。他的這個方法在流形學習中影響到不是很顯著,卻是在 convex optimization 中人人得知。Fei Sha不用多說了,machine learning中一個閃亮的新星,中國留學生之驕傲。現在他們一個在Yahoo,一個在Jordan手下做PostDoc。

c) Laplacian Eigenmaps

要說哪一個方法被做的全面,那莫非LE莫屬。如果只說LE這個方法本身,是不新的,許多年前在做mesh相關的領域就開始這莫用。但是放在黎曼幾何的框架內,給出完整的幾何分析的,應該是Belkin和Niyogi(LE作者)的功勞。

LE的基本思想就是用一個無向有權圖來描述一個流形,然後通過用圖的嵌入(graph embedding)來找低維表示。說白了,就是保持圖的局部鄰接關係的情況把這個圖從高維空間中重新畫在一個低維空間中(graph drawing)。

在至今爲止的流行學習的典型方法中,LE是速度最快、效果相對來說不怎莫樣的。但是LE有一個其他方法沒有的特點,就是如果出現outlier情況下,它的魯棒性(robustness)特別好。

後來Belkin和Niyogi又分析了LE的收斂性。大家不要忽視這個問題,很重要。鼓勵有興趣數學功底不錯的人好好看看這篇文章。

d) Hessian Eigenmaps

如果你對黎曼幾何不懂,基本上看不懂這個方法。又加作者表達的抽象,所以絕大多數人對這個方法瞭解不透徹。在此我就根據我自己的理解說說這個方法。

這個方法有兩個重點:(1)如果一個流形是局部等距(isometric)歐式空間中一個開子集的,那末它的Hessian矩陣具有d+1維的零空間。(2)在每一點處,Hessian係數的估計。
首先作者是通過考察局部Hessian的二次型來得出結論的,如果一個流形局部等距於歐式空間中的一個開子集,那末由這個流形patch到開子集到的映射函數是一個線性函數,線性函數的二次混合導數爲零,所以局部上由Hessian係數構成的二次型也爲零,這樣把每一點都考慮到,過渡到全局的Hessian矩陣就有d+1維的零空間,其中一維是常函數構成的,也就是1向量。其它的d維子空間構成等距座標。這就是理論基礎的大意,當然作者在介紹的時候,爲了保持理論嚴謹,作了一個由切座標到等距座標的過渡。

另外一個就是局部上Hessian係數的估計問題。我在此引用一段話:

If you approximate a function f(x) by a quadratic expansion

   f(x) = f(0) + (grad f)^T x  +  x^T Hf x + rem

then the hessian is what you get for the quadratic component.  So simply over a given neighborhood, develop the operator that approximates a function by its projection on 1, x_1,...,x_k,  x_1^2,...,x_k^2, x_1*x_2,... ,x_{k-1}*x_{k}.  Extract the component of the operator that delivers the projection on  x_1^2,...,x_k^2, x_1*x_2,... ,x_{k-1}*x_{k}.

dave

這段話是我在初學HE時候,寫信問Dave Donoho,他給我的回信。希望大家領會。如果你瞭解了上述基本含義,再去細看兩遍原始論文,也許會有更深的理解。由於HE牽扯到二階導數的估計,所以對噪聲很敏感。另外,HE的原始代碼中在計算局部切座標的時候,用的是奇異值分解(SVD),所以如果想用他們的原始代碼跑一下例如圖像之類的真實數據,就特別的慢。其實把他們的代碼改一下就可以了,利用一般PCA的快速計算方法,計算小尺寸矩陣的特徵向量即可。還有,在原始代碼中,他把Hessian係數歸一化了,這也就是爲什莫他們叫這個方法爲 Hessian LLE 的原因之一。

Dave Dohono是學術界公認的大牛,在流形學習這一塊,是他帶着他的一個學生做的,Carrie Grimes。現在這個女性研究員在Google做 project leader,學術界女生同學的楷模 : )

e) LTSA (Local tangent space alignment)

很榮幸,這個是國內學者(浙江大學數學系的老師ZHANG Zhenyue)爲第一作者做的一個在流行學習中最出色的方法。由於這個方法是由純數學做數值分析出身的老師所做,所以原始論文看起來公式一大堆,好像很難似的。其實這個方法非常直觀簡單。

象 Hessian Eigenmaps 一樣,流形的局部幾何表達先用切座標,也就是PCA的主子空間中的座標。那末對於流形一點處的切空間,它是線性子空間,所以可以和歐式空間中的一個開子集建立同構關係,最簡單的就是線性變換。在微分流形中,就叫做切映射 (tangential map),是個很自然很基礎的概念。把切座標求出來,建立出切映射,剩下的就是數值計算了。最終這個算法劃歸爲一個很簡單的跌代加和形式。如果你已經明白了MDS,那末你就很容易明白,這個算法本質上就是MDS的從局部到整體的組合。

這裏主要想重點強調一下,那個論文中使用的一個從局部幾何到整體性質過渡的alignment技術。在spectral method(特徵分解的)中,這個alignment方法特別有用。只要在數據的局部鄰域上你的方法可以寫成一個二次項的形式,就可以用。
其實LTSA最早的版本是在02年的DOCIS上。這個alignment方法在02年底Brand的 charting a manifold 中也出現,隱含在Hessian Eigenmaps中。在HE中,作者在從局部的Hessian矩陣過渡到全局的Hessian矩陣時,用了兩層加號,其中就隱含了這個alignment方法。後來國內一個叫 ZHAO Deli 的學生用這個方法重新寫了LLE,發在Pattern Recognition上,一個短文。可以預見的是,這個方法還會被髮揚光大。

ZHA Hongyuan 後來專門作了一篇文章來分析 alignment matrix 的譜性質,有興趣地可以找來看看。

f) MVU (Maximum variance unfolding)

這個方法剛發出來以後,名字叫做Semi-definite Embedding (SDE)。構建一個局部的稀疏歐式距離矩陣以後,作者通過一定約束條件(主要是保持距離)來學習到一個核矩陣,對這個核矩陣做PCA就得到保持距離的embedding,就這莫簡單。但是就是這個方法得了多少獎,自己可以去找找看。個人觀點認爲,這個方法之所以被如此受人賞識,無論在vision還是在learning,除了給流形學習這一領域帶來了一個新的解決問題的工具之外,還有兩個重點,一是核方法(kernel),二是半正定規劃(semi-definite programming),這兩股風無論在哪個方向(learning and Vision)上都吹得正猛。

g) S-Logmaps

aa

這個方法不太被人所知,但是我認爲這個是流形學習發展中的一個典型的方法(其實其他還有很多人也這莫認爲)。就效果來說,這個方法不算好,說它是一個典型的方法,是因爲這個方法應用了黎曼幾何中一個很直觀的性質。這個性質和法座標(normal coordinate)、指數映射(exponential map)和距離函數(distance function)有關。

如果你瞭解黎曼幾何,你會知道,對於流形上的一條測地線,如果給定初始點和初始點處測地線的切方向,那莫這個測地線就可以被唯一確定。這是因爲在這些初始條件下,描述測地線的偏微分方程的解是唯一的。那末流形上的一條測地線就可以和其起點處的切平面上的點建立一個對應關係。我們可以在這個切平面上找到一點,這個點的方向就是這個測地線在起點處的切方向,其長度等於這個測地線上的長。這樣的一個對應關係在局部上是一一對應的。那末這個在切平面上的對應點在切平面中就有一個座標表示,這個表示就叫做測地線上對應點的法座標表示(有的也叫指數座標)。那末反過來,我們可以把切平面上的點映射到流形上,這個映射過程就叫做指數映射(Logmap就倒過來)。如果流形上每一個點都可以這樣在同一個切平面上表示出來,那末我們就可以得到保持測地線長度的低維表示。如果這樣做得到,流形必須可以被單座標系統所覆蓋。

如果給定流形上的採樣點,如果要找到法座標,我們需要知道兩個東西,一是測地線距離,二是每個測地線在起點處的切方向。第一個東西好弄,利用Isomap中的方法直接就可以解決,關鍵是第二個。第二個作者利用了距離函數的梯度,這個梯度和那個切方向是一個等價的關係,一般的黎曼幾何書中都有敘述。作者利用一個局部切座標的二次泰勒展開來近似距離函數,而距離是知道的,就是測地線距離,局部切座標也知道,那末通過求一個簡單的最小二乘問題就可以估計出梯度方向。

如果明白這個方法的幾何原理,你再去看那個方法的結果,你就會明白爲什莫在距離中心點比較遠的點的embedding都可以清楚地看到在一條條線上,效果不太好。


bb

最近這個思想被北大的一個年輕的老師 LIN Tong 發揚光大,就是ECCV‘06上的那篇,還有即將刊登出的TPAMI上的 Riemannian Manifold Learning,實爲國內研究學者之榮幸。Lin的方法效果非常好,但是雖然取名叫Riemannian,沒有應用到黎曼幾何本身的性質,這樣使他的方法更容易理解。

Lin也是以一個切空間爲基準找法座標,這個出發點和思想和Brun(S-Logmaps)的是一樣的。但是Lin全是在局部上操作的,在得出切空間原點處局部鄰域的法座標以後,Lin採用逐步向外擴展的方法找到其他點的法座標,在某一點處,保持此點到它鄰域點的歐式距離和夾角,然後轉化成一個最小二乘問題求出此點的法座標,這樣未知的利用已知的逐步向外擴展。說白了就像縫網一樣,從幾個臨近的已知點開始,逐漸向外擴散的縫。效果好是必然的。

有人做了個好事情,做了個系統,把幾個方法的matlab代碼放在了一起
http://www.math.umn.edu/~wittman/mani/

以上提到方法論文,都可以用文中給出的關鍵詞藉助google.com找到。


3. 基本問題和個人觀點

流形學習現在還基本處於理論探討階段,在實際中難以施展拳腳,不過在圖形學中除外。我就說說幾個基本的問題。

a. 譜方法對噪聲十分敏感。希望大家自己做做實驗體會一下,流形學習中譜方法的脆弱。
b. 採樣問題對結果的影響。
c. 收斂性
d. 一個最尷尬的事情莫過於,如果用來做識別,流形學習線性化的方法比原來非線性的方法效果要好得多,如果用原始方法做識別,那個效果叫一個差。也正因爲此,使很多人對流形學習產生了懷疑。原因方方面面 : )

e. 把偏微分幾何方法引入到流形學習中來是一個很有希望的方向。這樣的工作在最近一年已經有出現的跡象。

f. 坦白說,我已不能見廬山真面目了,還是留給大家來說吧

結尾寫得有點草率,實在是精疲力盡了,不過還好主體部分寫完。


以下是dodo在回帖中補充的內容

看一些問到人臉識別有關的問題。由於此文結尾寫得有點草,我這裏再補充一下。
dodo

1)人臉識別的識別效果首先取決於 visual feature,圖片中表示的模式和一般的向量模式還是有很大差別的。visual feature的好壞,決定了你所用的向量到底能不能代表這個圖像中的模式和這個模式與其他模式的正確關係,如果能,那再談降維識別的事情。
結構能保持,效果就好;不能保持,就很難說。

2)現在流形學習中的極大多數方法不收斂。正因爲這樣,在原始樣本集中,如果增添少部分點,或是減少少部分點,或是擾動少部分點,都會對最後的nonlinear embedding產生影響。也就是說,極不穩定。
到現在爲止,就 Laplacian Eigenmaps 有收斂性的證明。但是,這個被證明的結果的前提條件是啥,這個很重要。如果是均勻採樣,那麼基本對實際用處不大,理論上有引導作用。

3)採樣的問題,包括採樣密度和採樣方式,都對最後結果有顯著影響。而實際數據都是非常複雜的。

4)最後降到多少維的問題。這個對於流行學習來說,也是一個正在爭論探討的問題。
5)多流形的問題。現在的流形學習算法能處理的流形情況非常的弱,前提建設的條件非常的強,比如單座標系統覆蓋,與歐式空間的開子集等距等等。對於具有不同維數的多流形混合的問題,還沒有人能解。而

這恰恰是模式識別中一個合理的情況!(具有不同維數的多流形混合的問題)

而4)5)後兩者是緊緊聯繫在一起。


這幾點也是流形學習能發揮其威力必須克服的問題。實際的情況並不是像一些人說的“流形學習已經做爛了”,問題在於
1)沒有找到真正的問題在哪,
2)知道問題在哪兒,解決不了。

這就是流形學習目前的狀況,如果你能用恰當的理論,而不是技巧和實驗,解決了2)、5)其中一個問題,你就會是流形學習進入下一個黃金時期的功臣。
而現在的情況是,引導和開創流形學習進入第一個黃金時期和爲這個黃金時期推波助瀾的那第一撥人,大都不再爲此而努力了。現在就M. Belkin還在第一線爲2)問題而奮鬥。
另外一個可喜的局面是,那些專職搞數值和幾何的數學人開始涉足此領域,這必將帶動流形學習這個方向深入發展,這也是這個方向發展的一個必然。

現在流形學習就處在這個懵懂的時期,就等着打開下一個局面的人出現,這需要機遇或者天才。但是從歷史的角度來看,可以肯定的是,這樣的人必定出現。流形學習很有可能會經歷神經網絡類似的發展歷程,但是比神經網絡更新的要快的多。
細數歷史,可以看到機會。如果你對此有興趣,什麼時候加入都不晚。

 

  • 局部線性嵌入(LLE)
  • 等距映射(Isomap)
  • 拉普拉斯特徵映射(Laplacian Eigenmap)


局部線性嵌入(LLE)

前提假設:採樣數據所在的低維流形在局部是線性的,即每個採樣點可以用它的近鄰點線性表示。

求解方法:特徵值分解。
LLE算法:

  1. 計算每一個點Xi的近鄰點,一般採用K近鄰或者ξ領域。
  2. 計算權值Wij,使得把Xi用它的K個近鄰點線性表示的誤差最小,即通過最小化||Xi-WijXj||來求出Wij.
  3. 保持權值Wij不變,求Xi在低維空間的象Yi,使得低維重構誤差最小。


 

多維尺度變換(MDS)

  • MDS是一種非監督的維數約簡方法。
  • MDS的基本思想:約簡後低維空間中任意兩點間的距離應該與它們在原高維空間中的距離相同。
  • MDS的求解:通過適當定義準則函數來體現在低維空間中對高維距離的重建誤差,對準則函數用梯度下降法求解,對於某些特殊的距離可以推導出解析法。


等距映射(Isomap)

基本思想:建立在多維尺度變換(MDS)的基礎上,力求保持數據點的內在幾何性質,即保持兩點間的測地距離。

前提假設:

  • 高維數據所在的低維流形與歐氏空間的一個子集是整體等距的。
  • 與數據所在的流形等距的歐氏空間的子集是一個凸集。

核心:
估計兩點間的測地距離:

  • 離得很近的點間的測地距離用歐氏距離代替。
  • 離得較遠的點間的測地距離用最短路徑來逼近。


拉普拉斯特徵映射(Laplacian Eigenmap)

基本思想:在高維空間中離得很近的點投影到低維空間中的象也應該離得很近。
求解方法:求解圖拉普拉斯算子的廣義特徵值問題。

 

度量學習

轉自http://blog.csdn.net/nehemiah_li/article/details/44230053

在數學中,一個度量(或距離函數)是一個定義集合中元素之間距離的函數。一個具有度量的集合被稱爲度量空間。

1 爲什麼要用度量學習?

很多的算法越來越依賴於在輸入空間給定的好的度量。例如K-means、K近鄰方法、SVM等算法需要給定好的度量來反映數據間存在的一些重要關係。這一問題在無監督的方法(如聚類)中尤爲明顯。舉一個實際的例子,考慮圖1的問題,假設我們需要計算這些圖像之間的相似度(或距離,下同)(例如用於聚類或近鄰分類)。面臨的一個基本的問題是如何獲取圖像之間的相似度,例如如果我們的目標是識別人臉,那麼就需要構建一個距離函數去強化合適的特徵(如髮色,臉型等);而如果我們的目標是識別姿勢,那麼就需要構建一個捕獲姿勢相似度的距離函數。爲了處理各種各樣的特徵相似度,我們可以在特定的任務通過選擇合適的特徵並手動構建距離函數。然而這種方法會需要很大的人工投入,也可能對數據的改變非常不魯棒。度量學習作爲一個理想的替代,可以根據不同的任務來自主學習出針對某個特定任務的度量距離函數。

 

圖 1

2 度量學習的方法

根據相關論文[2,3,4],度量學習方法可以分爲通過線性變換的度量學習和度量學習的非線性模型。

2.1 通過線性變換的度量學習

由於線性度量學習具有簡潔性和可擴展性(通過核方法可擴展爲非線性度量方法),現今的研究重點放在了線性度量學習問題上。線性的度量學習問題也稱爲馬氏度量學習問題,可以分爲監督的和非監督的學習算法。

監督的馬氏度量學習可以分爲以下兩種基本類型:

I 監督的全局度量學習:該類型的算法充分利用數據的標籤信息。如

 

 

  • Information-theoretic metric learning(ITML)
  • Mahalanobis Metric Learning for Clustering([1]中的度量學習方法,有時也稱爲MMC)
  • Maximally Collapsing Metric Learning (MCML)

 

 

II 監督的局部度量學習:該類型的算法同時考慮數據的標籤信息和數據點之間的幾何關係。如

 

 

  • Neighbourhood Components Analysis (NCA)
  • Large-Margin Nearest Neighbors (LMNN)
  • Relevant Component Analysis(RCA)
  • Local Linear Discriminative Analysis(Local LDA)

 

 

此外,一些很經典的非監督線性降維算法可以看作屬於非監督的馬氏度量學習。如

 

  •  主成分分析(Pricipal Components Analysis, PCA)
  • 多維尺度變換(Multi-dimensional Scaling, MDS)
  • 非負矩陣分解(Non-negative Matrix Factorization,NMF)
  • 獨立成分分析(Independent components analysis, ICA)
  • 鄰域保持嵌入(Neighborhood Preserving Embedding,NPE)
  • 局部保留投影(Locality Preserving Projections. LPP)

 

 

2.2 度量學習的非線性模型

非線性的度量學習更加的一般化,非線性降維算法可以看作屬於非線性度量學習。經典的算法有等距映射(Isometric Mapping,ISOMAP) 、局部線性嵌入(Locally Linear Embedding, LLE) ,以及拉普拉斯特徵映射(Laplacian Eigenmap,LE ) 等。另一個學習非線性映射的有效手段是通過核方法來對線性映射進行擴展。此外還有如下幾個方面

 

 

  • Non-Mahalanobis Local Distance Functions
  • Mahalanobis Local Distance Functions
  • Metric Learning with Neural Networks

 

3 應用

度量學習已應用於計算機視覺中的圖像檢索和分類、人臉識別、人類活動識別和姿勢估計,文本分析和一些其他領域如音樂分析,自動化的項目調試,微陣列數據分析等[4]。

推薦閱讀的論文

以下列舉的論文大都對後來度量學習產生了很大影響(最高的google引用量上了5000次)。1-6篇論文是關於一些方法的論文,最後一篇爲綜述。

 

 

  • Distance metric learning with application to clustering with side-information
  • Information-theoretic metric learning(關於ITML)
  • Distance metric learning for large margin nearest neighbor classification(關於LMNN)
  • Learning the parts of objects by non-negative matrix factorization(Nature關於RCA的文章)
  • Neighbourhood components analysis(關於NCA)
  • Metric Learning by Collapsing Classes(關於MCML)
  • Distance metric learning a comprehensive survey(一篇經典的綜述)

 

 

 

相關博客:

http://blog.pluskid.org/?p=533

http://www.docin.com/p-272409018.html

https://en.wikipedia.org/wiki/Metric_(mathematics)

http://www.cs.cmu.edu/~liuy/distlearn.htm


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章