典型關(guān)聯(lián)分析(Canonical Correlation Analysis,以下簡(jiǎn)稱CCA)是最常用的挖掘數(shù)據(jù)關(guān)聯(lián)關(guān)系的算法之一。比如我們拿到兩組數(shù)據(jù),第一組是人身高和體重的數(shù)據(jù),第二組是對(duì)應(yīng)的跑步能力和跳遠(yuǎn)能力的數(shù)據(jù)。那么我們能不能說(shuō)這兩組數(shù)據(jù)是相關(guān)的呢?CCA可以幫助我們分析這個(gè)問(wèn)題。
1. CCA概述
在數(shù)理統(tǒng)計(jì)里面,我們都知道相關(guān)系數(shù)這個(gè)概念。假設(shè)有兩組一維的數(shù)據(jù)集X和Y,則相關(guān)系數(shù)ρ的定義為:

其中cov(X,Y)是X和Y的協(xié)方差,而D(X),D(Y)分別是X和Y的方差。相關(guān)系數(shù)ρ的取值為[-1,1],ρ的絕對(duì)值越接近于1,則X和Y的線性相關(guān)性越高。越接近于0,則X和Y的線性相關(guān)性越低。
雖然相關(guān)系數(shù)可以很好的幫我們分析一維數(shù)據(jù)的相關(guān)性,但是對(duì)于高維數(shù)據(jù)就不能直接使用了。拿上面我們提到的,如果X是包括人身高和體重兩個(gè)維度的數(shù)據(jù),而Y是包括跑步能力和跳遠(yuǎn)能力兩個(gè)維度的數(shù)據(jù),就不能直接使用相關(guān)系數(shù)的方法。那我們能不能變通一下呢?CCA給了我們變通的方法。
CCA使用的方法是將多維的X和Y都用線性變換為1維的X'和Y',然后再使用相關(guān)系數(shù)來(lái)看X'和Y'的相關(guān)性。將數(shù)據(jù)從多維變到1位,也可以理解為CCA是在進(jìn)行降維,將高維數(shù)據(jù)降到1維,然后再用相關(guān)系數(shù)進(jìn)行相關(guān)性的分析。下面我們看看CCA的算法思想。
2. CCA的算法思想
上面我們提到CCA是將高維的兩組數(shù)據(jù)分別降維到1維,然后用相關(guān)系數(shù)分析相關(guān)性。但是有一個(gè)問(wèn)題是,降維的標(biāo)準(zhǔn)是如何選擇的呢?回想下主成分分析PCA,降維的原則是投影方差最大;再回想下線性判別分析LDA,降維的原則是同類的投影方差小,異類間的投影方差大。對(duì)于我們的CCA,它選擇的投影標(biāo)準(zhǔn)是降維到1維后,兩組數(shù)據(jù)的相關(guān)系數(shù)最大。
現(xiàn)在我們具體來(lái)討論下CCA的算法思想。假設(shè)我們的數(shù)據(jù)集是X和Y,X為n1×m的樣本矩陣。Y為n2×m的樣本矩陣.其中m為樣本個(gè)數(shù),而n1,n2分別為X和Y的特征維度。
對(duì)于X矩陣,我們將其投影到1維,或者說(shuō)進(jìn)行線性表示,對(duì)應(yīng)的投影向量或者說(shuō)線性系數(shù)向量為a, 對(duì)于Y矩陣,我們將其投影到1維,或者說(shuō)進(jìn)行線性表示,對(duì)應(yīng)的投影向量或者說(shuō)線性系數(shù)向量為b, 這樣X ,Y投影后得到的一維向量分別為X',Y'。我們有

我們CCA的優(yōu)化目標(biāo)是最大化ρ(X′,Y′)得到對(duì)應(yīng)的投影向量a,b,即

在投影前,我們一般會(huì)把原始數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化,得到均值為0而方差為1的數(shù)據(jù)X和Y。這樣我們有:

E是期望,D(X)=cov(X,X)。
由于我們的X,Y的均值均為0,則

令,則優(yōu)化目標(biāo)可以轉(zhuǎn)化為:

由于分子分母增大相同的倍數(shù),優(yōu)化目標(biāo)結(jié)果不變,我們可以采用和SVM類似的優(yōu)化方法,固定分母,優(yōu)化分子,具體的轉(zhuǎn)化為:

也就是說(shuō),我們的CCA算法的目標(biāo)最終轉(zhuǎn)化為一個(gè)凸優(yōu)化過(guò)程,只要我們求出了這個(gè)優(yōu)化目標(biāo)的最大值,就是我們前面提到的多維X和Y的相關(guān)性度量,而對(duì)應(yīng)的a,b則為降維時(shí)的投影向量,或者說(shuō)線性系數(shù)。
這個(gè)函數(shù)優(yōu)化一般有兩種方法,第一種是奇異值分解SVD,第二種是特征分解,兩者得到的結(jié)果一樣,下面我們分別講解。
3. CCA算法的SVD求解
對(duì)于上面的優(yōu)化目標(biāo),我們可以做一次矩陣標(biāo)準(zhǔn)化,就可以用SVD來(lái)求解了。
首先,我們令這樣我們有:
也就是說(shuō),我們的優(yōu)化目標(biāo)變成下式:
仔細(xì)一看,如果將u和v看做矩陣的某一個(gè)奇異值對(duì)應(yīng)的左右奇異向量。那么利用奇異值分解,我們可以得到
,其中U,V分別為M的左奇異向量和右奇異向量組成的矩陣,而
為M的奇異值組成的對(duì)角矩陣。由于U,V所有的列都為標(biāo)準(zhǔn)正交基,則
和
得到一個(gè)只有一個(gè)標(biāo)量值為1,其余標(biāo)量值為0的向量。此時(shí)我們有
也就是說(shuō)我們最大化,其實(shí)對(duì)應(yīng)的最大值就是某一組左右奇異向量所對(duì)應(yīng)的奇異值的最大值。也就是將M做了奇異值分解后,最大的奇異值就是我們優(yōu)化目標(biāo)的最大值,或者說(shuō)我們的X和Y之間的最大相關(guān)系數(shù)。利用對(duì)應(yīng)的左右奇異向量u,v我們也可以求出我們?cè)嫉腦和Y的線性系數(shù)
。
可以看出,SVD的求解方式非常簡(jiǎn)潔方便。但是如果你不熟悉SVD的話,我們也可以用傳統(tǒng)的拉格朗日函數(shù)加上特征分解來(lái)完成這個(gè)函數(shù)的優(yōu)化。
4. CCA算法的特征分解求解
特征分解方式就比較傳統(tǒng)了,利用拉格朗日函數(shù),優(yōu)化目標(biāo)轉(zhuǎn)化為最大化下式:
分別對(duì)a,b求導(dǎo)并令結(jié)果為0,我們得到:
將上面第一個(gè)式子左乘,第二個(gè)式子左乘
,并利用
我們得到
其實(shí)也就是說(shuō)我們的拉格朗日系數(shù)就是我們要優(yōu)化的目標(biāo)。我們繼續(xù)將上面的兩個(gè)式子做整理,第一個(gè)式子左乘,第二個(gè)式子左乘
我們得到
將上面第二個(gè)式子帶入第一個(gè)式子,我們得到
這個(gè)式子我們就熟悉了,這不就是特征分解嗎!要求最大的相關(guān)系數(shù)λ,我們只需要對(duì)矩陣做特征分解,找出最大的特征值取平方根即可,此時(shí)最大特征值對(duì)應(yīng)的特征向量即為X的線性系數(shù)a。
同樣的辦法,我們將上面第一個(gè)式子帶入第二個(gè)式子,我們得到
我們只需要對(duì)矩陣做特征分解,找出最大的特征值取平方根即可,此時(shí)最大特征值對(duì)應(yīng)的特征向量即為Y的線性系數(shù)b。
可以看出特征分解的方法要比SVD復(fù)雜,但是兩者求得的結(jié)果其實(shí)是等價(jià)的,只要利用SVD和特征分解之間的關(guān)系就很容易發(fā)現(xiàn)兩者最后的結(jié)果相同。
5. CCA算法流程
這里我們對(duì)CCA的算法流程做一個(gè)總結(jié),以SVD方法為準(zhǔn)。
輸入:各為m個(gè)的樣本X和Y,X和Y的維度都大于1
輸出:X,Y的相關(guān)系數(shù)ρ,X和Y的線性系數(shù)向量a和b
1)計(jì)算X的方差,Y的方差
,X和Y的協(xié)方差
, Y和X的協(xié)方差
- 計(jì)算矩陣
3)對(duì)矩陣M進(jìn)行奇異值分解,得到最大的奇異值ρ,和最大奇異值對(duì)應(yīng)的左右奇異向量u,v
- 計(jì)算X和Y的線性系數(shù)向量a和b,
6. CCA算法小結(jié)
CCA算法廣泛的應(yīng)用于數(shù)據(jù)相關(guān)度的分析,同時(shí)還是偏最小二乘法的基礎(chǔ)。但是由于它依賴于數(shù)據(jù)的線性表示,當(dāng)我們的數(shù)據(jù)無(wú)法線性表示時(shí),CCA就無(wú)法使用,此時(shí)我們可以利用核函數(shù)的思想,將數(shù)據(jù)映射到高維后,再利用CCA的思想降維到1維,求對(duì)應(yīng)的相關(guān)系數(shù)和線性關(guān)系,這個(gè)算法一般稱為KCCA。
但是選用核方法也有其自身的問(wèn)題,主要在于核選取的不可知性,還有計(jì)算量比較大。此時(shí)我們可以利用神經(jīng)網(wǎng)絡(luò)解決非線性問(wèn)題。Deep CCA就是先用深度神經(jīng)網(wǎng)絡(luò)分別求出兩個(gè)視圖的經(jīng)過(guò)線性化的向量,然后求出兩個(gè)投影向量的最大相關(guān)性,最后求出新的投影向量。用這個(gè)投影向量加入到機(jī)器學(xué)習(xí)算法進(jìn)行分類,聚類回歸。
此外,我們?cè)谒惴ɡ镏徽伊讼嚓P(guān)度最大的奇異值或者特征值,作為數(shù)據(jù)的相關(guān)系數(shù),實(shí)際上我們也可以像PCA一樣找出第二大奇異值,第三大奇異值,。。。得到第二相關(guān)系數(shù)和第三相關(guān)系數(shù)。然后對(duì)數(shù)據(jù)做進(jìn)一步的相關(guān)性分析。但是一般的應(yīng)用來(lái)說(shuō),找出第一相關(guān)系數(shù)就可以了
有時(shí)候我們的矩陣,
不可逆,此時(shí)我們得不到對(duì)應(yīng)的逆矩陣,一般遇到這種情況可以對(duì)
,
進(jìn)行正則化,將
,
變化為
,然后繼續(xù)求逆。其中
為正則化系數(shù)。
參考鏈接:
基于典型相關(guān)性分析(CCA)的多視圖學(xué)習(xí)方法綜述
Analysis (CCA) Based Multi-View Learning: An Overview-- Neural Computing and Applications 2019
關(guān)于方差、協(xié)方差的兩個(gè)公式
深度學(xué)習(xí)解決多視圖非線性數(shù)據(jù)特征融合問(wèn)題