典型相關分析(Canonical Correlation Analyses——CCA)
在Fig. 5.中,每一列表示同一個攝像頭捕捉到的3個不同動作(類別)的圖片,每一行表示5個不同攝像頭(multi-view)捕捉到的同一動作的圖片,如果我們用這些圖片解決分類問題(相同的動作表示一個類別),遇到的一個問題是由於同類圖片來自不同的攝像頭,它們差別會比較大,造成分類的精度比較低,我們可以使用典型相關分析(CCA)來提取同類圖片之間相關聯的部分(例如,相同的動作),從而提高分類的精度。
下面介紹典型相關分析(CCA)的理論基礎:
要弄明白CCA首先需要理解Pearson係數,可以參見答案:如何理解皮爾遜相關係數(Pearson Correlation Coefficient)?
博客典型相關分析相關資料 - 統計分析與數據挖掘 - 博客頻道 - CSDN.NET 詳細介紹了一般求解CCA的方法。
下面是論文中提到的另一種解決方法:
function [A,B,m1,m2,D,N]=linCCA(H1,H2,dim,rcov1,rcov2)% H1 and H2 are NxD matrices containing samples rowwise.% dim is the desired dimensionality of CCA space.% r is the regularization of autocovariance for computing the correlation.% A and B are the transformation matrix for view 1 and view 2.% m1 and m2 are the mean for view 1 and view 2.% D is the vector of singular values.if nargin<4 rcov1=0; rcov2=0;end[N,d1] =size(H1);[~,d2] =size(H2);% Remove mean.m1 = mean(H1,1); H1 = H1-repmat(m1,N,1);m2 = mean(H2,1); H2 = H2-repmat(m2,N,1);S11 = (H1*H1)/(N-1)+rcov1*eye(d1); S22 = (H2*H2)/(N-1)+rcov2*eye(d2); S12 = (H1*H2)/(N-1);[V1,D1] = eig(S11); [V2,D2] = eig(S22);% For numerical stability.D1 = diag(D1); idx1 = find(D1>1e-12); D1 = D1(idx1); V1 = V1(:,idx1);D2 = diag(D2); idx2 = find(D2>1e-12); D2 = D2(idx2); V2 = V2(:,idx2);K11 = V1*diag(D1.^(-1/2))*V1;K22 = V2*diag(D2.^(-1/2))*V2;T = K11*S12*K22;[U,D,V] = svd(T,0);D = diag(D);A = K11*U(:,1:dim);B = K22*V(:,1:dim);D = D(1:dim);
推薦閱讀:
※《機器學習基石》課程學習總結(一)
※2018AI學習清單丨150個最好的機器學習和Python教程
※使用GridSearchCV(網格搜索),快速選擇超參數
※機器學習課程筆記---(1)單變數線性回歸
※關於專欄文章說明
TAG:機器學習 |