推荐系统之:矩阵分解模型(Matrix Factorization,MF)
1. 前言
推荐系统中最为主流与经典的技术之一是协同过滤技术(Collaborative Filtering),它是基于这样的假设:用户如果在过去对某些项目产生过兴趣,那么将来他很可能依然对其保持热忱。
其中协同过滤技术又可根据是否采用了机器学习思想建模的不同划分为基于内存的协同过滤(Memory-based CF)与基于模型的协同过滤技术(Model-based CF)。其中基于模型的协同过滤技术中尤为 矩阵分解(Matrix Factorization) 技术最为普遍和流行,因为它的可扩展性极好并且易于实现,下面将梳理下推荐系统中出现过的经典的矩阵分解方法。
对于推荐系统来说存在两大场景即 评分预测(rating prediction) 与 Top-N推荐(item recommendation,item ranking) 。评分预测场景主要 用于评价网站 ,比如用户给自己看过的电影评多少分(MovieLens),或者用户给自己看过的书籍评价多少分(Douban)。其中矩阵分解技术主要应用于该场景。Top-N推荐场景主要用于购物网站或者一般拿不到显式评分信息的网站,即 通过用户的隐式反馈信息 来给用户 推荐一个可能感兴趣的列表 以供其参考。其中Top-N推荐场景为排序任务,因此需要排序模型来对其建模。这里则侧重于评分预测方面。
对于评分预测任务来说,我们通常将用户和项目(以电影为例)表示为二维矩阵的形式,其中矩阵中的某个元素表示对应用户对于相应项目的评分,1-5分表示喜欢的程度逐渐增加,?表示没有过评分记录。推荐系统评分预测任务可看做是一个矩阵补全(Matrix Completion)的任务,即基于矩阵中已有的数据(observed data)来填补矩阵中没有产生过记录的元素(unobserved data)。值得注意的是,这个矩阵是非常稀疏的(Sparse),稀疏度一般能达到90%以上,因此如何根据极少的观测数据来较准确的预测未观测数据一直以来都是推荐系统领域的关键问题。
其中,推荐系统的评分预测场景可看做是一个矩阵补全的游戏,矩阵补全是推荐系统的任务,矩阵分解是其达到目的的手段。因此,矩阵分解是为了更好的完成矩阵补全任务。之所以可以利用矩阵分解来完成矩阵补全的操作,那是因为基于这样的假设:假设UI矩阵(User-Iterm)是低秩的,即在大千世界中,总会存在相似的人或物,即物以类聚,人以群分,然后我们可以利用两个小矩阵相乘来还原它。