1. 好的推荐系统
1.1 什么是推荐系统
推荐系统的任务是联系用户和信息,帮助用户发现对自己有价值的信息,另一方面让信息能够展示在对它感兴趣的用户面前,解决信息过载的问题。
推荐系统能更好地发掘物品的长尾。如果要发掘长尾提高销售额,就必须充分研究用户的兴趣,这是个性化推荐系统主要解决的问题。
1.2 个性化推荐系统的应用
1.2.1 电子商务
推荐界面包含的内容:
推荐结果的标题、缩略图以及其他内容属性:告诉用户给他们推荐的是什么;
推荐结果的评分:反应推荐结果的总体质量;
推荐理由、提供对推荐结果进行反馈的方式。
推荐算法
给用户推荐那些和他们之前喜欢的物品相似的物品;
给他们推荐他们的fb好友在亚马逊上喜欢的物品;
相关列表推荐:当购买一件商品时,商品信息下面展示相关的商品。
1.2.2 电影和视频网站
1.2.3 个性化音乐网络电台
1.2.4 社交网络
1.2.5 个性化阅读
1.2.6 基于位置的服务
1.2.7 个性化邮件
1.2.8 个性化广告
1.3 推荐系统评测
完整的推荐系统一般存在3个参与方:用户、物品提供者、提供推荐系统的网站。
1.3.1 推荐系统实验方法
离线实验、用户调查、在线AB测试
一个新的推荐算法最终上线,需要完成这3个实验。
1.3.2 测评指标
用户满意度、预测准确度(评分预测,TopN推荐)、覆盖率(覆盖率100%表示推荐系统可以将每个物品都推给至少一个用户)、多样性、新颖性、惊喜度、信任度、实时性、健壮性、商业目标。
1.3.3 评测维度(一个算法在什么情况下性能最好)
用户维度、物品维度、时间维度
2. 利用用户行为数据(协同过滤)
2.1 用户行为分析
2.1.1 用户活跃度和物品流行度的分布(长尾分布)
2.2.2 用户活跃度和物品流行度的关系(新用户倾向于浏览热门的东西)
2.2 基于领域的算法
2.2.1 基于用户的协同过滤算法
把和A有相同兴趣的用户喜欢而A没有听说过的物品推荐给A。
步骤:找到和目标用户兴趣相似的用户集合(余弦相似度);找到这个集合中的用户喜欢的,且目标用户没有听说过的物品推荐给目标用户。
UserCF重要参数K,为每个用户选出K个和他兴趣相似的用户,然后推荐那K个用户感兴趣的物品。不同K值,评测指标性能不同。
用户相似度计算的改进
案例:Digg。用户A顶了某篇文章,在这之前有BC等用户也顶了该篇文章,然后给A推荐BC最近顶的文章。
2.2.2 基于物品的协同过滤算法(ItemCF)
给用户推荐那些和他们之前喜欢的物品相似的物品。相似度的计算:不利用物品的内容属性计算物品之间的相似度,主要通过分析用户的行为记录计算物品之间的相似度。
步骤:计算物品之间的相似度;根据物品相似度和用户的历史行为给用户生成推荐列表。
两个物品产生相似度是因为它们共同被很多用户喜欢,也就是每个用户都可以通过它们的历史兴趣列表给物品贡献相似度。
2.2.3 UserCF和ItemCF的综合比较
UserCF:着重反映和用户兴趣相似的小群体的热点。
eg:digg等新闻类。某个话题的新闻不可能每天都有新的消息,可以给用户推荐其他有相同兴趣的用户在看的新闻。
ItemCF:着重于维系用户的历史兴趣。
eg:图书、电子商务、电影网站,这些网站,用户的兴趣比较持久,个性化推荐的任务是帮助用户发现和他研究领域先关的物品。
2.3 隐语义模型(LFM, latent factor model)
2.3.1 基础算法
核心思想:通过隐含特征(latent factor)联系用户兴趣和物品。
对物品的兴趣进行分类,对于某个用户,先得到他的兴趣分类,然后从分类中挑选他可能喜欢的物品。
该方法需要解决的3个问题:
如何给物品进行分类?采用基于用户行为统计的自动聚类
如何确定用户对哪些物品感兴趣,以及感兴趣的程度?Preference(u,i)=
对于一个给定的类,选择哪些属于这个类的物品推荐给用户?以及如何确定这些物品在一个类中的权重?
2.3.2 基于LFM的实际系统的例子
2.3.3 LFM和基于邻域的方法的比较
2.4 基于图的模型
3. 推荐系统的冷启动问题
3.1 冷启动问题简介
用户冷启动:给新用户做个性化推荐
物品冷启动:将新的物品推荐给用户
系统冷启动:新开发的网站,没有用户以及用户行为,只有一些物品的信息
3.2 利用用户注册信息
3.2 选择合适的物品启动用户的兴趣
新用户第一次访问推荐系统时,不立即给用户展示推荐结果,而是给用户提供一些物品,让用户反馈对物品的兴趣,再根据反馈提供推荐。
如何选择物品?
比较热门,具有代表性和区分性,启动物品集合需要有多样性(如给分类)
3.4 利用物品的内容信息(内容过滤算法)
计算物品内容之间的相似度后再推荐。如果用户的行为强烈受某一内容属性的影响,内容过滤的算法可以在准确率上超过ItemCF。
3.5 发挥专家的作用
从音频分析入手计算歌曲之间的相似度技术门槛很高,Pandora对歌曲额的各个维度进行标注,标注完后,每首歌可以表示为一个400维的向量,然后通过常见的向量相似度算法可以计算出歌曲的相似度。
4. 利用用户标签数据
除了UserCF和ItemCF,第三种重要的方式是通过一些特征联系用户和物品,给用户推荐那些具有用户喜欢的特征的物品。特征具有不用的表现形式,可以表现为物品的属性集合,也可以表现为隐语义向量(可以通过隐语义模型习得),标签就是一种重要的特种表现形式。
4.1 UGC标签系统的代表应用
Delicious、CiteULike、Last.fm、豆瓣、Hulu。
标签的作用:表达、组织、学习、发现、决策
4.2 标签系统中的推荐问题
4.2.1 用户为什么进行标注
社会维度:便于上传者组织自己的信息;便于用户找到信息
功能维度:用户更好组织内容;用于传达某种信息
4.2.2 用户如何打标签
标签流行度k与标签总数n(k)呈现非常典型的长尾分布
4.2.3 用户打什么样的标签
表明物品是什么、表明物品的种类、表明谁拥有物品、表达用户观点、用户相关的标签、用户的任务
4.3 基于标签的推荐系统
用户的每一次打标签行为都用一个三元组(用户、物品、标签)表示。
4.3.1 实验设置
4.3.2 一个简单的算法
统计每个用户做常用的标签
对于每个标签,统计被打过这个标签次数最多的物品
对于每个用户,首先找到他常用的标签,然后找到具有这些标签的最热门的物品推荐给这个用户
再对算法进行测评,召回率、准确率、覆盖率、多样性、平均热门程度
4.3.3 算法的改进
4.3.4 基于图的推荐算法
4.3.5 基于标签的推荐解释
让用户直观上感觉推荐结果有道理是很困难的,而豆瓣将推荐结果的课解释性拆分成了两个部分,首先让用户觉得标签云是有道理的,然后让用户觉得从某个标签中推荐出某本书也是有道理的。
4.4 给用户推荐标签
4.4.1 为什么要给用户推荐标签
方便用户输入、提高标签质量
4.4.2 如何给用户推荐标签
给用户推荐整个系统里最热门的标签、给用户推荐物品i上最热门的标签、给用户推荐他自己经常用的标签、讲前面两种推荐结果线性加权然后生成最终的推荐结果。
4.4.3 实验设置
4.4.4 基于图的标签推荐算法
5. 利用上下文信息
包括推荐系统的时间,地点、心情等。
时间上下文信息
地点上下文信息
6. 利用社交网络数据
7. 推荐系统实例
8. 评分预测问题