Semi-Orthogonal Non-Negative Matrix Factorization