I have a set of data, each instance in the real $[0,1]^{d}$. However, it's actually all in a relatively small range around 0.5, clustered into classes in even smaller ranges. The actual origin of the data is the output of an untrained neural network, but don't worry about that.

The distribution is correlated between variables in an unknown but not ridiculously ill-conditioned way, and I have no guarantee that the intra-cluster distance is dramatically smaller than the inter-cluster distance (it may be of the same order of magnitude).

I would like a method for embedding into d-dimensional Hamming Space that:

1) Preserves clusters as best as possible

2) Maximizes inter-cluster distance

3) Maintains relative inter-cluster distances

4) Minimizes intra-cluster distance

In that order.

The obvious solution is some sort of machine learning method, but since i'm actually trying to apply this to improve a different machine learning method, I want a method that's rather quick and simple instead. What I was doing was just rounding, but that failed #2 spectacularly. Rounding based on centroids or mediods of the data instead would be a little more sophisticated, but still wouldn't do a great job of #2, #3, and sometimes #1.