cca中的特征值

cca中的特征值,第1张

典型相关(CCA)手册1.典型相关分析(CCA)介绍典型相关分析(CCA)是研究两组多维变量之间的线性关系的一种统计方法。它寻找两个线性组合,使得两组多维变量通过此线性组合后,其相关最大。CCA可以定义为如下问题:有两组多维变量和。分别寻找向量和,使得和在向量和上的投影和之间的相关值最大。也就是使得下式中的最大:约束条件为.典型相关分析是主成分分析和因子分析的进一步发展, 是研究两组变量间的相互依赖关系, 把两组变量之间的相互关系变为研究两个新的变量之间的相关, 而且又不抛弃原来变量的塌桥漏信息, 这两个新的变量分别由第一组变量和第二组变量的线性组合构成, 并且两组变量的个数可以是不同的, 两组变量所代表的内容也可以是不同的。因此, 典型相关分析在实际问题中应用是十分广泛的。典型性相关分析与简单相关分析相比团烂, 简单相关分析有时可能受某些因素的影响, 反映的是表面的而非本质的联系, 甚至有时是假象。所以, 典型性相关分析在相关分析中有其独特的作用。CCA在数据统计和信息挖掘方面有广泛应用[1-2]。CCA的介绍可以参阅basic文件夹中的文献。2. CCA计算步骤通过拉格朗日方法,构建如下拉格朗日算子:通过对Wx和Wy的求导可消告以得到:(1)(2)等式一两边乘以Wx,等式2两边乘以Wy,通过约束条件,可以解得.继续求解可以得到:其中X的自相关矩阵Cxx,Y的自相关矩阵Cyy,以及X和Y的互相关矩阵Cxy。至此,CCA问题求解可以转化为如下特征值分解问题,可以通过特征值分解取得Wx和Wy。3. CCA方法matlab实现在matlab中函数canoncorr 被用于实现CCA分析。该函数的表达形式为:[A,B,r,U,V] = canoncorr(X,Y)输入X,Y 为待分析的两组数据。它们具有相同的长度(行),但是特征维数(列)可以不同。令X的特征维数为m,Y的特征维数为n。

输出: r为一组相关值,其长度为min(m,n). A大小为m×min(m,n),其每一列为一组与X对应的权重系数。B大小为n×min(m,n),其每一列为一组与Y对应的权重系数。U和V为典型变量。U的每一列为数据X加权后的结果。V的每一列为数据Y加权后的结果。4.VC实现目前CCA方法的VC实现采用Matcom工具。MATCOM是MathWorks公司开发的为MATLAB中的M文件进行高效解释和调试的集成开发环境。Matcom可以把M文件编译成C++代码。因此使用十分方便。Matcom提供一种矩阵类Mm,该矩阵类封装了许多矩阵的基本 *** 作,使用十分方便。Code文件夹中,包含了原始M文件,和编译后的.CPP,.H文件,以及使用所需的库文件。并附带一个使用例子程序。5 仿真分析%% 产生矩阵X,Y,0-s5为一系列源信号。N=100s0=4*cos(2*pi*(0:N-1)*0.05)'s1=randn(100,1)s2=randn(100,1)s3=s0+randn(100,1)s4=randn(100,1)s5=randn(100,1)S=[s0,s1,s2,s3,s4,s5]% X,Y为源信号通过不同的线性组合C1,C2而得到的观测信号C1=randn(size(S,2),3)C2=randn(size(S,2),2)X=S*C1Y=S*C2% X,Y都由相同的源信号通过线性组合而成,因此他们之间在某些坐标系下是十分相关的。[A,B,r,U,V] = canoncorr(X,Y)% 通过典型相关分析,可以分别求得权重A,B.使得U,V之间的相关最大。figurefor ii=1:3subplot(3,3,(ii-1)*3+1)plot(X(:,ii))endfor ii=1:2subplot(3,3,(ii-1)*3+1+1)plot(Y(:,ii))

endfor ii=1:size(U,2)subplot(3,3,(ii-1)*3+3)plot(U(:,ii))end6. CCA方法在脑电处理中的应用Application文件夹中有两篇论文,分别介绍了CCA方法在脑电处理中的两种应用。第一篇为CCA方法在SSVEP-based BCI中的应用。第二篇为CCA方法被用于EEG成分分离。具体应用方法请参阅文献。7. CCA方法扩展1. Kernel Canonical Correlation Analysis(kCCA) [],[]为了提取两组变量之间的非线性关系,kCCA被提出来,该方法和SVM类似,具体算法和应用请才考文献。kCCA文件夹中有关于kCCA的介绍。2. Generalized canonical correlations analysis(CANCOR)为了解决超过两组变量之间的相关问题,提出了CANCOR方法。具体参阅文件夹CANCOR中的文献.参考文献[1] M. Borga, O. Friman, P. Lundberg, and H. Knutsson. A canonical correlation approach to exploratory data analysis in fMRI. In Proceedings of the ISMRM Annual Meeting, Honolulu, Hawaii, May 2002.[2] M. Borga and H. Knutsson. A canonical correlation approach to blind source separation. Tech-nical Report LiU-IMT-EX-0062, Department of Biomedical Engineering, Linkping Univer-sity, 2001.

5.9

百度文库VIP限时优惠现在开通,立享6亿+VIP内容

立即获取

CCA导读

典型相关(CCA)手册

1.典型相关分析(CCA)介绍

典型相关分析(CCA)是研究两组多维变量之间的线性关系的一种统计方法。它寻找两个线性组合,使得两组多维变量通过此线性组合后,其相关最大。CCA可以定义为如下问题:有两组多维变量和。分别寻找向量和,使得和在向量和上的投影和之间的相关值最大。也就是使得下式中的最大:

约束条件为.

第 1 页

典型相关分析是主成分分析和因子分析的进一步发展, 是研究两组变量间的相互依赖关系, 把两组变量之间的相互关系变为研究两个新的变量之间的相关, 而且又不抛弃原来变量的信息, 这两个新的变量分别由第一组变量和第二组变量的线性组合构成, 并且两组变量的个数可以是不同的, 两组变量所代表的内容也可以是不同的。因此, 典型相关分析在实际问题中应用是十分广泛的。典型性相关分析与简单相关分析相比, 简单相关分析有时可能受某些因素的影响, 反映的是表面的而非本质的联系, 甚至有时是假象。所以, 典型性相关分析在相关分析中有其独特的作用。CCA在数据统计和信息挖掘方面有广泛应用[1-2]。CCA的介绍可以参阅basic文件夹中的文献。

第 2 页

2. CCA计算步骤

通过拉格朗日方法,构建如下拉格朗日算子:

通过对Wx和Wy的求导可以得到:

(1)

(2)

等式一两边乘以Wx,等式2两边乘以Wy,通过约束条件,可以解得.继续求解可以得到:

其中X的自相关矩阵Cxx,Y的自相关矩阵Cyy,以及X和Y的互相关矩阵Cxy。

第 3 页

至此,CCA问题求解可以转化为如下特征值分解问题,可以通过特征值分解取得Wx和Wy。

3. CCA方法matlab实现

在matlab中函数canoncorr 被用于实现CCA分析。该函数的表达形式为:

[A,B,r,U,V] = canoncorr(X,Y)

输入X,Y 为待分析的两组数据。它们具有相同的长度(行),但是特征维数(列)可以不同。令X的特征维数为m,Y的特征维数为n。

输出: r为一组相关值,其长度为min(m,n). A大小为m×min(m,n),其每一列为一组与X对应的权重系数。B大小为n×min(m,n),其每一列为一组与Y对应的权重系数。U和V为典型变量。U的每一列为数据X加权后的结果。V的每一列为数据Y加权后的结果。

FastICA算法的基本步骤:

1. 对观测辩唯数据进行中心化,使它的均值为0;

2. 对数据进游嫌行白化,。

3. 选择需要估计的分量的个数,设迭代次数

4. 选择一个初始权矢量(随机的)。

5. 令,非线性函数的选取见前文。

6. 。

7. 令。

8. 假如不收敛的话,返回第5步。

9.令,如果,返回第4步。

二.MATLAB源程序及说明:

%下程序为ICA的调用函数,输入为观察的信号,输出为解混后的信号

function Z=ICA(X)

%-----------去均值---------

[M,T] = size(X)%获取输入矩阵的行/列数,行数为观测数据的数目,列数为采样点数

average= mean(X')' %均值

for i=1:M

X(i,:)=X(i,:)-average(i)*ones(1,T)

end

%---------白化/球化------

Cx = cov(X',1) %计算协方差矩阵Cx

[eigvector,eigvalue] = eig(Cx)%计算Cx的特征值和特征向量

W=eigvalue^(-1/2)*eigvector' %白化矩阵

Z=W*X %正交矩阵

%----------迭代-------

Maxcount=10000 %最大迭代次数

Critical=0.00001 %判断是神灶手否收敛

m=M %需要估计的分量的个数

W=rand(m)

for n=1:m

WP=W(:,n) %初始权矢量(任意)

% Y=WP'*Z

% G=Y.^3%G为非线性函数,可取y^3等

% GG=3*Y.^2 %G的导数

count=0

LastWP=zeros(m,1)

W(:,n)=W(:,n)/norm(W(:,n))

while abs(WP-LastWP)&abs(WP+LastWP)>Critical

count=count+1 %迭代次数

LastWP=WP %上次迭代的值

% WP=1/T*Z*((LastWP'*Z).^3)'-3*LastWP

for i=1:m

WP(i)=mean(Z(i,:).*(tanh((LastWP)'*Z)))-(mean(1-(tanh((LastWP))'*Z).^2)).*LastWP(i)

end

WPP=zeros(m,1)

for j=1:n-1

WPP=WPP+(WP'*W(:,j))*W(:,j)

end

WP=WP-WPP

WP=WP/(norm(WP))

if count==Maxcount

fprintf('未找到相应的信号)

return

end

end

W(:,n)=WP

end

Z=W'*Z

%以下为主程序,主要为原始信号的产生,观察信号和解混信号的作图

clear allclc

N=200n=1:N%N为采样点数

s1=2*sin(0.02*pi*n)%正弦信号

t=1:Ns2=2*square(100*t,50)%方波信号

a=linspace(1,-1,25)s3=2*[a,a,a,a,a,a,a,a]%锯齿信号

s4=rand(1,N)%随机噪声

S=[s1s2s3s4]%信号组成4*N

A=rand(4,4)

X=A*S%观察信号

%源信号波形图

figure(1)subplot(4,1,1)plot(s1)axis([0 N -5,5])title('源信号')

subplot(4,1,2)plot(s2)axis([0 N -5,5])

subplot(4,1,3)plot(s3)axis([0 N -5,5])

subplot(4,1,4)plot(s4)xlabel('Time/ms')

%观察信号(混合信号)波形图

figure(2)subplot(4,1,1)plot(X(1,:))title('观察信号(混合信号)')

subplot(4,1,2)plot(X(2,:))

subplot(4,1,3)plot(X(3,:))subplot(4,1,4)plot(X(4,:))

Z=ICA(X)

figure(3)subplot(4,1,1)plot(Z(1,:))title('解混后的信号')

subplot(4,1,2)plot(Z(2,:))

subplot(4,1,3)plot(Z(3,:))

subplot(4,1,4)plot(Z(4,:))xlabel('Time/ms')


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12402019.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存