ICA update
Apr. 9th, 2007 01:40 pmTurns out that my implementation of step 5 from JMLR06 was wrong. The purpose of step 5 is to better visualize the graph. So in particular, the swaps need to be simultaneous row- and column-swaps.
The output of step 4, B-hat, already has all the information we want. So far, B-hat had always been lower-triangular. But that's because I've been feeding the variables to ICA in the order in which they were generated. When I feed them in a different order, B-hat is no longer lower-triangular, and swaps are necessary to make it so.
Since the W matrix (i.e. A^-1) has all zeros in the upper-right triangle, there is a unique row-permutation such that all the diagonal entries are non-zero. (We don't need to care about column-permutations, because we would get an equivalent answer... this is afterall the marriage problem, which is why we use the Hungarian algorithm)
There is a unique W row-swap which are non-zero.
The output of step 4, B-hat, already has all the information we want. So far, B-hat had always been lower-triangular. But that's because I've been feeding the variables to ICA in the order in which they were generated. When I feed them in a different order, B-hat is no longer lower-triangular, and swaps are necessary to make it so.
Since the W matrix (i.e. A^-1) has all zeros in the upper-right triangle, there is a unique row-permutation such that all the diagonal entries are non-zero. (We don't need to care about column-permutations, because we would get an equivalent answer... this is afterall the marriage problem, which is why we use the Hungarian algorithm)
There is a unique W row-swap which are non-zero.