推荐系统的冷启动问题:
人口统计学特征包括年龄、性别、工作、学历、居住地、国籍、民族等
评分预测问题:
每个用户都对一些电影给出了评分,比如用 户A给《虎口脱险》评了1分,给《唐山大兄》评了5分,给《少林足球》评了4分,给《大话西 游》评了5分。但是,每个用户都没有对所有电影评分,比如用户A没有给《变形金刚》和《黑 客帝国》评分。那么,当用户浏览网页并看到《变形金刚》和《黑客帝国》时,我们希望能够给 用户一个分数表明我们认为用户是否会喜欢这部电影,而这个分数也可以帮助用户决策是否要看 这部电影,而如何提高这个分数的预测精度就是评分预测要解决的主要问题。
1 .离线实验方法
评分预测问题基本都通过离线实验进行研究。在给定用户评分数据集后,研究人员会将数据 集按照一定的方式分成训练集和测试集,然后根据测试集建立用户兴趣模型来预测测试集中的用 户评分。对于测试集中的一对用户和物品(u, i),用户u对物品i的真实评分是 Rui ,而推荐算法预 测的用户u对物品i的评分为 Rˆui ,那么一般可以用均方根误差RMSE度量预测的精度
评分预测的目的就是找到好的模型小化测试集的RMSE。
关于如何划分训练集和测试集,如果是和时间无关的预测任务,可以以均匀分布随机划分数 据集,即对每个用户,随机选择一些评分记录作为训练集,剩下的记录作为测试集。如果是和时 间相关的任务,那么需要将用户的旧行为作为训练集,将用户的新行为作为测试集。Netflix通过 如下方式划分数据集,首先将每个用户的评分记录按照从早到晚进行排序,然后将用户后10% 的评分记录作为测试集,前90%的评分记录作为训练集。
2.评分预测算法
2.1 平均值
简单的评分预测算法是利用平均值预测用户对物品的评分的。下面将分别介绍各种不 同的平均值。
1. 全局平均值
在平均值里简单的是全局平均值。它的定义为训练集中所有评分记录的评分平均值:
2. 用户评分平均值
用户u的评分平均值 u r 定义为用户u在训练集中所有评分的平均值:
3. 物品评分平均值
物品i的评分平均值 i r 定义为物品i在训练集中接受的所有评分的平均值:
4. 用户分类对物品分类的平均值
假设有两个分类函数,一个是用户分类函数 ,一个是物品分类函数 。 一个定义了用户u 所属的类, 另一个定义了物品i所属的类。那么,我们可以利用训练集中同类用户对同类物品评分 的平均值预测用户对物品的评分。
在用户评分数据上还可以定义很多不同的分类函数。
用户和物品的平均分
对于一个用户,可以计算他的评分平均分。然后将所有用户按照 评分平均分从小到大排序,并将用户按照平均分平均分成N类。物品也可以用同样的方式 分类。
用户活跃度和物品流行度
对于一个用户,将他评分的物品数量定义为他的活跃度。得 到用户活跃度之后,可以将用户通过活跃度从小到大排序,然后平均分为N类。物品的流 行度定义为给物品评分的用户数目,物品也可以按照流行度均匀分成N类。
2.2 基于邻域的方法
基于用户的邻域算法和基于物品的邻域算法都可以应用到评分预测中。基于用户的邻域算法 认为预测一个用户对一个物品的评分,需要参考和这个用户兴趣相似的用户对该物品的评分。
基于物品的邻域算法在预测用户u对物品i的评分时,会参考用户u对和物品i相似的其他物品 的评分。
对于如何计算物品的相似度
第一种是普通的余弦相似度(cosine similarity):
第二种是皮尔逊系数(pearson correlation):
第三种被Sarwar称为修正的余弦相似度(adjust cosine similarity):
2.3 隐语义模型与矩阵分解模型
在推荐系统领域,提的多的就是潜 语义模型和矩阵分解模型。其实,这两个名词说的是一回事,就是如何通过降维的方法将评分矩 阵补全。
推荐系统系列之隐语义模型
用户的评分行为可以表示成一个评分矩阵R,其中R[u][i]就是用户u对物品i的评分。但是,用 户不会对所有的物品评分,所以这个矩阵里有很多元素都是空的,这些空的元素称为缺失值 (missing value)。因此,评分预测从某种意义上说就是填空,如果一个用户对一个物品没有评过 分,那么推荐系统就要预测这个用户是否是否会对这个物品评分以及会评几分。
1. 传统的SVD分解
2.奇异值分解(SVD)的原理、演算和应用
对于如何补全一个矩阵,历史上有过很多的研究。一个空的矩阵有很多种补全方法,而我们 要找的是一种对矩阵扰动小的补全方法。那么什么才算是对矩阵扰动小呢?一般认为,如果 补全后矩阵的特征值和补全之前矩阵的特征值相差不大,就算是扰动比较小。所以,早的矩阵 分解模型就是从数学上的SVD(奇异值分解)开始的。②给定m个用户和n个物品,和用户对物品的评分矩阵 R属于R的m乘n 。首先需要对评分矩阵中的缺失值进行简单地补全,比如用全局平均值,或 者用户/物品平均值补全,得到补全后的矩阵R'。接着,可以用SVD分解将R'分解
SVD分解是早期推荐系统研究常用的矩阵分解方法,不过该方法具有以下缺点,因此很难在 实际系统中应用。
该方法首先需要用一个简单的方法补全稀疏评分矩阵。一般来说,推荐系统中的评分矩 阵是非常稀疏的,一般都有95%以上的元素是缺失的。而一旦补全,评分矩阵就会变成一 个稠密矩阵,从而使评分矩阵的存储需要非常大的空间,这种空间的需求在实际系统中 是不可能接受的。
该方法依赖的SVD分解方法的计算复杂度很高,特别是在稠密的大规模矩阵上更是非常 慢。一般来说,这里的SVD分解用于1000维以上的矩阵就已经非常慢了,而实际系统动 辄是上千万的用户和几百万的物品,所以这一方法无法使用。如果仔细研究关于这一方 法的论文可以发现,实验都是在几百个用户、几百个物品的数据集上进行的。