Learning With Matrix Factorizations