首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何利用MATLAB中的FastICA将数据投影到独立的组件上

如何利用MATLAB中的FastICA将数据投影到独立的组件上
EN

Stack Overflow用户
提问于 2015-08-25 19:58:38
回答 1查看 1.7K关注 0票数 1

我有个关于ICA的问题,也许有点基础,但我对它还不熟悉。我用的是FastICA MATLAB工具箱

我用它做:

代码语言:javascript
复制
[icasig] = fastica(train_data);

train_data大小为[192x23]的地方。

我所理解的是:icasig应该是独立的组件,所以我希望它的大小是23x23,维数,就像PCA输出一样。相反,尺寸是22x192,其中的尺寸减少到22。我不明白这代表什么。

所以,我的问题是:icasig是否代表这些集成电路?那么,如果是这样的话,如何使用它在集成电路上投影原始数据呢?

如果icasig表示原始数据在I上的投影,那么如何提取ICs本身以用于测试数据的另一个投影?

非常感谢你的帮助。

EN

回答 1

Stack Overflow用户

发布于 2015-09-01 15:08:10

完整的fastica.m输出是:

代码语言:javascript
复制
[icasig, A, W] = fastica(X); % outputs the estimated separating
matrix W and the corresponding mixing matrix A.

对于给定的数据矩阵X (假设X是d矩阵,即每一行都是一个观察),请考虑与[Y, A, W] = fastica(X).输出相对应的下列关系

解混Y = W*X % X is separated on independent 'sources' Y

W是一个and矩阵(k<=d),它将源或独立成分从X (d )的混合物中分离出来,并存储在Y (k )中。如果k小于d,则结果表示为降维。

混合X = A*Y % Y sources are combined through the mixing matrix A

A是一个d矩阵,它将k分量(k<=d)混合存储在矩阵Y中,即k(用于N个观测)。A存储从X中提取的独立分量,即d维向量、k数.此外,Y将X的源或投影存储在独立组件上。

fastica输出中检查以下范数的值(范数越小,独立分量分析算法的分离越准确):

代码语言:javascript
复制
norm(W*X - Y)
norm(X - A*Y)
norm(pinv(A) - W)
norm(pinv(W) - A)

关于OP问题的

  • icasig代表数据的来源或输入数据在train_data估计的集成电路上的投影。在这种情况下,发现了k个In,因此192个点由它们的k值表示。
  • in是由A列中的向量给出的。
  • icasig已经给出了IC上原始数据的投影。
  • 您可以使用分离矩阵W(接近W的伪逆),通过Xn通过Yn = W*Xn投影一组新的点。

示例:

代码语言:javascript
复制
% Generate data (N=1000) from distribution
X = gendata(1000);

% Estimate ICs and projections of X  
[Y, A, W] = fastica(X, 'approach', 'defl');    

% New points from the same distribution  
Xn = gendata(50);

% Project new point on ICA estimated independent components  
Yn = W*Xn;

(用自己的数据生成函数替换gendata。对于这幅图,我使用了双峰集,其中混合是2D中的旋转,来自J.Sh透镜,独立成分分析教程)

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32212968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档