Non-negative Matrix Factorization

add support for Non-negative Matrix Factorization
This is my first time to be involved in an open source project, if my code has any problem or can be extended or can be improved, please feel free to contact me.