推荐系统
协同过滤推荐
主要思想
- 利用已有用户群过去的行为或意见预测当前用户最可能喜欢哪些东西或对哪些东西感兴趣。
存粹的协同过滤方法的输入数据只有给定的用户-物品评分矩阵,输出数据一般有以下几种类型
- 表示当前用户对物品喜欢或不喜欢程度的预测数值
- n项推荐物品的列表,当然这个top-N列表不会包含当前用户已经购买过的物品
基于用户的最近邻推荐
主要思想
- 首先,给定一个评分数据集和当前用户的ID作为输入,找出与当前用户过去有相似偏好的其他用户,这些用户有时也被称为对等用户或最近邻;
- 然后,对当前用户没有见过的每个产品P,利用其最近邻对P的评分计算预测值。
- 这种方法的潜在假设是:
- 如果用户过去有相似的偏好,那么他们未来也会有相似的偏好
- 用户偏好不会随时间而变化
几种计算用户之间的相似度的方法
Pearson相关系数衡量用户间的相似度
$$
sim(a,b)=\frac{\sum_{p \epsilon P}^{}{(r_{a,p}-r_a)(r_{b,p}-r_b)}}{\sqrt{\sum_{p \epsilon P}^{}{(r_{a,p}-r_a)}^2\sum_{p \epsilon P}^{}{(r_{b,p}-r_b)}^2}}
$$$$
pred(a,p)=r_a+ \frac{\sum_{b \epsilon N}^{}{sim(a,b)*(r_{b,p}-r_b)}}{\sum_{b \epsilon N}^{}{sim(a,b)}}
$$
改进余弦相似度
Spearman秩相关稀疏
均方差
对于基于用户的推荐系统来说,Pearson相关系数比其他对比用户的方法更胜一筹,不过,对于后来发现的基于物品的推荐技术,余弦相似度方法比Pearson相关度量表现更好
为了降低对广受欢迎物品有相同看法的相对重要性,我们对物品的评分进行变换,通过方差权重因子解决该问题。该方法提高了具有高方差评分值物品,也就是指有争议得物品的作用。
k值(近邻规模)的选择不会影响可预测物品的覆盖率,但是
- 当近邻个数k太高,会给预测带来额外的噪声
- 当k太小,预测质量也可能受到负面影响
- 在大多数情况下,20-50个近邻似乎比较合理
基于物品的最近邻推荐
当需要扫描大量潜在近邻时,基于用户的最近邻推荐很难做到实时计算预测值。因此,大型电子商务网站经常采用一种不同的技术:基于物品的最近邻推荐。这种推荐非常适合做线下预处理,因此在频分矩阵非常大的情况下也能做到实时计算推荐。
主要思想
- 利用物品间相似度,而不是用户间相似度来计算预测值。
在基于物品的推荐方法中,余弦相似度由于效果精确,已经被证实是一种标准的度量体系
$$
sim(a,b)=\frac{\vec{a}.\vec{b}}{|\vec{a}|*|\vec{b}|}
$$
考虑用户评分平均值之间的差异,我们使用改进余弦方法(取值在-1到1之间)
$$
sim(a,b)=\frac{\sum_{u \epsilon U}^{}{(r_{u,a}-r_u)(r_{u,b}-r_u)}}{\sqrt{\sum_{u \epsilon U}^{}{(r_{u,a}-r_u)}^2\sum_{u \epsilon U}^{}{(r_{u,b}-r_u)}^2}}
$$
$$
pred(u,p)=\frac{\sum_{i \epsilon ratedItems(u)}^{}{sim(i,p)*r_{u,i}}}{\sum_{i \epsilon ratedItems(u)}^{}{sim(i,p)}}
$$
关于评分
显式评分即为直接收集用户对物品的评分,通常情况下使用的是五分制或七分制的Likert反馈量表。显式评分的主要问题在于需要推荐系统的用户额外付出,而用户很可能由于看不到好处而不愿意提供这些评分。因此,可用的评分会很少,从而导致推荐质量不高。
隐式评分即为系统跟踪用户行为,从而收集隐式评分,也不需要用户额外的付出,但还是难以确定用户行为是否被正确解释。
数据稀疏和冷启动问题
在实际应用中,由于用户一般只会评价(或购买)少部分物品,评分矩阵一般都非常稀疏。
冷启动问题是稀疏问题的一个特例,此类问题包括
- 如何向还没给任何物品评分的新用户推荐
- 如何处理从未被评过分或购买过的物品
这两类问题都可以通过混合方法来解决,即利用额外的外部信息
更多基于模型和预处理的方法
协同推荐技术一般分为两类
- 基于记忆的
- 传统的基于用户技术是基于记忆的,这是因为原始的评分数据保存在内存中,直接生成推荐结果
- 基于模型的
- 基于物品的过滤和某些降维技术,运行前首先会离线处理原始数据,运行时,只需要预计算或“学习过”的模型就能进行预测