由于使用协同过滤,单纯考虑user或item之间的正反馈交互以及相似度量,这不能很好的利用全局信息,如果两个用户没有相同的历史行为,或者两个物品没有相同的用户购买,那么对于这两个物品或者用户来说,它们之间的相似度为0,这就会导致使用协同过滤不具备泛化利用全局信息的能力。
而隐向量的生成过程其实是对共享矩阵进行全局拟合的过程,因此隐向量其实是利用全局信息生成的。
矩阵分解的优点:
- 泛化能力强:在一定程度上解决了矩阵稀疏的问题
- 空间复杂度低:使用协同过滤进行推荐,需要维护用户和物品的相似度矩阵,而使用隐向量只需要存储物品和用户的隐向量矩阵即可,这就使得空间复杂度从 n 2 n^2n2 降低到 k ( m + n ) k(m+n)k(m+n)
- 更好的扩展性和灵活性:矩阵分解的最终产出是用户和物品的隐向量矩阵,这其实与深度学习中的Embedding思想不谋而合,因此矩阵分解的结果也非常便于与其它特征进行组合和拼接,并便于与深度学习网络进行无缝结合
局限性:
- 矩阵分解只能够使用共现矩阵,不能将用户、物品和上下文特征考虑在内进行建模,这将丧失很多信息