Learning Low-Dimensional Models For Heterogeneous Data