機器學習(32)之典型相關性分析(CCA)詳解 【文末有福利......】

機器學習演算法與Python學習發表於2017-12-17

微信公眾號

關鍵字全網搜尋最新排名

【機器學習演算法】:排名第一

【機器學習】:排名第一

【Python】:排名第三

【演算法】:排名第四

人工智慧與Python公開課

限時免費

文末領取

前言

典型關聯分析(Canonical Correlation Analysis,簡稱CCA)是最常用的挖掘資料關聯關係的演算法之一。比如我們拿到兩組資料,第一組是人身高和體重的資料,第二組是對應的跑步能力和跳遠能力的資料。那麼我們能不能說這兩組資料是相關的呢?CCA可以幫助我們分析這個問題。

CCA概述

在數理統計裡面,都知道相關係數這個概念。假設有兩組一維的資料集X和Y,則相關係數ρ的定義為:

機器學習(32)之典型相關性分析(CCA)詳解 【文末有福利......】

其中cov(X,Y)是X和Y的協方差,而D(X),D(Y)分別是X和Y的方差。相關係數ρ的取值為[-1,1], ρ的絕對值越接近於1,則X和Y的線性相關性越高。越接近於0,則X和Y的線性相關性越低。


雖然相關係數可以很好的幫我們分析一維資料的相關性,但是對於高維資料就不能直接使用了。如上所述,如果X是包括人身高和體重兩個維度的資料,而Y是包括跑步能力和跳遠能力兩個維度的資料,就不能直接使用相關係數的方法。那我們能不能變通一下呢?CCA給了我們變通的方法。


CCA使用的方法是將多維的X和Y都用線性變換為1維的X'和Y',然後再使用相關係數來看X'和Y'的相關性。將資料從多維變到1位,也可以理解為CCA是在進行降維,將高維資料降到1維,然後再用相關係數進行相關性的分析。


CCA演算法思想

上面提到CCA是將高維的兩組資料分別降維到1維,然後用相關係數分析相關性。但是有一個問題是,降維的標準是如何選擇的呢?回想下主成分分析PCA,降維的原則是投影方差最大;再回想下線性判別分析LDA,降維的原則是同類的投影方差小,異類間的投影方差大。對於我們的CCA,它選擇的投影標準是降維到1維後,兩組資料的相關係數最大。


假設資料集是X和Y,X為n1×m的樣本矩陣,Y為n2×m的樣本矩陣.其中m為樣本個數,而n1,n2分別為X和Y的特徵維度。對於X矩陣,將其投影到1維,對應的投影向量為a, 對於Y矩陣,將其投影到1維,對應的投影向量為b, 這樣X ,Y投影后得到的一維向量分別為X',Y'。我們有

機器學習(32)之典型相關性分析(CCA)詳解 【文末有福利......】

CCA的優化目標是最大化ρ(X′,Y′),得到對應的投影向量a,b,即

機器學習(32)之典型相關性分析(CCA)詳解 【文末有福利......】

在投影前,一般會把原始資料進行標準化,得到均值為0而方差為1的資料X和Y。這樣我們有:

機器學習(32)之典型相關性分析(CCA)詳解 【文末有福利......】

由於X,Y的均值均為0,則

機器學習(32)之典型相關性分析(CCA)詳解 【文末有福利......】

令SXY=cov(X,Y),則優化目標可以轉化為:

機器學習(32)之典型相關性分析(CCA)詳解 【文末有福利......】

由於分子分母增大相同的倍數,優化目標結果不變,我們可以採用和SVM類似的優化方法,固定分母,優化分子,具體的轉化為

機器學習(32)之典型相關性分析(CCA)詳解 【文末有福利......】

進而CCA演算法的目標最終轉化為一個凸優化過程,只要求出了這個優化目標的最大值,就是前面提到的多維X和Y的相關性度量,而對應的a,b則為降維時的投影向量。


這個函式優化一般有兩種方法,第一種是奇異值分解SVD,第二種是特徵分解,兩者得到的結果一樣


SVD求解CCA

對於上面的優化目標,可以做一次矩陣標準化後在使用SVD來求解。


首先令

機器學習(32)之典型相關性分析(CCA)詳解 【文末有福利......】

進而

機器學習(32)之典型相關性分析(CCA)詳解 【文末有福利......】

優化目標變成下式:

機器學習(32)之典型相關性分析(CCA)詳解 【文末有福利......】


機器學習(32)之典型相關性分析(CCA)詳解 【文末有福利......】

可以看出,SVD的求解方式非常簡潔方便。但如果不熟悉SVD的話,也可以用傳統的拉格朗日函式加上特徵分解來完成這個函式的優化。


特徵值分解求CCA

特徵分解方式比較傳統,利用拉格朗日函式,優化目標轉化為最大化下式:

機器學習(32)之典型相關性分析(CCA)詳解 【文末有福利......】

分別對a,b求導並令結果為0得:

機器學習(32)之典型相關性分析(CCA)詳解 【文末有福利......】

進而

機器學習(32)之典型相關性分析(CCA)詳解 【文末有福利......】


現在拉格朗日系數就是我們要優化的目標。繼續將上面的兩個式子做整理得:

機器學習(32)之典型相關性分析(CCA)詳解 【文末有福利......】

將上面第二個式子帶入第一個式子得到

機器學習(32)之典型相關性分析(CCA)詳解 【文末有福利......】

要求最大的相關係數λ,只需要對上面的矩陣做特徵分解,找出最大的特徵值取平方根即可,此時最大特徵值對應的特徵向量即為X的線性係數a。同樣的辦法,可以找到最大特徵值對應的特徵向量即為Y的線性係數b。


可以看出特徵分解的方法要比SVD複雜,但是兩者求得的結果其實是等價的,只要利用SVD和特徵分解之間的關係就很容易發現兩者最後的結果相同。


CCA演算法流程

對CCA演算法流程做一個歸納,以SVD方法為例:


輸入:各為m個的樣本X和Y,X和Y的維度都大於1

輸出X,Y的相關係數ρ,X和Y的線性係數向量a和b


流程

1)計算X的方差SXX, Y的方差SYY,X和Y的協方差SXY

2)  計算矩陣

機器學習(32)之典型相關性分析(CCA)詳解 【文末有福利......】

3)對矩陣M進行奇異值分解,得到最大的奇異值ρ,和最大奇異值對應的左右奇異向量

4)  計算X和Y的線性係數向量a和b,

機器學習(32)之典型相關性分析(CCA)詳解 【文末有福利......】


總結

CCA演算法廣泛的應用於資料相關度的分析,同時還是偏最小二乘法的基礎。但是由於它依賴於資料的線性表示,當我們的資料無法線性表示時,CCA就無法使用,此時我們可以利用核函式的思想,將資料對映到高維後,再利用CCA的思想降維到1維,求對應的相關係數和線性關係,這個演算法一般稱為KCCA。此外,在演算法裡只找了相關度最大的奇異值或者特徵值,作為資料的相關係數,實際上我們也可以像PCA一樣找出第二大奇異值,第三大奇異值,。。。得到第二相關係數和第三相關係數。然後對資料做進一步的相關性分析。但是一般的應用來說,找出第一相關係數就可以了。


歡迎分享給他人讓更多的人受益

機器學習(32)之典型相關性分析(CCA)詳解 【文末有福利......】

參考:

  1. 周志華《機器學習》

  2. Neural Networks and Deep Learning by By Michael Nielsen

  3. 部落格園

    http://www.cnblogs.com/pinard/p/6288716.html

  4. 李航《統計學習方法》

  5. Deep Learning, book by Ian Goodfellow, Yoshua Bengio, and Aaron Courville


近期熱文

精選 | 2017年全球人工智慧人才報告(附73頁完整版PDF)

乾貨 | 自然語言處理(2)之淺談向量化與Hash-Trick

機器學習(31)之頻繁集挖掘FP Tree詳解

推薦 | 機器學習經典總結,入門必讀【17000字,可下載PDF】

機器學習(30)之線性判別分析(LDA)原理詳解

加入微信機器學習交流

請新增微信:guodongwe1991

備註姓名-單位-研究方向

(小編晚上才有時間,回覆的可能比較晚)


廣告、商業合作

請新增微信:guodongwe1991

(備註:商務合作)

機器學習(32)之典型相關性分析(CCA)詳解 【文末有福利......】


相關文章