《推荐系统实践》笔记

推荐类型:社会化推荐(根据好友推荐电影)、基于内容的推荐(根据演员找电影)、基于协同过滤的推荐(根据兴趣相似的人找电影);
推荐应用:电商(如亚马逊)、电影和视频(如Netflix、YouTube)、音乐(如Pandora、Last.fm)、社交网络(如Facebook、Twitter)、阅读(如Google Reader、Digg)、位置服务(如Foursquare)、邮件(如Tapestry)、广告(如Facebook、谷歌的Adsense) ;
评价指标:用户满意度 、预测准确度、覆盖度、多样性、新颖度、惊喜度、信任度、实时性、健壮性、透明度;
(用户满意度通过问卷调查或在线实验获得;在线实验通过用户行为统计得到,如反馈按钮、购买率、点击率、停留时间和转化率等;)
(预测准确度通过离线实验得到,十分方便;99%的推荐相关论文都在讨论该指标;具体分为评分预测和TopN推荐;评分预测用RMSE和MAE计算;TopN推荐用准确率和召回率度量;TopN更重要,因为预测用户是否会看一部电影,比预测用户看了电影后会给它什么评分更加重要;)
(覆盖率是系统推荐出来的物品占总物品的比例;是内容提供商关心的指标(用户不关心);描述长尾发掘能力;利用信息熵、基尼系数定义;)
(多样性即推荐列表中物品两两之间的不相似性;不同的物品相似度可以定义不同的多样性;)
(新颖度是推荐用户以前没有听说过的物品;有过行为的直接过滤;用平均流行度度量;也可以用户调查;不牺牲精度来提高多样性和新颖性较困难;)
(惊喜度是指,一部电影和用户兴趣一点关系也没有,但看完觉得这部电影很不错;而新颖性仅取决于用户是否听说过这个推荐结果;)
(信任度只能通过问卷调查;提高信任度两种方法:提供推荐解释来增加推荐系统透明度、考虑社交网络信息,利用好友进行推荐解释;)
(实时性指新闻、微博等的时效性,需要实时更新推荐列表;实时加入新的商品,即冷启动;)
(健壮性是指推荐系统抗击作弊的能力(和搜索引擎类似);行为注入攻击;)
(对于离线优化的指标,应该在给定覆盖率、多样性、新颖性等条件下,尽量优化预测准确度!!!)
评测效果实验方法:离线实验、用户调查、在线实验;(成本递增)
(离线实验:利用日志系统得到用户行为数据,划分训练集、测试集;优点:快速测试不同算法;缺点:无法测试点击率、转化率等商业指标;)
(用户调查:要保证用户分布相同,比如男女各半、年龄等;保证双盲实验;优点:相对在线实验风险低;缺点:成本高、难以大规模实验;)
(在线实验:AB测试,对不同组的用户采用不同的算法;优点:公平获得不同算法在线性能指标;缺点:复杂的工程、周期比较长;)

第二章把离线实验的用户行为分析展开讲;因为基于用户行为分析的推荐算法是个性化推荐系统的重要算法;
购买A商品的用户都购买B商品(比如啤酒和尿布);也称为协同过滤,即用户和网站互动,来过滤掉不感兴趣的物品;
用户行为分为显性反馈行为、隐性反馈行为;本章用无上下文信息的隐性反馈数据集;
用户活跃度和物品流行度都存在长尾分布;协同过滤算法分为基于邻域的方法、隐语义模型、基于图的随机游走算法;
其中基于邻域的方法分为基于用户的协同过滤算法、基于物品的协同过滤算法;
(UserCF和MostPopular、Random算法比,比它们都好;评价指标是准确率、召回率、流行度、覆盖率;)
(计算相似度时考虑流行度得到User-IIF算法;UserCF的一个例子是Digg;适合用户少的场景;适合新闻推荐;)
(ItemCF比UserCF可解释性更好;适合用户多于商品的场景,是绝大多数电商、电影场景;评价指标也是准确率、召回率、流行度、覆盖率;)
(计算相似度时考虑用户活跃度得到ItemCF-IUF算法,即活跃用户对物品相似度的贡献小于不活跃用户;相似度归一化可以提高推荐的多样性;)
(UserCF的推荐更社会化;ItemCF的推荐更个性化;)
隐语义模型最早出现在文本挖掘领域,包括LSI、pLSA、LDA、矩阵分解和Topic Model;采取基于用户行为统计的自动聚类;
LFM在显性反馈数据(即评分数据)上能达到很好的精度;在隐性反馈数据上,需要采样负样本(即用户对什么物品不感兴趣);
(要保证正负样本的平衡;要选取很热门,而用户没有行为的物品;)
(定义损失函数,并利用SGD训练;通过离线实验评测LFM的性能;)
(LFM在所有指标上都优于UserCF和ItemCF;且LFM所需内存空间较小;LFM的缺点是较难进行实时推荐、不适合庞大系统、可解释性差;)
(雅虎以CTR作为优化目标,利用LFM预测用户是否会单击一个链接;因此CTR预测也是一种TopN推荐,即召回+排序;)
基于图的模型是用二分图表示用户行为;一侧表示用户,一侧表示物品;通过度量两侧顶点之间相关性来推荐;
方法有基于随机游走的PersonalRank算法;缺点是无法在线实时推荐,且离线推荐很耗时;改进方法是转化为矩阵形式,直接求解,无须迭代;
(第二章基于图的模型只有二分图,没有GNN?后者应该也属于吧,但当时应该还没这种技术;)

冷启动分为用户冷启动、物品冷启动、系统冷启动;
解决方法:提供非个性化的推荐(过渡到个性化的推荐)、利用用户注册信息(如年龄、性别)、利用用户社交网络账号登录(推荐好友喜欢)、登录反馈收集信息;利用物品内容信息;引入专家的知识;
利用的用户人口统计学特征越多,越能准确地预测用户兴趣;(预测用户对音乐的兴趣时,国家比年龄、性别特征影响更大;)
给用户选择物品以解决冷启动可采用决策树;基于物品内容过滤可以通过向量空间模型表示(利用nlp技术抽取实体等,分配不同的关键词权重);
(注意:物品内容过滤算法不如ItemCF,甚至比MostPopular算法还要差;因为它忽略了用户行为;不过也有例外,比如GitHub数据集;)
利用专家知识的例子:个性化网络电台Pandora和电影推荐网站Jinni;(让专家给音乐和电影标注)

利用用户标签数据,是通过一些特征(feature)联系用户和物品;(标签是物品属性集合、隐语义向量之外的第三种特征表现方式)
标签分为两种:专家打的标签、用户打的标签(即UGC);本章基于第二种;Delicous是标签系统的鼻祖;
标签的流行度分布也是典型的长尾分布;用户标签行为用三元组(u,i,b)表示,即用户u给物品i打上了标签b;
实验中通过学习训练集中的用户标签预测测试集上用户会给什么物品打标签;用准确率、召回率、覆盖率、多样性和新颖度作为评价指标;
可借助TF-IDF思想对算法改进,通过适当惩罚热门标签和热门物品,得到TagBasedTFIDF和TagBasedTFIDF++,比SimpleTagBased更好;
可以通过标签扩展来提高物品推荐的准确率和召回率,但可能会降低覆盖率和新颖度;
可以通过标签清理来提高标签质量,如去掉同义词和停止词;
可以在图模型上做基于标签的个性化推荐,用户—物品—标签相连,得到SimpleTagGraph;
基于标签推荐最大好处是可以利用标签做推荐解释;例如豆瓣的标签云;
给用户推荐标签的好处:方便用户输入标签、提高标签质量;方法有4种:推荐最热门的标签(PopularTags)、推荐物品i上最热门的标签(ItemPopularTags)、推荐用户自己经常使用的标签(UserPopularTags)、前面两种的融合(HybridPopularTags);

上下文信息包括时间上下文信息、地点上下文信息(用户访问推荐系统的时间、地点、心情等);冬天和夏天不能推荐一样的服装;
上班时和下班后的兴趣会有区别;平时和周末的兴趣会有区别;Sourcetone音乐推荐让用户选择现在的心情来推荐;
大部分推荐系统都是实时性的,例如亚马逊中当用户发生了显性行为(例如购买),相隔十几秒推荐列表也会发生变化;
推荐算法的时间多样性是指就算用户没有新的行为,系统也要经常变化一下推荐结果;
(方法:在推荐结果加入随机性;记录每天推荐结果,对前几天适当降权;每天使用不同推荐算法;)
时间上下文推荐算法包括:最近最热门、时间上下文相关的ItemCF算法、时间上下文相关的UserCF算法;
时间段图模型是将时间信息建模到图模型的方法;基于位置的推荐算法包括LARS(Location Aware Recommender System,位置感知推荐系统);
金字塔模型(LARS-U)是指给中国江苏南京的用户,首先根据某种推荐算法(如ItemCF)生成第一个推荐列表,再用中国用户的行为给他生成第二个推荐列表,以此类推,用中国江苏的用户行为给他生成第三个推荐列表,用中国江苏南京的用户行为给他生成第四个推荐列表,然后将4个推荐列表线性相加;

基于社交网络的推荐包括:基于邻域的社会化推荐算法、基于图的社会化推荐算法;
信息流推荐是如何进一步帮助用户从信息墙上挑选有用的信息(比如Twitter和Facebook这种社交网站);
主流的信息流推荐算法是Facebook的EdgeRank;结论:综合考虑用户的社会兴趣和个人兴趣对于提高用户满意度有帮助;
给用户推荐好友(好友推荐算法)属于复杂网络中的链路预测问题;可分为基于内容的匹配、基于共同兴趣的好友推荐、基于社交网络图的好友推荐;

推荐系统由多个推荐引擎组成,每个推荐引擎负责一类特征和一种任务,而推荐系统的任务只是将推荐引擎的结果按照一定权重或优先级合并、排序然后返回;
推荐引擎的架构包括3部分:生成用户特征向量、生成初始推荐物品列表、过滤排名;(也就是常说的召回、排序;)
过滤模块是为了过滤掉不符合要求的物品,如已产生行为的物品、候选物品以外的物品、质量很差的物品;
排名模块是为了提升用户满意度,有多个子模块,包括新颖性排名、多样性、时间多样性、用户反馈(最重要);

评分预测问题是一个学术界问题,如何通过已知的用户历史评分记录预测未知的用户评分记录;通过离线实验进行研究;用RMSE度量精度;目的是找到最好的模型最小化测试集的RMSE;可以将旧行为作为训练集,新行为作为测试集;
最简单的评分预测算法是利用各种平均值预测用户对物品的评分;
基于用户的邻域算法和基于物品的邻域算法都可以应用到评分预测中;
在隐语义模型与矩阵分解模型体系中,评分预测可以看成是矩阵的填空;
(SVD、Funk-SVD、BiasSVD、SVD++等模型只能用于评分预测问题,还是说也能用于TopN推荐?)
基于邻域的模型、基于矩阵分解的模型都能加入时间信息;
模型融合对提高评分预测的精度至关重要,方法有模型级联融合(类似Adaboost)、模型加权融合;
(Netflix Prize大赛的题目都是评分预测问题?CTR预测也是?)

你可能感兴趣的:(推荐系统,机器学习,数据挖掘,人工智能)