《推荐系统实践》是推荐系统的入门书籍,笔者从推荐产品的视角阅读和理解了本书,并对本书内容进行总结和思考。本文内容增加了笔者个人的组织和阐释,无法代表原书作者的观点。
版本信息:2012.06 人民邮电出版社,中国科学技术大学、中国科学院自动化所项亮编著。
一、 本书框架
推荐系统介绍:什么是推荐系统、推荐系统评测、推荐系统架构
数据来源:用户行为、用户标签、上下文、社交网络、冷启动
推荐算法:基于邻域的算法、隐语义模型、基于图的模型
评测方法:实验方法、评分算法
推荐系统架构:
二、 内容要点与个人理解
什么是推荐系统
推荐系统是针对用户没有明确目的、面临信息过载这一场景的解决方案。信息有限的情况下,用户可以通过浏览获取想要的信息;随着信息的增多,有目的的用户可以通过搜索引擎、分类目录找到所需的内容,而无目的的用户则需要推荐系统的帮助。
推荐系统就像是连接着用户和信息的传送带,一方面帮助用户发现有价值的信息,另一方面也帮助信息找到对其感兴趣的用户,对于充分挖掘长尾信息的价值、促进消费转化具有重要作用。因此,往往应用于内容消费领域和物品消费领域,如影视、音乐、阅读、电商、广告等。而在工具性场景的应用则主要是站在改善用户体验的角度,提高工作效率。
推荐系统评测
基于推荐系统的定义和目标,有理由认为,一个好的推荐系统应当首先是能够预测和呈现用户兴趣的,这是推荐的立身之本,预测准确度应当成为推荐系统最重要的评测指标之一。但是,预测准确度作为离线指标,无法真实地反映在线情况下的用户行为。因此,点击率、使用时长、转化率、用户评分等用户满意度的隐性和显性反馈等指标成为另一个推荐系统最重要的指标。
然而,用户不是机器,其兴趣偏好复杂、多面、动态,并且具有喜新厌旧、从众跟风、彰显个性、重视隐私等人性特征。因此在前述评测指标之外,也需要考虑推荐系统的多样性、覆盖率、实时性、新颖性、惊喜度、信任度等指标。此外,还有从技术层面评测推荐系统的健壮性、从商业层面评测推荐系统对商业指标的实现情况,等等。这些指标在推荐系统的不同成长阶段重要程度不同,一个推荐系统在建设初期主要关注预测准确度和用户满意度等重要指标,在后期优化时则要注意从各个方面改善用户体验;多个指标之间存在一定的矛盾,如何平衡也需要进一步思考。
类似社会学研究中的分组原则,在推荐系统评测中对用户、物品、上下文进行分组评测,将能够更加全面地认识推荐系统的效果,找到不同推荐策略的短板与价值,发现深层次的问题和效果优化点。例如,用户的新老、活跃非活跃等属性使用户在推荐场景下的需求有所差异,也会影响到同一推荐策略的效果;物品的新老、热门非热门也同样会使用户对它们产生相异的行为;而即便是同一用户群体对同一类型物品的偏好,也会受到时间、地点等上下文因素的影响。
具体到操作层面,获得推荐系统的评测指标主要通过离线实验、在线实验、用户调查等方式实现。
1. 离线实验:成本低、风险低,但离线环境存在与真实情况的偏差较大。适合前期探索和初步测试
离线实验具有不需要有对实际系统的控制权;不需要用户参与实验;速度快,可以测试大量算法的优点,但同时也具有无法计算商业上关心的指标;离线实验的指标和商业指标存在差距等缺陷。
2. 用户调查:风险低、更接近真实情况,但调查成本高、难度大。适合在线实验前对风险和效果的预判
用户调查的优点是可以获得很多体现用户主观感受的指标;相对在线实验风险很低,缺点是测试代价大、难度高,很难组织大规模的测试,结果的统计意义不足;用户在测试环境下的行为和真实仍可能存在偏差。
3. 在线实验:风险高、成本高、周期长,但可以获得真实情况下的指标。适合验证在前述测试中表现好的算法实际效果
AB测试的优点是可以公平获得不同算法实际在线时的性能指标,包括商业指标。 AB测试的缺点主要是周期比较长,必须进行长期的实验才能得到可靠的结果;AB测试系统的设计也是一项复杂的工程,需要避免不同的AB测试之间互相干扰。
推荐系统的架构
推荐系统的运作涉及到与其他两个外部系统之间的协作:前台展示系统和后台日志系统。前台展示系统提供决策信息、改善推荐体验以及收集用户反馈;后台日志系统则储存用户的行为数据,并提供给推荐系统生成推荐列表。作为推荐产品,在接入推荐和优化效果时,需要根据前台展示样式,调整推荐策略,挖掘隐性用户数据、并采取正确的数据结构加以存储和利用。
推荐系统自身则由多个推荐引擎组成,通过算法实现“生成用户特征向量——特征-物品相关推荐——过滤、排序形成最终列表”的过程。这一过程涉及到三个转化步骤,每个步骤的实现分别对应一个推荐引擎的功能架构。
在生成用户特征向量阶段,主要利用用户行为数据计算特征和特征权重。用户特征的权重受到用户行为的种类、时效性、频率以及物品的热门程度影响,操作成本越高、越新近、越频繁、越冷门的行为体现出用户更强烈、更实时的偏好,因而应当被赋予更高的权重。这部分权重的衡量需要考虑因具体的产品设计和使用场景而有所不同。在特征-物品相关推荐阶段,主要根据离线的特征-物品相关表生成初始的推荐列表。在相关表中储存了每个特征最相关的n个内容,输入用户的特征,就能够根据不同的特征召回相关内容作为初步推荐列表。在过滤和排序阶段,则对召回的物品列表进行非机器化的加工。过滤掉用户已经消费过的、框定范围之外的、质量差的内容等以满足用户信息需求,以及根据预估用户反馈和新颖性、多样性、新鲜度对初始列表进行重新排序以提高用户满意度,等等。
数据来源详解
为了使推荐结果更加符合用户的兴趣偏好,需要搜集足够多的数据来作为推荐系统的支撑。这些数据不仅包括用户直接告知的兴趣偏好等数据,也包括间接搜集的数据,如用户行为数据、用户标签数据、上下文信息、社交网络数据,等等。推荐系统更多依靠的是后者,因为后者的数据量更大、维度更丰富、更新也更加及时,但是在应用时,需要重视用户对隐私数据的感知。
1. 用户行为数据:
用户行为数据是推荐应用最为广泛的数据,分为显性反馈和隐性反馈两种。显性反馈指用户明确表达的喜好,如网站通过评分、喜欢/不喜欢等评价系统收集的用户反馈,这类反馈数据量相对较少,但正负反馈都更加明确。隐性反馈指用户浏览、点击等一系列消费行为日志,数据量大,但需要根据产品和业务特点进行阐释和处理,且较难区分用户的正反馈和负反馈。
在利用用户行为数据之前,需要对用户行为的规律进行一定分析,以指导算法和策略的设计。用户产生过行为的物品总数、对物品产生过行为的用户总数都符合长尾分布,且用户活跃度越高,越倾向于浏览不热门的物品。这一特点在算法优化中得以应用。
一般用户行为数据的结构如下:行为用户、行为对象、行为类型、行为权重、行为内容、时间地点等场景信息。通过用户行为,能够即时、准确、全面地获取用户对物品的偏好。
2. 用户标签数据:
推荐算法的另一种思路是,给用户推荐那些具有用户喜欢的特征的物品,因此需要挖掘各种特征的表现方式。标签即是一种特征的表现方式,通过关键词对物品信息进行描述。书中,作者重点介绍了UGC标签系统,利用用户给物品打标签的行为来对用户进行基于标签的物品推荐和标签推荐。
用户标签数据的利用同样需要明白用户给物品打的标签具有什么样的特征和规律。与用户行为数据类似,标签被用户标记的总次数同样呈现长尾分布。标签可能包括物品的名称、类型、内容、时间、地点、用户行为等等各个方面,表述也五花八门,需要进行一定的分类、筛选和清理。
用户标签数据的一大作用是进行推荐解释。标签以用户兴趣的形式呈现,能够帮助用户理解为什么物品得到推荐;标签以物品相关度的形式呈现,则能够帮助用户判定物品是否符合当前兴趣。客观描述型的标签比主观感受型的标签对用户更可信。用户标签数据还能够增加推荐的多样性,通过展现更高维度的物品集合,涵盖更多、时效性更长的用户偏好。
3. 上下文数据:
上下文信息即用户所处的场景信息,如时间、地点、心情、环境等等。本书中作者重点讨论的是时间上下文。
时间是最重要的上下文信息之一,原因在于用户的兴趣偏好会随时间产生主管或客观的变化,同时物品也有生命周期。在加入时间这一上下文信息后,推荐系统的用户数量、物品数量、用户特征、物品特征等也都变成了时间序列,并呈现出系统的时间特性。相应的,推荐算法也应当将时间特征处理,平衡实时、短期和长期的用户偏好。
通过上下文信息,能够使推荐更加符合实时的用户偏好,掌握偏好的动态变化并作出更准确的预测。
4. 社交网络数据:
现实社会中,我们经常通过朋友获得物品的推荐。利用社交网络数据则可以很好地模拟现实社会。获取社交网络数据的途径有很多,例如:联系人列表、注册信息、位置数据、社区和社交关系,等等。
根据社交网络关系的方向,可以将社交网络数据分为三种:双向社交关系数据,即关系的建立需要双方的互动和反馈;单向社交关系数据,即用户与他人的关系是由用户个人主导而无需对方反馈;隐性社交关系数据,即用户之间没有有形的链接,但同属一个群体。社交网络数据中同样满足长尾分布,体现出在社交网络中影响力大的用户总是占少数,且绝大多数用户只关注很少一部分人。
利用社交网络数据进行推荐的优势是增加用户对推荐结果的信任度,增加冷门物品的点击,以及解决冷启动问题,但劣势是相对而言预测准确度更低,因为人们与朋友的兴趣偏好并不完全一致。
To be continued...
本人对行业和业务理解有限,欢迎大家评论、私信提出意见建议~
下一篇:【《推荐系统实践》读书小记(II)】——推荐算法详解