Canonical Correlation Analysis(CCA)典型相关分析也是一种常用的降维算法。我们知道,PCA(Principal Component Analysis) 主分量分析将数据从高维映射到低维空间同时,保证了数据的分散性尽可能地大, 也就是数据的方差或者协方差尽可能大。而LDA(Linear Discriminant Analysis) 线性判别分析则利用了类标签,利用一种监督学习的方法,将数据从高维空间映射到低维空间时,让不同类的数据尽可能地分开而同一类的数据尽可能地聚合。

但是,有的时候,我们想探讨多个线性空间之间的相关性。比如有的时候我们会从图像中提取各种特征,每一种特征都可以构成一个线性空间,为了分析这些空间之间的相关性,我们可以利用CCA 来做分析。

假设我们有两个特征空间, S1=x1Rd1 <script type="math/tex" id="MathJax-Element-1">S1={\mathbf{x}_{1} \in R^{d1}}</script>, S2=x2Rd2 <script type="math/tex" id="MathJax-Element-2">S2={\mathbf{x}_{2} \in R^{d2}}</script>, 我们可以将两个特征向量合并。

x=(x1x2)E(x)=(μ1μ2)Σ=(Σ11Σ21Σ12Σ22)
<script type="math/tex; mode=display" id="MathJax-Element-3"> \mathbf{x} = \begin{pmatrix} \mathbf{x}_{1} \\ \mathbf{x}_{2} \end{pmatrix} \quad E(\mathbf{x}) = \begin{pmatrix} \mathbf{\mu}_{1} \\ \mathbf{\mu}_{2} \end{pmatrix} \quad \Sigma = \begin{pmatrix} \Sigma_{11} & \Sigma_{12} \\ \Sigma_{21} & \Sigma_{22} \end{pmatrix} </script>

可以看到, Σ12=ΣT21 <script type="math/tex" id="MathJax-Element-4">\Sigma_{12}=\Sigma_{21}^{T}</script>, Σ <script type="math/tex" id="MathJax-Element-5">\Sigma</script> 称为协方差矩阵。我们引入投影向量 a <script type="math/tex" id="MathJax-Element-6">\mathbf{a}</script>, b <script type="math/tex" id="MathJax-Element-7">\mathbf{b}</script>, 假设投影之后的变量满足:

u=aTx1v=bTx2
<script type="math/tex; mode=display" id="MathJax-Element-8"> u=\mathbf{a}^{T} \mathbf{x}_{1} \quad v=\mathbf{b}^{T} \mathbf{x}_{2} </script>

可以进一步算出 u,v <script type="math/tex" id="MathJax-Element-9">u, v</script> 的方差和协方差:

var(u)=aTΣ11a,var(v)=bTΣ2b,cov(u,v)=aTΣ12b
<script type="math/tex; mode=display" id="MathJax-Element-10"> \text{var}(u)= \mathbf{a}^{T} \Sigma_{11} \mathbf{a}, \quad \text{var}(v)=\mathbf{b}^{T} \Sigma_{2} \mathbf{b}, \quad cov(u,v)=\mathbf{a}^{T} \Sigma_{12} \mathbf{b} </script>

可以计算出 u,v <script type="math/tex" id="MathJax-Element-11">u, v</script> 的相关系数:

Corr(u,v)=cov(u,v)var(u)var(v)
<script type="math/tex; mode=display" id="MathJax-Element-12"> Corr(u,v)=\frac{\text{cov}(u,v)}{\sqrt{\text{var}(u)} \sqrt{\text{var}(v)}} </script>

u,v <script type="math/tex" id="MathJax-Element-13">u,v</script>的表达式代入,可以得到:

Corr(u,v)=aTΣ12baTΣ11abTΣ22b
<script type="math/tex; mode=display" id="MathJax-Element-14"> Corr(u,v)=\frac{\mathbf{a}^{T} \Sigma_{12} \mathbf{b}}{\sqrt{\mathbf{a}^{T} \Sigma_{11} \mathbf{a}} \sqrt{\mathbf{b}^{T} \Sigma_{22} \mathbf{b}}} </script>

我们的目标是让相关系数 Corr(u,v) <script type="math/tex" id="MathJax-Element-15">Corr(u,v)</script> 尽可能地大。为了求解 a,b <script type="math/tex" id="MathJax-Element-16">\mathbf{a}, \mathbf{b}</script>, 可以固定分母而让分子最大化,所以上面的函数可以变成:

maxa,baTΣ12b
<script type="math/tex; mode=display" id="MathJax-Element-17"> \max_{\mathbf{a}, \mathbf{b}} \mathbf{a}^{T} \Sigma_{12} \mathbf{b} </script>

s.t.aTΣ11a=1,bTΣ22b=1
<script type="math/tex; mode=display" id="MathJax-Element-18"> s.t. \quad \mathbf{a}^{T} \Sigma_{11} \mathbf{a}=1, \quad \mathbf{b}^{T} \Sigma_{22} \mathbf{b}=1 </script>

构造拉格朗日等式:

L=aTΣ12bλ12(aTΣ11a1)λ22(bTΣ22b1)
<script type="math/tex; mode=display" id="MathJax-Element-19"> L=\mathbf{a}^{T} \Sigma_{12} \mathbf{b}-\frac{\lambda_{1}}{2}(\mathbf{a}^{T} \Sigma_{11} \mathbf{a}-1)-\frac{\lambda_{2}}{2}(\mathbf{b}^{T} \Sigma_{22} \mathbf{b}-1) </script>

L <script type="math/tex" id="MathJax-Element-20">L</script> 分别对a,b<script type="math/tex" id="MathJax-Element-21">\mathbf{a}, \mathbf{b}</script> 求导,可以得到:

La=Σ12bλ1Σ11a=0
<script type="math/tex; mode=display" id="MathJax-Element-22"> \frac{\partial L}{\partial \mathbf{a}}= \Sigma_{12} \mathbf{b}- \lambda_{1} \Sigma_{11} \mathbf{a}=0 </script>
Lb=Σ21aλ2Σ22b=0
<script type="math/tex; mode=display" id="MathJax-Element-23"> \frac{\partial L}{\partial \mathbf{b}}= \Sigma_{21} \mathbf{a}- \lambda_{2} \Sigma_{22} \mathbf{b}=0 </script>

根据约束条件,可以得到:

λ1=λ2=aTΣ12b
<script type="math/tex; mode=display" id="MathJax-Element-24"> \lambda_{1}=\lambda_{2}=\mathbf{a}^{T} \Sigma_{12} \mathbf{b} </script>

所以只要求出 λ1 <script type="math/tex" id="MathJax-Element-25">\lambda_{1}</script> 或者 λ2 <script type="math/tex" id="MathJax-Element-26">\lambda_{2}</script> 就可以得到最大的相关系数。令 λ=λ1=λ2 <script type="math/tex" id="MathJax-Element-27">\lambda=\lambda_{1}=\lambda_{2}</script>.

通过上面的偏导数,我们可以得到:

Σ111Σ12b=λa
<script type="math/tex; mode=display" id="MathJax-Element-28"> \Sigma_{11}^{-1}\Sigma_{12} \mathbf{b}= \lambda \mathbf{a} </script>
Σ122Σ21a=λb
<script type="math/tex; mode=display" id="MathJax-Element-29"> \Sigma_{22}^{-1}\Sigma_{21} \mathbf{a}= \lambda \mathbf{b} </script>

写成矩阵形式:

(Σ11100Σ122)(0Σ21Σ120)(ab)=λ(ab)
<script type="math/tex; mode=display" id="MathJax-Element-231"> \begin{pmatrix} \Sigma_{11}^{-1} & 0 \\ 0 & \Sigma_{22}^{-1} \end{pmatrix} \begin{pmatrix} 0 & \Sigma_{12} \\ \Sigma_{21} & 0 \end{pmatrix} \begin{pmatrix} \mathbf{a} \\ \mathbf{b} \end{pmatrix}=\lambda \begin{pmatrix} \mathbf{a} \\ \mathbf{b} \end{pmatrix} </script>

令:

B=(Σ1100Σ22),A=(0Σ21Σ120)w=(ab)
<script type="math/tex; mode=display" id="MathJax-Element-232">B= \begin{pmatrix} \Sigma_{11} & 0 \\ 0 & \Sigma_{22} \end{pmatrix}, \quad A= \begin{pmatrix} 0 & \Sigma_{12} \\ \Sigma_{21} & 0 \end{pmatrix} \quad \mathbf{w}=\begin{pmatrix} \mathbf{a} \\ \mathbf{b} \end{pmatrix}</script>,
那么,上式可以表示成:

B1Aw=λw
<script type="math/tex; mode=display" id="MathJax-Element-34"> B^{-1}A\mathbf{w}=\lambda \mathbf{w} </script>

所以, λ <script type="math/tex" id="MathJax-Element-35">\lambda</script> 和 w <script type="math/tex" id="MathJax-Element-36">\mathbf{w}</script> 就是 B1A <script type="math/tex" id="MathJax-Element-37"> B^{-1}A </script> 的特征值和特征向量。我们可以求出 B1A <script type="math/tex" id="MathJax-Element-38"> B^{-1}A </script> 的特征值和特征向量,然后利用特征向量将原来的特征
x1,x2 <script type="math/tex" id="MathJax-Element-39">\mathbf{x}_{1}, \mathbf{x}_{2}</script>做映射。对应特征值 λ <script type="math/tex" id="MathJax-Element-40">\lambda</script> 的求解,可以有更简单的方法,从上面的偏导数,我们可以得到如下等式:

Σ111Σ12Σ122Σ21a=λ2a
<script type="math/tex; mode=display" id="MathJax-Element-41"> \Sigma_{11}^{-1}\Sigma_{12}\Sigma_{22}^{-1}\Sigma_{21} \mathbf{a}=\lambda^{2} \mathbf{a} </script>

我们可以利用上面的表达式求出 λ <script type="math/tex" id="MathJax-Element-42">\lambda</script> 和 a <script type="math/tex" id="MathJax-Element-43">\mathbf{a}</script>,然后再待会上面的偏导数等式求出 b <script type="math/tex" id="MathJax-Element-44">\mathbf{b}</script>.

λ <script type="math/tex" id="MathJax-Element-45">\lambda</script> 就是 u,v <script type="math/tex" id="MathJax-Element-46">u,v</script>的相关系数, u,v <script type="math/tex" id="MathJax-Element-47">u, v</script> 就是一对典型变量(canonical variables)。按照 B1A <script type="math/tex" id="MathJax-Element-48">B^{-1}A</script> 的特征值从大到小排列,可以求出一系列的典型变量。特征值越大,说明典型变量的相关性越强。

参考来源:
http://www.cnblogs.com/jerrylead/archive/2011/06/20/2085491.html
https://en.wikipedia.org/wiki/Canonical_correlation

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐