天天看點

Python 資料分析執行個體——典型相關分析

作者:昌華量化
Python 資料分析執行個體——典型相關分析

簡單相關系數描述兩組變量的相關關系存在一個缺點:隻是孤立考慮單個X與單個Y間的相關,沒有考慮X、Y變量組内部各變量間的相關。兩組間有許多簡單相關系數,使問題顯得複雜,難以從整體描述。本節講述的典型相關是簡單相關、多重相關的推廣。典型相關是研究兩組變量之間相關性的一種統計分析方法,也是一種降維技術。

1.典型相關分析

CCA(Canonical Correlation Analysis,典型相關分析)是利用綜合變量對之間的相關關系來反映兩組名額之間的整體相關性的多元統計分析方法。它的基本原理是:為了從總體上把握兩組名額之間的相關關系,分别在兩組變量中提取有代表性的兩個綜合變量U1和V1(分别為兩個變量組中各變量的線性組合),利用這兩個綜合變量之間的相關關系來反映兩組名額之間的整體相關性。

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

2.典型相關分析概述

在數理統計中,對相關系數這個概念應該很熟悉。假設有兩組一維的資料集X和Y,則相關系數ρ的定義為:

Python 資料分析執行個體——典型相關分析

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

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

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

3.典型相關分析算法思想

上面提到典型相關分析是将高維的兩組資料分别降維到1維,然後用相關系數分析相關性。但是有一個問題是,降維的标準是如何選擇的呢?回想一下主成分分析(PCA),降維的原則是投影方差最大;再回想一下線性判别分析(LDA),降維的原則是同類的投影方差小,異類間的投影方差大。對于典型相關分析,它選擇的投影标準是降維到1維後,兩組資料的相關系數最大。

假設資料集是X和Y,X為n1×m的樣本矩陣,Y為n2×m的樣本矩陣,其中m為樣本個數,而n1、n2分别為X和Y的特征次元。對于X矩陣,将其投影到1維,對應的投影向量為a,對于Y矩陣,将其投影到1維,對應的投影向量為b,這樣X、Y投影後得到的一維向量分别為X'、Y'。則有:

Python 資料分析執行個體——典型相關分析

典型相關分析的優化目标是最大化ρ(X',Y'),得到對應的投影向量a和b,即:

Python 資料分析執行個體——典型相關分析

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

Python 資料分析執行個體——典型相關分析

由于X、Y的均值均為0,則:

Python 資料分析執行個體——典型相關分析

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

Python 資料分析執行個體——典型相關分析

由于分子、分母增大相同的倍數,優化目标結果不變,是以可以采用和SVM(支援向量機)類似的優化方法,固定分母,優化分子,具體的轉化為:

Python 資料分析執行個體——典型相關分析

4.特征值分解求典型相關分析

特征值分解方式比較傳統,利用拉格朗日函數優化目标轉化為最大化,如:

Python 資料分析執行個體——典型相關分析

分别對a、b求導并令結果為0,得:

Python 資料分析執行個體——典型相關分析

進而:

Python 資料分析執行個體——典型相關分析

現在拉格朗日系數就是我們要優化的目标。繼續将上面的兩個式子(8.40)進行整理得:

Python 資料分析執行個體——典型相關分析

将式(8.33)的下式代入上式得到:

Python 資料分析執行個體——典型相關分析

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

【例1】

使用Python實作典型相關分析:

Python 資料分析執行個體——典型相關分析
Python 資料分析執行個體——典型相關分析
Python 資料分析執行個體——典型相關分析

輸出:

Python 資料分析執行個體——典型相關分析

典型相關分析算法廣泛地應用于資料相關度的分析,同時還是偏最小二乘法的基礎。但是由于它依賴于資料的線性表示,當我們的資料無法線性表示時,典型相關分析就無法使用,此時我們可以利用核函數的思想将資料映射到高維後,再利用典型相關分析的思想降維到1維,求對應的相關系數和線性關系,這個算法一般稱為核典型相關分析(KCCA)。深度典型相關性分析(DCCA),線上性的典型相關分析上增加了深度網絡,以此來學習新特征并提高多模态資料之間的相關性。