in reply to decomposing binary matrices
I was initially going to suggest principal components analysis as a solution, since the example decomposition you presented appears to be a clustering problem. I would then have pointed you to PDL and PDL::PCA. However, after reading some of the other comments my poor old neuron suspects that there is something more afoot that may invalidate PCA for the general case.
In Section
Seekers of Perl Wisdom