機器學習_學習筆記系列(58):典型相關分析(Canonical Correlation Analysis)
先前的章節我們提到Wold’s Two Block Mode A Partial Least Square這個演算法,而這裡我們可以看到他用了Mode A這個字,所以表示說有Mode B?
沒錯其Mode B的演算法簡稱為PLS-W2B,但是在機器學習上我們更常把他叫做Canonical Correlation Analysis(CCA)。
CCA和PLS-W2A的目的相同,都是分析X和Y兩個數據集之間的關係,雖然他們表面上看起來相同,但實際上他們兩個的理論背景不太相同。
在這裡我們一樣先假設今天有兩個資料集X和Y其中
而在之前的章節我們講到PLS-W2A他的最佳化問題為
其是希望找到向量u和v能讓降維後的數據訊息損失量達到最小。
而對於CCA我們計算X和Y之間的關係
不是用Covariance Matrix而是用Correlation Matrix
其定義為
將其展開
所以在計算上我們其實可以不用那麼複雜,我們只要先把數據集作中心化
我們的式子就可以改寫成
而接下來在CCA的問題上我希望能找到一個向量u和向量v使
最大化。而當X和Y投影到u和v向量,我們可以寫成
所以最佳化問題可以寫成
如果將其展開我們可以得到:
但是在分母的地方,可以看到其相當複雜,所以我們把他轉換成
帶入之後得到
最後我們的最佳化問題就可以改寫成
其就和我們之前求解PLA-W2A很像,所以我們現在對M做SVD
而在那一回也推導過,如果要使𝜌最大
最後我們再把他算回去
此即為我們最佳化問題的解。
而今天我想要將資料降到K維我們就取u1~uK和v1~vK然後一樣用
轉換為我們所需的向量。
小補充:
對於把矩陣做-1/2次方這個部分,其實有點小tricky,因為這裡的1/2次方,我們不能直接將矩陣外面加一個np.sqrt運算,對於矩陣A的1/2次方其應該要為
所以在這裡要求解A的1/2次方,我們得用一點特殊運算。所以假設
如此一來
而因為D是對角矩陣,所以D的1/2次方可以直接對矩陣開根號就可以得出答案。
所以在這裡要得到V和D,我們得運算A的eigenvalue和eigenvector,然後依據eigenvalue的大小排序eigenvalue和eigenvector,如此一來D的斜對角就是我們排序過的eigenvalue,而V就是我們排序過後的eigenvector,接著我們再計算D的1/2次方,帶入公式就可以得到A的1/2的值。
Example
接下來我們以實際例子來看,我們的X總共有6個特徵,Y也有六個特徵,然後我們以X的每個特徵對Y的每個特徵繪圖
接著我們用CCA將X和Y降維再重組數據
降到一維
降到二維
降到三維
降到四維
降到五維
降到六維
從這裡我們可以發現一樣也是隨著降維的維度越高,重組的圖案會越來越接原本的圖型,但是重組的效果CCA是比PLS-W2A來得差一些。
Python Sample Code:
Github:
Reference:
[1] Wegelin, J. A. (2000). A survey of Partial Least Squares (PLS) methods, with emphasis on the two-block case.