• 欢迎浏览“String me = Creater\忠实的资深Linux玩家;”,请文明浏览,理性发言,有侵犯你的权益请邮件我(creater@vip.qq.com).
  • 把任何的失败都当作一次尝试,不要自卑;把所有的成功都想成是一种幸运,不要自傲。
  •    1年前 (2017-10-16)  模式识别&机器学习 |   抢沙发  44 
    文章评分 0 次,平均分 0.0

    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

     

    除特别注明外,本站所有文章均为String me = "Creater\忠实的资深Linux玩家";原创,转载请注明出处来自http://unix8.net/home.php/5673.html

    关于

    发表评论

    暂无评论

    切换注册

    登录

    忘记密码 ?

    切换登录

    注册

    扫一扫二维码分享