Non-negative matrix factorization algorithms