在我见过的所有依赖矩阵分解的现代推荐系统中,对用户电影矩阵执行非负矩阵分解。我可以理解为什么非消极性对于可解释性和/或如果您想要稀疏因素很重要。但是,如果您只关心预测性能,例如在 netflix 大奖赛中,为什么要施加非负性限制呢?这似乎比在分解中也允许负值更糟糕。
本文是在协同过滤中使用非负矩阵分解的一个被高度引用的例子。
在我见过的所有依赖矩阵分解的现代推荐系统中,对用户电影矩阵执行非负矩阵分解。我可以理解为什么非消极性对于可解释性和/或如果您想要稀疏因素很重要。但是,如果您只关心预测性能,例如在 netflix 大奖赛中,为什么要施加非负性限制呢?这似乎比在分解中也允许负值更糟糕。
本文是在协同过滤中使用非负矩阵分解的一个被高度引用的例子。
我不是推荐系统方面的专家,但据我了解,这个问题的前提是错误的。
非否定性对于协同过滤并不那么重要。
BellKor 团队于 2009 年获得了Netflix 奖。这是描述他们算法的论文:The BellKor 2008 Solution to the Netflix Prize。很容易看出,他们使用基于 SVD 的方法:
KDD 2008 论文 [4] 中列出了我们在 2008 年取得进展的基础。[...] 在论文 [4] 中,我们详细描述了三个因子模型。第一个是简单的 SVD [...] 第二个模型 [...] 我们将此模型称为“非对称 SVD”。最后,更准确的因子模型,被命名为“SVD++” [...]
另请参阅同一团队的这篇更流行的文章 推荐系统的矩阵分解技术。他们谈论了很多关于 SVD,但根本没有提到 NNMF。
另请参阅这篇受欢迎的博客文章Netflix 更新:从 2006 年开始在家里尝试这个,也解释了 SVD 的想法。
当然你是对的,还有一些关于使用 NNMF 进行协同过滤的工作。那么什么更有效,SVD 或 NNMF?我不知道,但这是2012 年协作过滤算法比较研究的结论:
基于矩阵分解的方法通常具有最高的准确度。具体来说,正则化 SVD、PMF 及其变体在 MAE 和 RMSE 方面表现最好,除了在非常稀疏的情况下,NMF 表现最好。