The existing collaborative filtering algorithm mostly uses a memory-based collaborative filtering algorithm, which adopts the idea that " birds of a feather flock together " and makes scientific recommendations for users. However, with the advent of the era of big data, the number of users and projects has increased dramatically, which makes the scoring matrix very sparse, which affects the accuracy of recommendations. Aiming at this problem, this paper proposes a collaborative filtering algorithm based on non-negative matrix factorization. The algorithm uses the NNDSVD initialization method to decompose the sparse scoring matrix into two low-dimensional non-negative user matrices and project matrices, and learns the potential factors of the scoring matrix by fusing the cost function of Frobenius norm and KL divergence. The final two matrices The product of the product is used as a predictive matrix to perform predictive scoring. Experimental studies on data sets show that the proposed method is highly accurate, less affected by sparsity and strong in stability.