典型相关分析如何分析两组变量的关系

2017-12-07 Sirenia

前言

我们在分析两组变量之间的相关性时,比如 = [ 1 , 2 , . . . , m ]

= [ 1 , 2 , . . . , n ] ,最原始的方法就是直接计算X和Y的协方差矩阵,矩阵有m*n个值。有了协方差矩阵就得到了两两变量之间的相关性,比如 c i j 就是变量 i j 的相关性。

这种分析方法只考虑了 c i j

变量 i j 变量单个维度之间的相关性,没有考虑X和Y内部之间的相关性。另外协方差矩阵的形式也比较繁琐。

典型相关分析

采用类似主成分分析的思想,分别找出两组变量各自的线性组合,然后讨论线性组合之间的相关关心。

分别在两组变量中找出第一对线性组合,使他们具有最大相关性;接着再分别在两组变量中找出第二对线性组合,使他们具有第二大的相关性,并且它们分别于本组内的第一线性组合不相关。以此类推找出其他线性组合,如下面提取两对线性组合,其中 u 1 u 2

互相独立, v 1 v 2 互相独立, u 1 v 1 相关。
u 1 = a 11 x 1 + a 12 x 2 + . . . + a 1 m x m v 1 = b 11 1 + b 12 2 + . . . + b 1 n n
u 2 = a 21 x 1 + a 22 x 2 + . . . + a 2 m x m v 2 = b 21 1 + b 22 2 + . . . + b 2 n n

假设提取了r次,则最后提取了r组变量,

= ( u 1 , . . . , u r ) = ( v 1 , . . . , v r )

则实现通过线性组合来表示原变量,并且用他们之间的相关性来表示原变量的相关性。

本质是什么

典型相关分析的本质是从两组变量中选取若干个有代表性的变量线性组合,用这些线性组合的相关性来表示原来两组变量的相关性。

求解线性组合

以第一组线性组合为例,这里要求解的就是包含的系数。

u 1 = a 11 x 1 + a 12 x 2 + . . . + a 1 m x m v 1 = b 11 1 + b 12 2 + . . . + b 1 n n

矩阵形式为,

u 1 = a 1 v 1 = b 1

只考虑方差为1时的线性函数,这时其实就存在一个约束条件, D ( u 1 ) = D ( v 1 ) = 1

,我们求常向量 a 1 b 1 ,使得相关系数 ρ ( u 1 , v 1 ) 达到最大。

方差分别为,

D ( u 1 ) = D ( a 1 ) = a 1 o v ( , ) a 1 D ( v 1 ) = D ( b 1 ) = b 1 o v ( , ) b 1

u 1 v 1 的协方差为,
o v ( u 1 , v 1 ) = a 1 o v ( , ) b 1

另外我们还有,

o v ( , ) = 11 o v ( , ) = 22 o v ( , ) = 12

两者的相关系数为,
o r r ( u 1 , v 1 ) = o v ( u 1 , v 1 ) D ( u 1 ) D ( v 1 ) = a 1 12 b 1 a 1 11 a 1 b 1 22 b 1

我们要做的是寻找 a 1 b 1

使相关系数最大,同时要考虑前面说到的约束条件 D ( u 1 ) = D ( v 1 ) = 1 ,它能防止结果重复出现,则相关系数变为,
o r r ( u 1 , v 1 ) = a 1 12 b 1

求条件极值一般可以引入拉格朗日乘数来求极大值,求解出 a 1 b 1

对于其他组的线性组合也同样根据上述过程得到解。

线性组合数量

根据线性组合相关性大小不断提取线性组合,最大的为第一组,次大的为第二组,以此类推直到 r

怎么分析

比如第一组线性组合中,可以计算两组变量与u1和v1的相关系数,如果某若干个变量与u1相关系数较大,则u1代表该若干变量的总指标,可以自己根据变量取个额外的名称。而同样如果v1和其他若干变量的相关系数较大的话则v1可代表该若干变量。

接着如果u1和v1的相关系数较大的话则说明u1代表的若干变量与v1代表的若干变量是关系密切的。对于其他线性组合也一样,先找出u2和v2相关的若干变量,然后再看u2与v2之间的相关系数,判断其是否相关。

=============广告时间===============

公众号的菜单已分为“分布式”、“机器学习”、“深度学习”、“NLP”、“Java深度”、“Java并发核心”、“JDK源码”、“Tomcat内核”等,可能有一款适合你的胃口。

鄙人的新书《Tomcat内核设计剖析》已经在京东销售了,有需要的朋友可以购买。感谢各位朋友。

为什么写《Tomcat内核设计剖析》

=========================

欢迎关注:


用户评论
开源开发学习小组列表