机器学习: Canonical Correlation Analysis 典型相关分析

2017年10月16日 由 Creater 留言 »

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

但是,有的时候,想知道多个线性空间之间的相关性。比如有的时候我们会从图像中提取各种特征,每一种特征都可以构成一个线性空间,为了分析这些空间之间的相关性,我们可以利用CCA 来做分析。
假设我们有两个特征空间,\(S1={\mathbf{x}_{1} \in R^{d1}}\)\(S2={\mathbf{x}_{2} \in R^{d2}}\)

\(\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}\)

可以看到,\(\Sigma_{12}=\Sigma_{21}^{T}\),\(\Sigma\) 称为协方差矩阵。我们引入投影向量 \(\mathbf{a}\), \(\mathbf{b}\), 假设投影之后的变量满足:

\(u=\mathbf{a}^{T} \mathbf{x}_{1} \quad v=\mathbf{b}^{T} \mathbf{x}_{2}\)

可以进一步算出 \(u,v\)的方差和协方差:

\(\text{var}(u)= \mathbf{a}^{T} \Sigma_{11} \mathbf{a}, \quad \text{var}(v)=\mathbf{b}^{T} \Sigma_{21} \mathbf{b}, \quad cov(u,v)=\mathbf{a}^{T} \Sigma_{12} \mathbf{b}\)

可以计算出 \(u,v\)的相关系数:

\(Corr(u,v)=\frac{\text{cov}(u,v)}{\sqrt{\text{var}(u)} \sqrt{\text{var}(v)}}\)

将u,v的表达式代入,可以得到:

\(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}}}\)

我们的目标是让相关系数\(Corr(u,v)\)尽可能地大。为了求解\(\mathbf{a}\), \(\mathbf{b}\), 可以固定分母而让分子最大化,所以上面的函数可以变成:

\(\max_{\mathbf{a}, \mathbf{b}} \mathbf{a}^{T} \Sigma_{12} \mathbf{b}\)

构造拉格朗日等式:

\(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)\)

L 分别对\(\mathbf{a}\), \(\mathbf{b}\)求导,可以得到:

\(\frac{\partial L}{\partial \mathbf{a}}= \Sigma_{12} \mathbf{b}- \lambda_{1} \Sigma_{11} \mathbf{a}=0\)

\(\frac{\partial L}{\partial \mathbf{b}}= \Sigma_{21} \mathbf{a}- \lambda_{2} \Sigma_{22} \mathbf{b}=0\)

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

\(\lambda_{1}=\lambda_{2}=\mathbf{a}^{T} \Sigma_{12} \mathbf{b}\)

所以只要求出\(\lambda_{1}\) 或者\(\lambda_{2}\)就可以得到最大的相关系数。令\( \lambda=\lambda_{1}=\lambda_{2}\).
通过上面的偏导数,我们可以得到:

\(\Sigma_{11}^{-1}\Sigma_{12} \mathbf{b}= \lambda \mathbf{a}\)

\(\Sigma_{22}^{-1}\Sigma_{21} \mathbf{a}= \lambda \mathbf{b}\)

写成矩阵形式:

\(\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}\)

令:

\(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}\)

那么,上式可以表示成:

\(B^{-1}A\mathbf{w}=\lambda \mathbf{w}\)

所以,\(\lambda \)和 \(\mathbf{w}\) 就是\(B^{-1}A\) 的特征值和特征向量。我们可以求出 \(B^{-1}A\)的特征值和特征向量,然后利用特征向量将原来的特征
\(\mathbf{x}_{1}, \mathbf{x}_{2}\)做映射。对应特征值 \(\lambda \)的求解,可以有更简单的方法,从上面的偏导数,我们可以得到如下等式:

\(\Sigma_{11}^{-1}\Sigma_{12}\Sigma_{22}^{-1}\Sigma_{21} \mathbf{a}=\lambda^{2} \mathbf{a}\)

我们可以利用上面的表达式求出\(\lambda \) 和 \(\mathbf{a}\),然后再待会上面的偏导数等式求出 \(\mathbf{b}\).
\(\lambda \)就是 \(u,v\)的相关系数,\(u,v\) 就是一对典型变量(canonical variables)。按照 \(B^{-1}A\) 的特征值从大到小排列,可以求出一系列的典型变量。特征值越大,说明典型变量的相关性越强。
Reference:
http://blog.csdn.net/wenyusuran/article/details/35290683

广告位

发表评论

你必须 登陆 方可发表评论.