Learning and Exploiting Low-Dimensional Structure in High-Dimensional Data