My problem is essentially a 'blind source separation' problem. I have 3 non-orthogonal sources (or basis functions) and $N$ random linear combinations (mixes) of said sources. My problem is to obtain the sources from the mixes.
Figure A shows the sources, B shows the mixes.
Approaches taken:
- $\textbf{PCA}$ - I tried PCA on the mixes (fig.C), but the issue is that PCA will only give orthogonal bases, while my sources/bases are non-orthogonal. This issue with PCA is shown in figure D, where the data is clearly described by 2 non-orthogonal basis, but PCA (the solid lines) cant reconstruct them!
- $\textbf{Factor Rotation}$ - I tried applying some solutions form Factor Analysis (not my forte). The promax rotation (matlab:
nw = rotatefactors(cov,'method','promax')
) is shown in fig. D with the dashed lines. As far as I can tell, factor rotation works with the principal components, not the original matrix and thus I have no idea how it could reconstruct the right basis. I think this only works with factor matrices, not with generic ones... - $\textbf{ICA}$ - I tried overdetermined ICA with the fastICA algorithm (also not my forte, but I think I understand it better). I was hoping this would work since independent components (ICs) are non orthogonal. The solution is shown in fig.E. While the ICs are indeed nonorthogonal, they are NOT my original sources :-(
Any other potential tips or leads or solutions would be greatly appreciated.
More mathematical Detail
The 3 source signals are themselves linear combos of the 5 laguerre basis functions. Thus, the problem can be formulated as such:
- I take
l=5
laguerre basis functions of lengthm=30
to getB
, an[l,m]
matrix - I randomly mix then is my
x=3
sources,S: S=B*M1
, whereM1
is a random[l,x]=[5,3]
mixing matrix.S
is displayed in fig.A - I mix S
n=100
times to get my mixed signals,K
(fig.B), whereK=S*M2
, a[x,n]=[3,100]
randomly generated mixing matrix. - I have the original basis,
L
, & the mixed matrix,K
.K=S*M2=B*M1*M2
. My goal is to recoverS
.
NOTE: I understand that this may seem impossible since there are many possible S
's to choose from (ie the factorizatio S*M2=B*M1*M2
is not unique), however, the true S
, will dramatically decrease model complexity by having only x=3
rather than l=5
basis functions which can exactly reproduce all the kernels.
Thanks!