Clustering for Multi-Dimensional Heterogeneity