Hello,我是你们人见人爱花见花开的小花。又和大家见面了,今天我们来聊一聊多视图学习利器------CCA。

一 典型相关分析的基本思想

当我们研究两个变量x和y之间的相关关系的时候,相关系数(相关系数是用以反映变量之间相关关系密切程度的统计指标。相关系数是按积差方法计算,同样以两变量与各自平均值的离差为基础,通过两个离差相乘来反映两变量之间相关程度;着重研究线性的单相关系数)是最常用的变量:其中Sxx为标准差。

那我们如何研究两组变量之间的相关关系呢?比如(X1,X2,X3)与(y1,y2)我们是不应该计算如下矩阵:,这样把每一个变量之间都求出来了。但是我们这样计算的时候是不是有点繁琐,而且总是会忽略问题的本质。现在我们如果能找出两组变量的各自的某个线性组合,讨论线性组合之间的相关关系,那是不是更为简洁?

现在我们利用主成分分析的思想,可以把多个变量与多个变量之间的相关转化成两个变量之间的相关。例如原来(X1,X2,X3)与(y1,y2)可以分别组合成两个变量U,V.我们假设:

另外。我们找出有最大可能的相关系数(a1,a2,a3)与(b1,b2),这就是典型相关系数。也就是使

典型相关分析最朴素的思想:首先分别在每组变量中找出第一对典型变量,使其具有最大相关性,然后在每组变量中找出第二对典型变量,使其分别与本组内的第一对典型变量不相关,第二对本身具有次大的相关性。如此下去,直到进行到R步,两组变量的相关系被提取完为止,可以得到R组变量。

二 典型相关分析的数学表达

2,1 思考

现在考虑两组变量的向量,其协方差矩阵为其中是第一组变量的协方差矩阵,是第二组变量的协方差矩阵,为第一组和第二组共同的协方差矩阵。

2.2 典型相关系数和典型变量的求法

我就偷个懒,从我以前看的资料上截图把计算过程给大家,哈哈。。。当然有不懂的欢迎留言问我。

计算步骤如下:

结论:既是M1又是M2的特征根,a1和b1是相应于M1和M2的特征向量。

现在我们就把典型相关分析化解成求M1和M2的特征向量和特征值问题了。这里需要说明的是第一对典型变量提取了原始变量x与y之间相关的主要成分,如果这部分还不能解释原始变量,可以在剩余的相关中在求出第二对典型变量和他们的典型相关系数。

三 样本典型相关系数

在实际应用中,总体的协方差矩阵常常是未知的,类似于他的统计分析方法,需要从总体中抽出一根样本,根绝样本对总体的协方差或者相关系数矩阵进行估计,然后利用估计得到的协方差或者相关系数矩阵进行分析。一般在图像的特征提取时候用到,因为图的特征太大了。

四 代码实现

function[ccaEigvector1, ccaEigvector2] = CCA(data1, data2)

% Input:

% data1 ¡ª¡ª view1

% data2 ¡ª¡ª view2

% both row : a sample

% column : a feature

% Output:

% ccaEigvector1 : the projection of view1

% ccaEigvector2 : the projection of view2

% both are not unit(length) one, it makes the conical

% correlation variable has unit variance

% Reference£º

% Appearance models based on kernel canonical correlation analysis

% Pattern Recognition, 2003

% Comments:

% using SVD instead of using the eigen decomposition

dataLen1 = size(data1, 2);

dataLen2 = size(data2, 2);

% Construct the scatter of each view and the scatter between them

data = [data1 data2];

covariance = cov(data);

% Sxx = covariance(1 : dataLen1, 1 : dataLen1) + eye(dataLen1) * 10^(-7);

Sxx = covariance(1 : dataLen1, 1 : dataLen1);

% Syy = covariance(dataLen1 + 1 : size(covariance, 2), dataLen1 + 1 : size(covariance, 2)) ...

% + eye(dataLen2) * 10^(-7);

Syy = covariance(dataLen1 + 1 : size(covariance, 2), dataLen1 + 1 : size(covariance, 2));

Sxy = covariance(1 : dataLen1, dataLen1 + 1 : size(covariance, 2));

% Syx = Sxy';

% using SVD to compute the projection

Hx = (Sxx)^(-1/2);

Hy = (Syy)^(-1/2);

H = Hx * Sxy * Hy;

[U, D, V] = svd(H, 'econ');

ccaEigvector1 = Hx * U;

ccaEigvector2 = Hy * V;

% make the canonical correlation variable has unit variance

ccaEigvector1 = ccaEigvector1 * diag(diag((eye(size(ccaEigvector1, 2)) ./ sqrt(ccaEigvector1' * Sxx * ccaEigvector1))));

ccaEigvector2 = ccaEigvector2 * diag(diag((eye(size(ccaEigvector2, 2)) ./ sqrt(ccaEigvector2' * Syy * ccaEigvector2))));

end

五 总结

CCA主要在多视图学习的特征融合方面有着广泛的应用,比如两张图片,一张正脸,一张侧脸,我们需要做一个人脸识别系统,就需要对其进行双视图学习,我想如果我们把这两张图结合在一起识别率一定会提高的,我们就需要用到CCA。当然用处远不止于此,我们以后会继续和大家交流的。

多视图学习利器----CCA(典型相关分析)及MATLAB实现的更多相关文章

  1. CCA(典型相关分析)

    https://www.cnblogs.com/pinard/p/6288716.html

  2. 典型相关分析CCA计算过程

      本文介绍了CCA解决的问题,CCA原理的推导过程,以及对计算结果物理意义的解释.并且通过SPSS和R操作演示了一个关于CCA的例子.数据文件下载参考[8],SPSS输出结果文件下载参考[9],R代 ...

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

    Canonical Correlation Analysis(CCA)典型相关分析也是一种常用的降维算法.我们知道,PCA(Principal Component Analysis) 主分量分析将数据 ...

  4. Jordan Lecture Note-11: 典型相关分析(Canonical Correlation Analysis, CCA).

    典型相关分析 (一)引入 典型相关分析(Canonical Correlation Analysis)是研究两组变量之间相关关系的一种多元统计方法.他能够揭示出两组变量之间的内在联系. 我们知道,在一 ...

  5. Jordan Lecture Note-12: Kernel典型相关分析(Kernel Canonical Correlation Analysis, KCCA).

    Kernel典型相关分析 (一)KCCA 同样,我们可以引入Kernel函数,通过非线性的坐标变换达到之前CCA所寻求的目标.首先,假设映射$\Phi_X: x\rightarrow \Phi_X(x ...

  6. 深度学习利器: TensorFlow系统架构及高性能程序设计

    2015年11月9日谷歌开源了人工智能平台TensorFlow,同时成为2015年最受关注的开源项目之一.经历了从v0.1到v0.12的12个版本迭代后,谷歌于2017年2月15日发布了TensorF ...

  7. 【转】mysql的union、left join、 right join、 inner join和视图学习

    1.联合 union 进行多个查询语句时,要求多次查询的结果列数必须一样.此时,查询的结果以第一个sql语句的列名为准且union会自动去重复我们应该使用union all. 例...... 1.联合 ...

  8. 多视图学习(multiview learning)

    多视图学习(multi-view learning) 前期吹牛:今天这一章我们就是来吹牛的,刚开始老板在和我说什么叫多视图学习的时候,我的脑海中是这么理解的:我们在欣赏妹子福利照片的时候,不能只看45 ...

  9. SPSS数据分析—基于最优尺度变换的典型相关分析

    传统的典型相关分析只能考虑变量之间的线性相关情况,且必须为连续变量,而我们依然可以使用最优尺度变换来拓展其应用范围,使其可以分析非线性相关.数据为分类数据等情况,并且不再仅限于两个变量间的分析, 虽然 ...

随机推荐

  1. 了解JavaScript 面向对象基础 & 原型与对象

    面向对象语言中的对象 老是能听到什么基于对象, 面向对象. 什么是对象, 如果有面向对象基础的人可以无视了, 下面举个简单的例子给大家讲讲面向对象中, 对象的定义, 这个是比较通用的, 不过对于JS来 ...

  2. Razor速记

    1.语法 @{     int c=2; } @for(int i=0;i<c;i++) {     @i     @:@i     @:select     @:select @i     s ...

  3. luke使用

    Luke介绍 Luke是一个方便的索引查看和诊断工具,可以访问Lucene构建的索引文件,显示和修改某些索引内容.能提供: 通过document编号或term浏览索引 查看document内容,可复制 ...

  4. LintCode389.判断数独是否合法

    LintCode简单题:判断数独是否合法 问题描述: 请判定一个数独是否有效. 该数独可能只填充了部分数字,其中缺少的数字用 . 表示. 注意事项: 一个合法的数独(仅部分填充)并不一定是可解的.我们 ...

  5. [Modern OpenGL系列(三)]用OpenGL绘制一个三角形

    本文已同步发表在CSDN:http://blog.csdn.net/wenxin2011/article/details/51347008 在上一篇文章中已经介绍了OpenGL窗口的创建.本文接着说如 ...

  6. ASP.NET Button、ImageButton、LinkButton、HyperLink区别

    这4个控件都属于WEB服务器控件,有很多相同的属性和事件.其区别如下所示. 在*.aspx页面中插入Button控件如以下代码所示.<asp:Button runat="server& ...

  7. C#设计模式学习笔记-单例模式

    最近在学设计模式,学到创建型模式的时候,碰到单例模式(或叫单件模式),现在整理一下笔记. 在<Design Patterns:Elements of Resuable Object-Orient ...

  8. jsmooth compilation failed error null

    JSmooth 0.9.9-7 在将 jar 文件打包成 exe 文件时报错:jsmooth compilation failed error null 原因,没有指定 logo 图片文件. http ...

  9. java遍历给定目录,树形结构输出所有文件,包括子目录中的文件

    (转自:http://blog.csdn.net/gangwazi0525/article/details/7569701) import java.io.File; public class Rea ...

  10. Shell教程

    http://www.reddragonfly.org/abscn/index.html