我有个关于ICA的问题,也许有点基础,但我对它还不熟悉。我用的是FastICA MATLAB工具箱
我用它做:
[icasig] = fastica(train_data);train_data大小为[192x23]的地方。
我所理解的是:icasig应该是独立的组件,所以我希望它的大小是23x23,维数,就像PCA输出一样。相反,尺寸是22x192,其中的尺寸减少到22。我不明白这代表什么。
所以,我的问题是:icasig是否代表这些集成电路?那么,如果是这样的话,如何使用它在集成电路上投影原始数据呢?
如果icasig表示原始数据在I上的投影,那么如何提取ICs本身以用于测试数据的另一个投影?
非常感谢你的帮助。
发布于 2015-09-01 15:08:10
完整的fastica.m输出是:
[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输出中检查以下范数的值(范数越小,独立分量分析算法的分离越准确):
norm(W*X - Y)
norm(X - A*Y)
norm(pinv(A) - W)
norm(pinv(W) - A)关于OP问题的:
icasig代表数据的来源或输入数据在train_data估计的集成电路上的投影。在这种情况下,发现了k个In,因此192个点由它们的k值表示。icasig已经给出了IC上原始数据的投影。Xn通过Yn = W*Xn投影一组新的点。示例:
% 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透镜,独立成分分析教程)
https://stackoverflow.com/questions/32212968
复制相似问题