最近大概复习了一下这本书,了解了较早的推荐系统的一些方法,记录如下,以便大家对本书内容有个快速地了解。略去了第一张,详细的代码和细节可以参考其他博客。需要关注的地方直接标出了页码。
书里面的代码不是很完整,用来学习还可以。第八章介绍了一些svd等机器学习的算法,在2020年的今天可以回顾一下。
推荐系统实践
第二章:利用用户行为数据
常见数据集:
Book-Crossing(有评分、年龄、书籍的简介等) ,Last.fm , Netflix Prize ,Delicious(有标签) ,CiteULike(有标签),Digg, Yahoo!Music, GroupLens, KDD cup.
基于用户的cf:可以先构造倒排表,然后再计算用户相似度,这样能降低计算开销(p47)。User-IIF算法的表现更好。
基于物品的cf:解释性强。IUF算法(1998)降低了活跃用户对物品相似性的影响,归一化的物品cf能提高推荐的多样性。
两种cf的比较:usercf更加类似社会网络推荐,itemcf更加偏重挖掘某个用户的爱好。Itemcf在覆盖率方面不如usercf,可以通过p63的方法改进。
隐语义模型:借鉴文本挖掘领域的知识,包括LDA\pLSA\矩阵分解等。书中介绍了LFM,推导和伪代码已经给出。这个方法能极大地提高覆盖率,在Netflix Prize比赛中也使用了LFM,第八章进行了详细介绍。这个方法对冷启动问题效果不好,需要每天重新训练计算,雅虎提出了改进(p71)。
基于图算法的模型:效果不好,计算慢,大致的思想就是随机游走,但是代码没看懂;可以用矩阵论的方法优化(p77)。
第三章:冷启动
利用用户基本信息解决冷启动:给不同年龄段、职业的人推荐不同的内容,区分的越细,效果越好(p85)。
利用用户对某些物品的评价解决冷启动:p87,选择具有较高区分度的物品暴露给用户,根据用户的反馈判断出用户的主要兴趣点,用户评分的方差越小,说明这个物品的区分度较大,88页列举的变形金刚的例子可以帮助理解。
利用物品内容信息:评论标题等文本信息转化成向量,进行相似度计算。利用lda模型计算一个物品在不同主题上的得分,使用kl散度进行计算。Lda模型是一个迭代的主题估算模型,可以计算一篇文档在不同主题(如恐怖文章,学术文章)上的分布。
专家信息:类似于上一种方法,使用人工构造特征向量。
第四章:利用标签数据
用标签将物品、用户联系起来。本章介绍了推荐多样性、新颖性、覆盖率的计算,见p105。接下来仿照TF-IDF对简单的标签推荐算法进行了改进,提出了新的解决标签稀疏的问题。基于图的标签算法也做了介绍。基于标签可以进行推荐系统的可解释研究。如何给用户推荐一些潜在标签在p115~116做了介绍。
第五章:利用上下文信息
基于上下文的推荐考虑了用户的位置、心情、工作环境等信息。用户近期的行为偏好更加重要。物品也是有时效性的(新闻、热播电视剧)。推荐系统应该具有实时性和时间上的多样性(能立即作出反馈、不同时间段的推荐结果不同)。基于时间的推荐算法中,由于数据类型不同,各个算法的表现也不尽相同,见p139实验。基于地点位置信息的推荐,作者介绍了LARS,这个系统可以将用户位置或物品位置纳入考量。
第六章:社交网络
社交网络推荐,人们更愿意听从朋友、同事、同学的意见。可以利用用户之间的关系、同一社群中的用户两周手段来进行社会化推荐。本章节介绍了集中利用图模型来建模的方法,符合社交网络的特点。这种图方法比较慢,可以参考p154的Twitter的消息队列方法。EdgeRank可以进行信息流推荐。可以使用不同的策略去推荐好友,最重要的就是每个人的重要性和人和人之间的关系(p165)。
第七章:架构
用户常见特征:人口统计特征,用户行为特征(浏览记录、收藏等),话题特征(如喜欢看龙门客栈、叶问,那么就是“武侠电影”话题)。
推荐系统架构:由用户特征抽取模块、初始推荐模块(根据前一个模块和特征-物品表生成初始列表)、过滤-排序推荐模块构成。过滤-排序模块需要考虑新颖度、多样性等指标。
第八章:机器学习方法
前面所有章节都在讨论TOP-N推荐,本节考虑评分预测。
P186提出了一种新的相似度计算公式(adjust cosine similarity)可以在其他相似度计算场景中应用。
svd在实际应用中,具有空间开销大、数据稀疏、计算复杂的问题,因此引入Funk-SVD算法该算法只需要不断优化两个矩阵即可实现评分预测。BiasSVD是一种引入了偏置(用来模拟一些无关的扰动)。P191提到的SVD++也是一种基于矩阵分解的算法,代码中的z没有理解。P193题出的时间模型在前面svd模型的基础上加入了对时间、季节的建模,是09年的ACM的工作。
融合方法介绍了两种,第一种是模型加权融合,先在训练集合验证集上学习权重a,然后再把训练集、验证集合并为大的训练集,并使用权重a再去融合。另外一种类似于AdaBoost,但不是对错误样本进行强化学习。
来源:CSDN
作者:weixin_37763484
链接:https://blog.csdn.net/weixin_37763484/article/details/104159874