Jordan Lecture Note-12: Kernel典型相关分析(Kernel Canonical Correlation Analysis, KCCA).
Kernel典型相关分析
(一)KCCA
同样,我们可以引入Kernel函数,通过非线性的坐标变换达到之前CCA所寻求的目标。首先,假设映射$\Phi_X: x\rightarrow \Phi_X(x), \Phi_Y: y\rightarrow \Phi_Y(y)$,记$\mathbf{\Phi_X}=(\Phi_X(x_1),\Phi_X(x_2),\cdots,\Phi_X(x_p))^\prime, \mathbf{\Phi_Y}=(\Phi_Y(y_1),\Phi_Y(y_2),\cdots,\Phi_Y(y_q))^\prime$。我们要寻找典型变量$u,v$使相关系数最大,其中$u=\langle a,\Phi_X(x)\rangle=\Phi_X^\prime a, v=\langle b,\Phi_Y(y)\rangle=\Phi_Y^\prime b$,$a,b$的维度为映射后的空间。根据上一个笔记的分析,我们应该优化如下模型:
\begin{align}\mathop{\max}&\quad a^\prime\mathbf{\Phi_X}^\prime\mathbf{\Phi_Y}b \nonumber\\\mathop{s.t.}&\quad a^\prime\mathbf{\Phi_X}^\prime\mathbf{\Phi_X}a=1\nonumber\\&\quad b^\prime\mathbf{\Phi_Y}^\prime\mathbf{\Phi_Y}b=1\label{model:koriginal}\end{align}
此时,如果我们直接优化上面的模型的话,就无法引进Kernel函数,因为我们凑不出$\Phi_X(x)^\prime\Phi_X(y)$这种形式。这样的话,我们就得知道映射$\Phi$的具体形式。但实际上,这里的$a,b$其实是可以表示成数据$\Phi_X(x_1),\cdots,\Phi_X(x_n)$以及数据$\Phi_Y(y_1),\cdots,\Phi_Y(y_n)$的线性组合。原因蛮复杂的,大概是当映射后的Hilbert空间的维度很大,那么这里的$a,b$就一定在数据张成的空间里。具体可以参见一下两篇论文(Nonlinear component analysis as a kernel eigenvalue problem以及Kernel independent component analysis)。另外在KCCA刚提出的那篇论文里(A kernel method for canonical correlation analysis),没有从那么深奥的理论去解释,但他是直接从正则化的KCCA那边出发去解释的,这里也稍微说明一下。正则化的Lagrange函数为:
\begin{equation}L(a,b,\lambda_1,\lambda_2)=a^\prime\mathbf{\Phi_X}^\prime\mathbf{\Phi_Y} b-\frac{\lambda_1}{2}(a^\prime\mathbf{\Phi_X}^\prime\mathbf{\Phi_X}a-1)-\frac{\lambda_2}{2}(b^\prime\mathbf{\Phi_Y}^\prime\mathbf{\Phi_Y}b-1)+\frac{\eta}{2}(\|a\|^2+\|b\|^2)\end{equation}
将Lagrange函数对$a$求导并令导数为零得:
\begin{equation}\frac{\partial L}{\partial a}=\mathbf{\Phi_X}^\prime\mathbf{\Phi_Y}b-\lambda_1\mathbf{\Phi_X}^\prime\mathbf{\Phi_X}a+\eta a=0\end{equation}
故$a=\frac{\mathbf{\Phi_X}^\prime(\lambda_1\mathbf{\Phi_X}a-\mathbf{\Phi_Y}b)}{\eta}$,其中我们可以把$\frac{\lambda_1\mathbf{\Phi_X}a-\mathbf{\Phi_Y}b}{\eta}$记作向量$c$,也就是说$a$可以表示成$a=\mathbf{\Phi_X}^\prime c$。同理,$b$也可表示成$b=\mathbf{\Phi_Y}^\prime d$。接下去我们就用$\mathbf{\Phi_X}^\prime c, \mathbf{\Phi_Y}d$来替换$a,b$,先从KCCA开始,然后在引入正则化的KCCA。
利用以上结果模型\ref{model:koriginal}可转化为:
\begin{align}\mathop{\max}&\quad c\mathbf{\Phi_X}^\prime\mathbf{\Phi_X}\mathbf{\Phi_Y}^\prime\mathbf{\Phi_Y}d\nonumber\\\mathop{s.t.}&\quad c\mathbf{\Phi_X}^\prime\mathbf{\Phi_X}\mathbf{\Phi_X}^\prime\mathbf{\Phi_X}c=1\nonumber\\&\quad d\mathbf{\Phi_Y}^\prime\mathbf{\Phi_Y}\mathbf{\Phi_Y}^\prime\mathbf{\Phi_Y}d=1\label{model:k}\end{align}
我们用核函数$\mathbf{K_X}=\mathbf{\Phi_X}^\prime\mathbf{\Phi_X}$和$\mathbf{K_Y}=\mathbf{\Phi_Y}^\prime\mathbf{\Phi_Y}$代替上述模型得:
\begin{align}\mathop{\max}&\quad c\mathbf{K_X}\mathbf{K_Y}d\nonumber\\\mathop{s.t.}&\quad c\mathbf{K_X}\mathbf{K_X}d=1\nonumber\\&\quad d\mathbf{K_Y}\mathbf{K_Y}d=1\label{model:kernel}\end{align}
对应的Lagrange函数为:
\begin{equation}L(c,d,\lambda_1,\lambda_2)=c^\prime\mathbf{K_X}\mathbf{K_Y}d-\frac{\lambda_1}{2}(c^\prime\mathbf{K_X}^2c-1)-\frac{\lambda_2}{2}(d\mathbf{K_Y}^2d-1)\end{equation}
对Lagrange函数求导得:
\begin{align}&\frac{\partial L}{\partial c}=\mathbf{K_X}\mathbf{K_Y}d-\lambda_1\mathbf{K_X}^2d=0\label{equ:partialc}\\&\frac{\partial L}{\partial d}=\mathbf{K_Y}\mathbf{K_X}c-\lambda_2\mathbf{K_Y}^2d=0\label{equ:partiald}\end{align}
由$c^\prime$左乘式子\ref{equ:partialc},$d^\prime$左乘式子\ref{equ:partiald},相减得:
\begin{equation}\lambda_2d^\prime\mathbf{K_Y}^2d-\lambda_1c^\prime\mathbf{K_X}^2c=0\Longrightarrow \lambda_1=\lambda_2\triangleq \lambda\end{equation}
再结合$c^\prime \mathbf{K_X}\mathbf{K_Y}d-\lambda_1c\mathbf{K_X}^2c=c^\prime\mathbf{K_X}\mathbf{K_Y}d-\lambda_1=0$可得:
\begin{equation}\lambda=c\mathbf{K_X}\mathbf{K_Y}d\end{equation}
即$\lambda$就是典型变量$u,v$的相关系数。接下去同样采用Note-11中的推导方法,也能得到一个求矩阵特征值的方程。这里就不再赘述了。
现在我们来看一个问题,当$\mathbf{K_X},\mathbf{K_Y}$可逆的情况下,由式子\ref{equ:partiald}可得:$d=\frac{\mathbf{K_Y}^{-2}\mathbf{K_Y}\mathbf{K_X}d}{\lambda}=\frac{\mathbf{K_Y}^{-1}\mathbf{K_X}c}{\lambda}$,将其代入\ref{equ:partialc}得:
\begin{equation}\mathbf{K_XK_YK_Y}^{-1}\mathbf{K_X}c-\lambda^2\mathbf{K_X}^2c=0\Longrightarrow \lambda=1\end{equation}
也就是说,对于任何一个$d$总存在$c$使$u,v$的相关系数为1,显然这样的结果表明了模型出现了过拟合现象。事实上在有些论文中也提到了,当映射后的Hilbert空间的维数很大时,Lagrange函数会产生ill-posed,此时我们引入二次正则项得到一个well-posed Lagrange。也就是正则化的KCCA。
(二)正则化的KCCA
这里介绍两种正则化的KCCA,一种是对Lagrange加入正则项,一种是对限制条件做一下修改。
1) 引入正则项的Lagrange函数为:
\begin{equation}L=c^\prime\mathbf{K_XK_Y}d-\frac{\lambda_1}{2}(c^\prime\mathbf{K_X}^2c-1)-\frac{\lambda_2}{2}(d^\prime\mathbf{K_Y}^2d-1)+\frac{\eta}{2}(\|c\|^2+\|d\|^2)\end{equation}
同样令Lagrange函数的导数为0,得:
\begin{align}&\mathbf{K_XK_Y}d=\lambda(\frac{\lambda_1}{\lambda}\mathbf{K_X}^2-\frac{\eta}{\lambda}\mathbf{I})c\\&\mathbf{K_YK_X}c=\lambda(\frac{\lambda_2}{\lambda}\mathbf{K_Y}^2-\frac{\eta}{\lambda}\mathbf{I})d\end{align}
记$\mathbf{K_O}=\left[\begin{array}&0&\mathbf{K_XK_Y}\\\mathbf{K_Yk_X}&0\end{array}\right]$,$\mathbf{K_D}=\left[\begin{array}&\frac{\lambda_1}{\lambda}\mathbf{K_X}^2+\frac{\eta}{\lambda}\mathbf{I}&0\\0&\frac{\lambda_2}{\lambda}\mathbf{K_Y}^2+\frac{\eta}{\lambda}\mathbf{I}\end{array}\right]$,$\gamma=\left[\begin{array}&c\\d\end{array}\right]$,则:
\begin{equation}\mathbf{K_O}\gamma=\lambda\mathbf{K_D}\gamma\Longrightarrow\mathbf{K_D}^{-1}\mathbf{K_O}\gamma=\lambda\gamma\end{equation}
得到一个求特征值的问题。
2)对限制条件作修改后的模型为:
\begin{align}\mathop{\max}&\quad c^\prime\mathbf{K_X}\mathbf{K_Y}d\nonumber\\\mathop{s.t.}&\quad(1-\tau)c^\prime\mathbf{K_X}^2c+\tau c^\prime\mathbf{K_X}c=1\nonumber\\&\quad(1-\tau)d^\prime\mathbf{K_Y}^2d+\tau d\mathbf{K_Y}d=1\end{align}
其Lagrange函数为:
\begin{equation}L=c^\prime\mathbf{K_XK_Y}d-\frac{\lambda_1}{2}[(1-\tau)c^\prime\mathbf{K_X}^2c+\tau c^\prime\mathbf{K_X}c-1]-\frac{\lambda_2}{2}[(1-\tau)d^\prime\mathbf{K_Y}^2d+\tau d^\prime\mathbf{K_Y}d-1]\end{equation}
求导:
\begin{align}&\frac{\partial L}{\partial c}=\mathbf{K_XK_Y}d-\lambda_1[(1-\tau)\mathbf{K_X}^2c+\tau\mathbf{K_X}c]\label{equ:partialconc}\\&\frac{\partial L}{\partial d}=\mathbf{K_YK_X}c-\lambda_2[(1-\tau)\mathbf{K_Y}^2d+\tau\mathbf{K_Y}d]\label{equ:partialcond}\end{align}
$c^\prime\times$\ref{equ:partialconc},$d^\prime\times$\ref{equ:partialcond},相减得到:
\begin{align*}&\lambda_1c^\prime[(1-\tau)\mathbf{K_X}^2c+\tau\mathbf{K_X}c]=\lambda_2d^\prime[(1-\tau)\mathbf{K_Y}^2d+\tau\mathbf{K_Y}d]\\\Longrightarrow&\lambda_1=\lambda_2=\lambda=c^\prime\mathbf{K_XK_Y}d\end{align*}
同样记$\mathbf{K_O}=\left[\begin{array}&0&\mathbf{K_XK_Y}\\\mathbf{K_YK_X}&0\end{array}\right]$,$\mathbf{K_D}=\left[\begin{array}&(1-\tau)\mathbf{K_X}^2+\tau\mathbf{K_X}&0\\0&(1-\tau)\mathbf{K_Y}^2+\tau\mathbf{K_Y}\end{array}\right]$,$\gamma=\left[\begin{array}&c\\d\end{array}\right]$,则$\mathbf{K_O}\gamma=\lambda\mathbf{K_D}\gamma$,得到一个求特征值的问题。
(三)Cholesky Decomposition
由于解上述特征值问题时会遇到效率与精度问题,故可对上述的矩阵进行SVD分解,或对上述正定矩阵进行完全Cholesky分解,或者不完全Cholesky分解。
1)完全Cholesky分解
a) 对于一个正定矩阵$\mathbf{A}$,我们总可以将$\mathbf{A}$分解成三角矩阵相乘的形式,即$\mathbf{A}=\mathbf{LL}^\prime$,其中$\mathbf{L}$为下三角矩阵。由$\mathbf{A}=\mathbf{LL}^\prime$可知:
\begin{equation*}a_{ij}=\sum_{k=1}^{j}l_{ik}l_{jk}=\sum_{k=1}^{j-1}l_{ik}l_{jk}+l_{ij}l_{jj},\quad j<i\end{equation*}
所以,由$a_{jj}=\sum_{k=1}^{j-1}l_{jk}^2+l_{jj}^2\Longrightarrow l_{jj}^2=a_{jj}-\sum_{k=1}^{j-1}l_{jk}^2$,继而$l_{ij}=\frac{1}{l_{jj}}(a_{ij}-\sum_{k=1}^{j-1}l_{ik}l_{jk})$。从上述方程可以看出$\mathbf{L}$的计算过程从左到右,逐列计算,称为left-looking cholesky。
b) 由$\mathbf{A}=\mathbf{LL}^\prime=\left[\begin{array}&\lambda_{11}&0\\l_1&\tilde{\mathbf{L}}\end{array}\right]\left[\begin{array}&\lambda_{11}&0\\l_1&\tilde{\mathbf{L}}\end{array}\right]^\prime=\left[\begin{array}&a_{11}&a_1^\prime\\a_1&\tilde{\mathbf{A}}\end{array}\right]$。所以:
$$a_{11}=\lambda_{11}^2\Longrightarrow \lambda_{11}=\sqrt{a_{11}}$$
$$a_1=\lambda_{11}l_1\Longrightarrow l_1=\frac{a_1}{\sqrt{a_{11}}}$$
$$\tilde{\mathbf{A}}=l_1l_1^\prime+\tilde{\mathbf{L}}\tilde{\mathbf{L}}^\prime\Longrightarrow\tilde{\mathbf{L}}\tilde{\mathbf{L}}^\prime=\tilde{\mathbf{A}}-\frac{a_1a_1^\prime}{a_{11}}$$
可以用递归的方式不断的计算出$\tilde{\mathbf{L}}$,称为right-looking cholesky。
2)不完全cholesky分解
与完全cholesky分解不同,不完全cholesky分解的目标是寻找一个矩阵$\tilde{\mathbf{G}}_{N\times M}$(其中$M<<N$),使$\mathbf{A}\approx\tilde{\mathbf{G}}\tilde{\mathbf{G}}^\prime$,即$\|\mathbf{A}-\tilde{\mathbf{G}}\tilde{\mathbf{G}}^\prime\|_F<\eta$,这里的$\tilde{\mathbf{G}}$也是下三角矩阵。其中算法的主要原理是:如果对角元素$l_{ii}$很小的话,那么我们可以把该列去掉,去掉该列之后,在其后的列都必须进行更新。算法从最大的对角元素开始,然后把该列交换到最前面,然后进行更新。算法流程:
Input: $N\times N$正定矩阵$\mathbf{K}$,和$\eta$.
- 初始化:$i=1,\mathbf{\bar{K}}=\mathbf{K},\mathbf{P}=\mathbf{I},\mathbf{G}=0$,$G_{jj}=K_{jj}, j=1,\cdots,N$.
- while $\sum_{j=i}^NG_{jj}>\eta$
- 找出最大的$G_{jj}$: $j^*=\mathop{argmax}_{j\in[i,N]} G_{jj}$.
- 更新交换矩阵$\mathbf{P}$:
$Pnext = \mathbf{I}$, $Pnext_{ii}=0$, $Pnext_{j^*j^*}=0$, $Pnext_{ij^*}=1$, $Pnext_{j^*i}=1$(Pnext为交换$i,j^*$行或列的交换矩阵),$\mathbf{P}=\mathbf{P}Pnext$
- 对$\mathbf{\bar{K}}$进行行列交换:$\mathbf{\bar{K}}=Pnext\mathbf{\bar{K}}Pnext$.
- 交换矩阵$\mathbf{G}$中第$i$行和第$j^*$行,注意只交换前$i$个元素,$j^*\geq i$: $\mathbf{G}_{i,1:i}\longleftrightarrow\mathbf{G}_{j^*,1:i}$.
- $\mathbf{G}_{ii}=\sqrt{\mathbf{\bar{K}}_{ii}}$.
- 更新第$i$列$\mathbf{G}$: $\mathbf{G}_{i+1:n,i}=\frac{1}{\mathbf{G}_{ii}}(\mathbf{\bar{K}}_{i+1:N,i}-\sum_{i=1}^{i-1}\mathbf{G}_{i+1:N,j}\mathbf{G}_{ij})$.
- 更新$i$后面的对角元素:for $j\in[i+1,N], \mathbf{G}_{jj}=\mathbf{K}_{jj}-\sum_{k=1}^i\mathbf{G}_{jk}^2$.
- $i=i+1$.
- 得到$\mathbf{P},\mathbf{G}$,$M=i-1$.
Output: 一个$N\times M$的矩阵$\mathbf{G}$,和交换矩阵$\mathbf{P}$,使$\|\mathbf{PKP}^\prime-\mathbf{GG}^\prime\|\leq\eta$.
Jordan Lecture Note-12: Kernel典型相关分析(Kernel Canonical Correlation Analysis, KCCA).的更多相关文章
- Jordan Lecture Note-11: 典型相关分析(Canonical Correlation Analysis, CCA).
典型相关分析 (一)引入 典型相关分析(Canonical Correlation Analysis)是研究两组变量之间相关关系的一种多元统计方法.他能够揭示出两组变量之间的内在联系. 我们知道,在一 ...
- 机器学习: Canonical Correlation Analysis 典型相关分析
Canonical Correlation Analysis(CCA)典型相关分析也是一种常用的降维算法.我们知道,PCA(Principal Component Analysis) 主分量分析将数据 ...
- 经典相关分析,典型关分析, CCA,Canonical Correlation Analysis,多元变量分析,线性组合,相关系数最大化
1.从概率论中相关系数推广而来 在概率论中,研究两个变量之间的线性相关情况时,提出了 相关系数 这个概念.做一下推广,如果研究一个变量和多个随机变量之间的线性相关关系时,提出了 全相关系数(或者复相关 ...
- 多视图学习利器----CCA(典型相关分析)及MATLAB实现
Hello,我是你们人见人爱花见花开的小花.又和大家见面了,今天我们来聊一聊多视图学习利器------CCA. 一 典型相关分析的基本思想 当我们研究两个变量x和y之间的相关关系的时候,相关系数(相关 ...
- 典型相关分析CCA计算过程
本文介绍了CCA解决的问题,CCA原理的推导过程,以及对计算结果物理意义的解释.并且通过SPSS和R操作演示了一个关于CCA的例子.数据文件下载参考[8],SPSS输出结果文件下载参考[9],R代 ...
- Jordan Lecture Note-5: Kernels
Kernels 我们首先来回顾kernel函数的定义:一个函数$K(x,y)$为kernel函数当且仅当对$\forall g, \int K(x,y)g(x)g(y)dxdy\geq 0$成立.另外 ...
- Jordan Lecture Note-3: 梯度投影法
Jordan Lecture Note-3:梯度投影法 在这一节,我们介绍如何用梯度投影法来解如下的优化问题: \begin{align} \mathop{\min}&\quad f(x)\n ...
- SPSS数据分析—基于最优尺度变换的典型相关分析
传统的典型相关分析只能考虑变量之间的线性相关情况,且必须为连续变量,而我们依然可以使用最优尺度变换来拓展其应用范围,使其可以分析非线性相关.数据为分类数据等情况,并且不再仅限于两个变量间的分析, 虽然 ...
- SPSS数据分析—典型相关分析
我们已经知道,两个随机变量间的相关关系可以用简单相关系数表示,一个随机变量和多个随机变量的相关关系可以用复相关系数表示,而如果需要研究多个随机变量和多个随机变量间的相关关系,则需要使用典型相关分析. ...
随机推荐
- Linux 中 x86 的内联汇编
工程中需要用到内联汇编,找到一篇不错的文章,趁机学习下. 原文地址:http://www.ibm.com/developerworks/cn/linux/sdk/assemble/inline/ 如果 ...
- DWZ使用笔记
DWZ使用笔记 一.前言 在最近的一个项目中,引入了DWZ这个富客户端框架,算是一次尝试吧.期间也遇到不少问题,总算一一解决了.特以此文记之. 本人用的是dwz-ria-1.4.5+A ...
- Lucene学习笔记: 五,Lucene搜索过程解析
一.Lucene搜索过程总论 搜索的过程总的来说就是将词典及倒排表信息从索引中读出来,根据用户输入的查询语句合并倒排表,得到结果文档集并对文档进行打分的过程. 其可用如下图示: 总共包括以下几个过程: ...
- 超简单fedora20(linux)下JDK1.8的安装
(博客园-番茄酱原创) 去官网下载linux版本的jdk,如果你的fedora是64位,就选择64位的jdk,jdk-8u20-linux-x64.tar.gz. 将下载好的jdk解压到当前目录下,解 ...
- PopupWindow添加动画效果
1.定义PopupWindow弹出与消失的两个动画文件,放在anim文件夹下 popup_enter.xml <?xml version="1.0" encoding=&qu ...
- JDBC学习笔记(2)——Statement和ResultSet
Statement执行更新操作 Statement:Statement 是 Java 执行数据库操作的一个重要方法,用于在已经建立数据库连接的基础上,向数据库发送要执行的SQL语句.Statement ...
- #JAVA操作LDAP
package com.wisdombud.unicom.monitor.ldap; import java.util.ArrayList; import org.slf4j.Logger; impo ...
- [iOS 多线程 & 网络 - 4.0] - AFN框架简单使用
A.AFN基本知识 1.概念 AFNetworking 是对NSURLConnection的封装 运行效率没有ASI高(因为ASI基于CFNetwork),但是使用简单 AFN支持ARC B. ...
- UIImage 相关操作
修改UIImage大小 修改UISlider的最大值和最小值图片的时候,发现需要修改图片的大小,否则会导致UISlider变形.目前苹果还不支持直接修改UIImage类的大小,只能修改UIImageV ...
- CoreSeek有符号整型
数据库status字段的值有:-1,0,1 设置过滤字段,发现sql_attr_uint不支持负数,后改用sql_attr_bigint sql_attr_bigint = status sql_at ...