Learning dual preferences with non-negative matrix tri-factorization for top-n recommender system