Canonical Correlation Analysis 算法理解

tech2022-08-01  142

Canonical Correlation Analysis 算法理解

Canonical Correlation Analysis(典型相关性分析,简称CCA)是最为常用的挖掘数据之间相关性的算法之一。CCA能够将数据形式不同的矩阵映射为向量,从而可以比较他们之间的相关系数,从而判别两组数据之间是否存在相关性。

问题提出与理论背景

为了寻求两个变量之间的关系,通常我们会使用线性回归对样本点进行拟合,从而找到n维向量X和输出结果Y之间的线性关系。那么对于 X ∈ R n X \in R^n XRn Y ∈ R m Y \in R^m YRm,我们可以建立等式 Y = A X Y = AX Y=AX,如下:

[ y 1 y 2 . . . y m ] = [ w 11 w 12 . . . w 1 n w 21 w 22 . . . w 2 n . . . . . . . . . . . . w m 1 w m 2 . . . w m n ] [ x 1 x 2 . . . x n ] \begin{bmatrix} y_1 \\ y_2 \\ ... \\ y_m \end{bmatrix} = \begin{bmatrix} w_{11} & w_{12} & ... & w_{1n} \\ w_{21} & w_{22} & ... & w_{2n} \\ ... & ... & ... & ... \\ w_{m1} & w_{m2} & ... & w_{mn} \end{bmatrix} \begin{bmatrix} x_1 \\ x_2 \\ ... \\ x_n \end{bmatrix} y1y2...ym=w11w21...wm1w12w22...wm2............w1nw2n...wmnx1x2...xn

其中 y i = w i T x y_i = w_i^T x yi=wiTx。但这样做的缺点是虽然能够体现x和y之间的关系,但无法体现y中的特征之间的关系。那如果说将X和Y都看作一个整体,并分别表示为其内部特征之间的线性组合,即考察 a T x a^Tx aTx b T y b^Ty bTy之间的关系。

我们可以举个例子,假设我们需要考察小蘅解题能力X(解题速度 x 1 x_1 x1和解题正确率 x 2 x_2 x2)与她的阅读能力Y(阅读速度 y 1 y_1 y1和理解程度 y 2 y2 y2)之间的关系,那么我们就可以写出如下式子: x ′ = a 1 x 1 + a 2 x 2 y ′ = b 1 y 1 + b 2 y 2 x' = a_1x_1+a_2x_2 \\ y' = b_1y_1+b_2y_2 x=a1x1+a2x2y=b1y1+b2y2 然后求出其pearson相关系数 ρ x ′ , y ′ = c o r r ( x ′ , y ′ ) = c o v ( x ′ , y ′ ) σ x ′ σ y ′ = E [ ( x ′ − μ x ′ ) ( y ′ − μ y ′ ) ] σ x ′ σ y ′ \rho_{x',y'} = corr(x', y') = \frac{cov(x',y')}{\sigma_{x'} \sigma_{y'}} =\frac{E[(x'-\mu_{x'})(y'-\mu_{y'})]}{\sigma_{x'} \sigma_{y'}} ρx,y=corr(x,y)=σxσycov(x,y)=σxσyE[(xμx)(yμy)] 来度量x’和y’之间的关系,因此我们希望找到一组最优解a、b,使得相关系数最大。

到这里,基本就把CCA的目的介绍完毕了。

CCA表示与求解

上文简单介绍了一下CCA的目的是要做什么,那么接下来我们将进一步的完成CCA的公式推导和求解过程,这一部分涉及较多数学公式与推导,但对理解CCA算法非常重要,希望大家能够静下心来认真研读,并自行完成一遍推导。

首先,我们回顾一下协方差的计算,给定一个 Z = [ x y ] Z = \begin{bmatrix}x\\y\end{bmatrix} Z=[xy] E [ Z ] = [ μ x μ y ] E[Z] = \begin{bmatrix}\mu_x\\\mu_y\end{bmatrix} E[Z]=[μxμy],则 Z Z Z的协方差可以写作:

c o v ( Z ) = [ c o v ( x , x ) c o v ( x , y ) c o v ( y , x ) c o v ( y , y ) ] = [ S x x S x y S y x S y y ] cov(Z) = \begin{bmatrix} cov(x, x) & cov(x, y) \\ cov(y, x) & cov(y, y) \end{bmatrix}= \begin{bmatrix} S_{xx} & S_{xy} \\ S_{yx} & S_{yy} \end{bmatrix} cov(Z)=[cov(x,x)cov(y,x)cov(x,y)cov(y,y)]=[SxxSyxSxySyy]

那么,我们假设有两个数据分别为 X X X Y Y Y,并均已完成了标准化处理。同时,假设最优权重为 a a a b b b,因此可以对X和Y进行线性变化得到 x ′ = x a x' = xa x=xa y ′ = x b y' = xb y=xb。由此,我们可以写出Pearson相关系数的公式,根据上文中提及的CCA的目标易知,我们需要将问题描述为求出使相关系数最大的最优解。 arg ⁡ max ⁡ a , b c o v ( x ′ , y ′ ) V a r ( x ′ ) V a r ( y ′ ) \mathop{\arg \max}_{a,b} \frac{cov(x',y')}{\sqrt{Var(x')} \sqrt{Var(y')}} argmaxa,bVar(x) Var(y) cov(x,y)

同样可以写成: arg ⁡ max ⁡ a , b a T S x y b a T S x x a b T S y y b \mathop{\arg \max}_{a,b} \frac{a^T S_{xy}b}{\sqrt{a^T S_{xx}a} \sqrt{b^T S_{yy}b}} argmaxa,baTSxxa bTSyyb aTSxyb 对于这个优化问题,我们发现a和b增大相同的倍数最优化的值不改变,所以我们需要应用svm的技巧,固定分母,只优化分子,原问题可变成: arg ⁡ max ⁡ a , b a T S x y b s . t . a T S x x a = 1 , b T S y y b = 1 \mathop{\arg \max}_{a,b} a^T S_{xy}b \\ s.t. \quad a^T S_{xx}a=1,b^T S_{yy}b=1 argmaxa,baTSxybs.t.aTSxxa=1,bTSyyb=1 构造拉格朗日等式可以得到如下等式: S x x − 1 S x y b = λ a S y y − 1 S y x a = λ b S_{xx}^{-1}S_{xy}b=\lambda a \\ S_{yy}^{-1}S_{yx}a=\lambda b Sxx1Sxyb=λaSyy1Syxa=λb 整理得: S x x − 1 S x y S y y − 1 S y x a = λ 2 a S_{xx}^{-1}S_{xy}S_{yy}^{-1}S_{yx}a=\lambda^2 a Sxx1SxySyy1Syxa=λ2a 所以可以对 S x x − 1 S x y S y y − 1 S y x S_{xx}^{-1}S_{xy}S_{yy}^{-1}S_{yx} Sxx1SxySyy1Syx求特征值 λ \lambda λ和特征向量 a a a,并代回去求得 b b b

最新回复(0)