典型相关分析CCA附算法应用及程序Word格式.docx

上传人:b****2 文档编号:13949000 上传时间:2022-10-15 格式:DOCX 页数:11 大小:133.91KB
下载 相关 举报
典型相关分析CCA附算法应用及程序Word格式.docx_第1页
第1页 / 共11页
典型相关分析CCA附算法应用及程序Word格式.docx_第2页
第2页 / 共11页
典型相关分析CCA附算法应用及程序Word格式.docx_第3页
第3页 / 共11页
典型相关分析CCA附算法应用及程序Word格式.docx_第4页
第4页 / 共11页
典型相关分析CCA附算法应用及程序Word格式.docx_第5页
第5页 / 共11页
点击查看更多>>
下载资源
资源描述

典型相关分析CCA附算法应用及程序Word格式.docx

《典型相关分析CCA附算法应用及程序Word格式.docx》由会员分享,可在线阅读,更多相关《典型相关分析CCA附算法应用及程序Word格式.docx(11页珍藏版)》请在冰豆网上搜索。

典型相关分析CCA附算法应用及程序Word格式.docx

之间具有最大的相关性,

为第一对典型变量;

理,寻找第二对投影方向

得到第二对典型变量

使其与第一对典型变量不相关,且

之间又具有最大相关性。

这样下去,直到x与y的典型变量提取完毕为止。

从而x与y之间的相关性分析,只需通过分析少数几对典型变量的关系即可达到目的。

3、CCA算法详解

(3)

考虑到:

的极值只与

的方向有关,而与它们的大小无关,为了得到唯一解不失一般性,加入限制条件:

(4)

问题变为在约束条件式下,求使准则函数式取最大值的典型投影矢量对

求解上述优化问题,可定义拉格朗日函数:

(5)

分别对

求导数,并令为零,得到:

(6)

(7)

(8)

(9)

对H进行奇异值分解:

分别将

,…

看做是变换后的特征分量:

(14)

(15)

(16)

投影后的组合特征用于分类,其中变换矩阵为:

(17)

4、典型相关分析应用实例

欲研究儿童形态与肺通气功能的关系,测得某小学40名8~12岁健康儿童(身高X1,体重X2,胸围X3)与肺通气功能(肺活量Y1,静息通气Y2和每分钟最大通气量Y3),分析儿童形态和肺通气指标的相关性,确定典型变量的对数。

x1=[140.6,135.7,140.2,152.1,132.2,147.1,147.5,130.6,154.9,142.4,136.5,162,

148.9,136.3,159.5,165.9,134.5,152.5,138.2,144.2];

x2=[43.7,39.5,48,52,36,45,47,38,48,42,38,58,42,33,49,55,41,53,35.5,42];

x3=[77,63,75,88,62,78,76,61,87,74,69,95,80,68,87,93,61,83,66,76];

y1=[2.6,2,2.6,2.8,2.1,2.8,3.1,2,2.9,2.33,1.98,3.29,2.7,2.4,2.98,3.1,2.25,2.96,

2.13,2.52];

y2=[7,7,6.1,10.1,7.4,9.25,8.78,5.31,10.6,11.1,7.77,3.35,10.1,7.8,11.77,13.14,

8.75,6.6,6.62,5.59];

y3=[108,91,101,112,97,92,95,77,80,76,49,58,82,76,88,110,75,71,105,82];

(1)仿真结果分析结:

(实验平台:

Matlab2014,程序见附录)

R1=0.9282

R2=0.5302

R3=0.0081

R2==0.5302

(2)结果分析:

三幅分别对应不同特征值所对应的儿童形态与肺通气功能的关系,

显然,第一幅图的线性关系最好,即儿童形态与肺通气功能的相关性最大,变化趋势一致,进行特征融合以达到降维的目的。

六、心得体会

通过本次大作业,对小样的典型相关分析查阅了很多文献,对文献的阅读的辨别能力有了很大提升,抓住文献中的重点要点,进行深一步的理解;

其次在程序的编写中,CCA的编写从原理到算法解析再到算法的逻辑结构,一步步的将CCA的思想理解透彻并体现在MATLAB的程序中,在程序编写的过程中也遇到了很多挫折和编译失败的困惑,但是通过网上查阅和向教员请教以及同学的询问,一一得到解决,最终完成了本次大作业的撰写,其中也收获到了很多东西,学到了很多,希望以后能扎实学习,更进一步。

附录:

clearall

clc

x1=[140.6,135.7,140.2,152.1,132.2,147.1,147.5,130.6,154.9,142.4,136.5,162,148.9,136.3,159.5,165.9,134.5,152.5,138.2,144.2];

x2=[43.7,39.5,48,52,36,45,47,38,48,42,38,58,42,33,49,55,41,53,35.5,42];

x3=[77,63,75,88,62,78,76,61,87,74,69,95,80,68,87,93,61,83,66,76];

y1=[2.6,2,2.6,2.8,2.1,2.8,3.1,2,2.9,2.33,1.98,3.29,2.7,2.4,2.98,3.1,2.25,2.96,2.13,2.52];

y2=[7,7,6.1,10.1,7.4,9.25,8.78,5.31,10.6,11.1,7.77,3.35,10.1,7.8,11.77,13.14,8.75,6.6,6.62,5.59];

y3=[108,91,101,112,97,92,95,77,80,76,49,58,82,76,88,110,75,71,105,82];

mx1=sum(x1)/20;

mx2=sum(x2)/20;

mx3=sum(x3)/20;

my1=sum(y1)/20;

my2=sum(y2)/20;

my3=sum(y3)/20;

d=[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1];

x1=x1-mx1.*d;

x2=x2-mx2.*d;

x3=x3-mx3.*d;

y1=y1-my1.*d;

y2=y2-my2.*d;

y3=y3-my3.*d;

%b=imread('

1.jpg'

);

%a=imread('

2.jpg'

%c=rgb2gray(a);

%d=rgb2gray(b);

%c=double(imresize(c,[128,128]));

%d=double(imresize(d,[128,128]));

%zushu=size(X,1);

A=[x1'

x2'

x3'

];

B=[y1'

y2'

y3'

[Wx,Wy,r,n,m]=CCA_algorithm(A,B);

%CCA_zq.(Z,zushu,2)

Z=Wx

Y=Wy

U1=Wx(:

1);

U2=Wx(:

2);

U3=Wx(:

3);

V1=Wy(:

V2=Wy(:

V3=Wy(:

figure

(1);

plot(U1,V1,'

*'

figure

(2);

plot(U2,V2,'

r*'

figure(3);

g^'

%CCA函数调用:

function[U,V,nmuta,nmutatwo,U_replace,V_replace]=CCA_algorithm(X,Y)

%计算典型相关分析的程序

n=size(X,1);

p=size(X,2);

q=size(Y,2);

X=X-repmat(mean(X,1),n,1);

Y=Y-repmat(mean(Y,1),n,1);

Z=[XY];

Covz=cov(Z);

S11=Covz(1:

p,1:

p);

S22=Covz(p+1:

end,p+1:

end);

S12=Covz(1:

p,p+1:

%S21=Covz(p+1:

end,1:

S21=S12'

;

k=1;

Ip=eye(p);

Iq=eye(q);

ifrank(S11)~=p

S11=S11+k*Ip;

end

ifrank(S22)~=q

S22=S22+k*Iq;

%避免出现复数,不使用S11^(-1/2)

K=S11^(-1/2)*S12*S22^(-1/2);

d=rank(K);

[U1,S1,V1]=svd(K,0);

U2=U1(:

1:

d);

V2=V1(:

A=S11^(-1/2)*U2;

B=S22^(-1/2)*V2;

%A=S11^(1/2)\U2;

%B=S22^(1/2)\V2;

U=X*A;

V=Y*B;

nmuta=diag(S1);

nmuta=nmuta(1:

%使用下面的效果是一样的

M1=inv(S11)*S12*inv(S22)*S21;

M2=inv(S22)*S21*inv(S11)*S12;

[V1,D1]=eig(M1);

[V2,D2]=eig(M2);

%归一化

gu1=V1'

*S11*V1;

gu1=1./sqrt(diag(gu1));

gu1=repmat(gu1'

p,1);

a=V1.*gu1;

gu2=V2'

*S22*V2;

gu2=1./sqrt(diag(gu2));

gu2=repmat(gu2'

q,1);

b=V2.*gu2;

d1=size(find(diag(D1)~=0),1);

%对特征值自动排序的,由大到小%d1=min(max(diag(D1),0),1);

d2=size(find(diag(D2)~=0),1);

dd=min(d1,d2);

Utwo=a(:

dd);

Vtwo=b(:

nmutatwo=sqrt(diag(D1));

%已经取过平方根了

nmutatwo=nmutatwo(1:

A1=Utwo;

B1=Vtwo;

U_replace=X*A1;

V_replace=Y*B1;

end

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 经管营销 > 金融投资

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1