基于矩阵分解的推荐算法,简单入门
一,基于矩阵分解的推荐算法相关理论介绍
基本思想
正如其名称所暗示的那样,矩阵分解显然是对矩阵进行分解,即找出两个(或更多)矩阵,这样当你将它们相乘时,你将得到原始矩阵。
推荐系统中的经典问题:评分预测(实际应用中,评分数据很难搜集到,属于典型的精英问题),与之相对的问题是行为预测。鉴于每个用户已对系统中的某些项目进行评级,我们希望通过这些已知的数据预测用户尚未评级的项目,以便我们可以向用户提出建议。怎么预测这些评分呢,协同过滤(Collaborative Filtering)算法是最经典的方法。而协同过滤算法进一步划分又可分为三种。第一种是基于用户(user-based)的协同过滤,第二种是基于项目(item-based)的协同过滤,第三种是基于模型(model based)的协同过滤。
基本矩阵分解(basic MF):
将评分矩阵R分解为用户矩阵U和项目矩阵S, 通过不断的迭代训练使得U和S的乘积越来越接近真实矩阵,矩阵分解过程如图:
数学理论基础
矩阵分解算法的数学理论基础是矩阵的行列变换。在《线性代数》中,我们知道矩阵A进行行变换相当于A左乘一个矩阵,矩阵A进行列变换等价于矩阵A右乘一个矩阵,因此矩阵A可以表示为A=PEQ=PQ(E是标准阵)。
接下来我们对这个矩阵分解过程做具体分析:
现在假设现在我们有5个用户和10个项目,并且评级是从1到5的整数,矩阵可能看起来像下图1所示
矩阵中,描述了5个用户(U1,U2,U3,U4 ,U5)对4个物品(D1,D2,D3,D4)的评分(1-5分),- 表示没有评分,现在目的是把没有评分的 给预测出来,然后按预测的分数高低,给用户进行推荐。
如何预测缺失的评分呢?对于缺失的评分,可以转化为基于机器学习的回归问题,也就是连续值的预测,对于矩阵分解有如下式子,R是类似图1的评分矩阵