达观数据于敬:推荐系统实践与优化

大家晚上好,我是达观数据的于敬,很感谢infoq提供了这个机会,分享下达观数据在推荐系统方面积累的一些经验。我本人曾先后在盛大创新院、盛大文学和腾讯文学一直从事智能推荐系统相关的研发和效果优化工作。

今天的分享内容主要包括以下三部分:

  • 1)推荐系统概述
  • 2)达观推荐系统架构
  • 3)推荐系统效果优化

推荐系统概述

首先明确下推荐系统解决什么问题。

信息爆炸,DT时代,每天面对琳琅满目并且种类繁杂的商品、电影、歌曲、视频等各种服务时,却无所适从,这就是经常提到的信息过载(information overload)问题。

同时,互联网上的各种物品又存在长尾(long tail)现象,指大部分商品属于冷门而没有展示的机会。Chris Anderson在2006年出版的《长尾理论》一书中指出,传统的80/20原则(80%的销售额来自于20%的热门品牌)在互联网时代下回面临更多挑战。主流的商品基本上代表的是大部分用户的需求,但是长尾的商品代表的则是一小部分个性化需求。

近年来,推荐系统被证明是一种解决“信息过载”和“长尾物品”问题的有效工具。推荐系统基于知识发现的相关技术来解决人们在选择商品、信息或者服务是的问题,尤其是基于海量用户行为数据的最近邻协同过滤方法获得普遍应用。

达观数据于敬:推荐系统实践与优化
推荐系统已经与我们的日常生活息息相关,当我们在阅读新闻资讯、网上购物、聆听音乐、观看视频的时候,都能看到各种各样的推荐。

对于用户,推荐系统可以帮助自己快速找到感兴趣的物品,从而改善了用户体验、增加了用户的粘性、提高了转化。

达观数据于敬:推荐系统实践与优化

达观推荐系统架构

接下来是第二部分,达观推荐系统架构,主要介绍下达观数据推荐系统的层次结构、如何近实时捕捉用户行为反馈以及推荐效果展示

首先,我们从整体上看下达观数据推荐系统的层次结构。

达观数据于敬:推荐系统实践与优化
从图中的系统框架图可以看出,整个推荐系统从下往上依次可分为:基础层、模型层、算法层、组合层和应用层。在具体的业务场景中,这种层次结构和实际的数据流向是对应。从最底层的数据存储,经过一层一层的数据加工,最终在顶层的应用层,汇总成最优化的推荐结果,按照指定格式对外提供服务。

1)基础层,主要包括数据生成、传输、预处理和存储。

数据的采集有多种方式,包括HTTP方式的上报、服务器日志打印、SDK采集、爬虫爬取、FTP拉取等。为了保证后续使用的数据一致性,需要通过不同的管道方式进行传输,将原始的数据汇总到一起,并生成统一的规范化格式,如用户多种ID的归一。

数据不仅包括基本的用户和物品数据,还包括各样各样的用户行为数据,如用户的注册、登录、浏览、点击、购买、收藏、打分、评论等。

另外,在原始的数据源中会混杂各种各样的噪音数据,一方面是在数据采集和上报的过程中,出现一些异常数据,另一方面也包括系统上线运行时所产生的作弊数据。所以在数据存储前需要进行深度清洗。

数据采集和上报的异常数据,需要结合数据库表结构和实际场景做过滤,如空值检查、数值异常、类型异常、数据去重。另外,对于 “人为”的噪音数据,如刷点击、刷榜单等行为,这些关键数据会严重影响后续算法的效果,需要有一些反作弊策略进行清除或者降权,如进行session分析,结合cookie、ip、行为发生的时间和次数等一些规则进行过滤。

2)模型层,主要是包括生成用户和物品画像以及建立各种底层的数据模型。

用户画像包括两方面信息,一是通过多种方式采集到基本人口统计学信息,二是通过对海量用户行为数据进行深入分析和挖掘,从多个维度来描述用户的基础属性、标签及兴趣点等,如对品牌、标签和类别的偏好,清晰并且准确地勾勒出用户的轮廓概貌。这些数据帮助企业更好了解用户行为路径,明确用户流失情况和原因,为应用方的产品功能优化决策提供可靠参考依据。

达观数据于敬:推荐系统实践与优化
物品画像除了包括基本信息,对于服装而言如名称、类别、标签、品牌、尺寸、适合年龄和性别等,还包括各种维度的指数数据,如衡量新商品的潜力指数、衡量商品历史销量的吸金指数以及全局热门指数等。

其它模型包括基于历史商品销售数据的销量预测模型、基于流失用户数据的预流失模型等。

3)算法层,包括各种推荐算法以及多种强规则策略。

推荐算法是将物品推荐给用户的纽带,基于各种各样的算法生成待推荐的物品集合,作为最终的候选集输入到组合层。其中应用最广泛的是基于内容的推荐和协同过滤。

a)基于内容的推荐

主要过程是将推荐物品的信息特征和待推荐对象的特征相匹配的过程,从而得到待推荐的物品集合。匹配算法很多是借鉴了信息检索领域中的技术,如K最近邻KNN和Rocchio的相关性反馈方法。

基于内容的推荐方法,优点是能保证推荐内容的相关性,并且根据内容特征可以解释推荐结果,而且对新物品的推荐是也能有很好的考虑,也不需要专业的领域知识。另一个重要的优势,是基于内容的推荐能很好的解决推荐系统的“冷启动”问题,因为这类推荐算法不需要依赖用户行为的积累。当待推荐的物品是新出现时,基于内容的推荐算法往往是最有效的方法。缺点是由于内容高度匹配,导致推荐结果的惊喜度较差,而且对新用户不能提供可靠的推荐结果。对稀疏数据、复杂属性的处理等问题的推荐结果不够理想。

b)协同过滤

达观数据于敬:推荐系统实践与优化
主要思想是基于群体智慧,利用已有大量用户群过去行为数据来预测当前用户最可能感兴趣的东西。这种方法克服了基于内容方法的一些弊端,最重要的是可以推荐一些内容上差异较大但是又是用户感兴趣的物品。构成CF(Collaborative Filtering)的两种主要技术:基于领域的方法和隐语义模型。

基于领域的方法重点关注物品之间的关系或者用户之间的关系,基于物品的方法是根据用户对和他感兴趣的物品相似的物品评分,来对该用户的偏好物品建立模型。隐语义模型采用的是另外一种方法,把物品和用户映射到相同的隐语义空间。这个空间试图通过描述物品和用户两种实体在因子上的特征来解释评分,而这些因子是根据用户的反馈自动判断出来的。

用隐语义模型来进行协同过滤的目标是揭示隐藏的特征,这些特征能解释观测到的评分。该模型包括pLSA(Probability Latent Semantic Analysis)模型、神经网络模型、LDA(Latent Dirichlet Allocation)模型,以及由用户-物品评分矩阵的因子分解推导出的模型(也叫基于SVD的模型,Singular Value Decomposition)。由于矩阵因子分解技术在线上业务的准确性和稳定性的突出表现,已经成为协同过滤算法的首选。

4)组合层,主要是对算法层的结果数据进行重排序。

推荐系统需要面对的应用场景往往存在非常大的差异,例如热门/冷门的内容、新/老用户,时效性强/弱的结果等,这些不同的上下文环境中,不同推荐算法往往都存在不同的适用场景。不存在一个推荐算法,在所有情况下都胜过其他的算法。而融合方法的思想就是充分运用不同分类算法各种的优势,取长补短,组合形成一个强大的推荐框架。

达观数据于敬:推荐系统实践与优化
由于排序过程牵涉到各种维度的参数数据,导致调参费时费力,而且很可能会出现过拟合现象。而机器学习方法不仅有成熟的理论基础,而且很容易融合多种特征,通过不断的迭代来进行参数优化,可有效解决数据稀疏、过拟合等问题。

经过多个推荐算法的处理,最终得到待推荐物品的结合,使用少量维度的特征进行排序过于简单,效果也大打折扣。基于推荐算法得到的相关特征,结合物品和用户的特征进行组合,可以得到各种特征,并且有些特征是正相关有些是负相关,需要不断优化。借助机器学习方法得到了最终的物品排序,呈现给用户。

5)应用层,主要是按照不同的推荐类型,将推荐结果通过API调用的方式返回,包括个性化推荐、相关推荐和热门推荐。

高质量推荐系统的一大特点是能在高并发的情况下,快速响应用户行为反馈。用户的信息诉求受很多因素影响,如时间、场景、心情等。用户心情有低落有兴奋、在地铁上还是在办公室。达观数据推荐系统采用三层结构,根据用户点击反馈实时挖掘用户兴趣,最快最准的满足用户信息诉求。

达观数据于敬:推荐系统实践与优化
受制于硬件资源和时效性因素,推荐系统的性能也面临诸多考验,体系结构也需要优化到极致。数据量急剧增加,每天采集到的物品数据、用户数据以及海量的行为数据,对计算资源都是极大的挑战,而且数据变化很快。hadoop集群的运算能力也是有限的,分布式计算的时效性也跟不上用户实时的信息诉求。

达观数据推荐系统三层体系借鉴了信息检索领域思想,采取online-nearline-offline的结构。主要思想是让最珍贵的资源留给高价值的user和item。Online模块采用负载均衡,负责及时响应API请求,并返回推荐结果,保证高可靠高并发。Offline基于hadoop集群对海量数据进行深入挖掘,承担高负荷的算法。Nearline模块主要是填补Online和Offline之间的空白。作为Offline的补充,保证快速响应点击反馈数据。作为Online的补充运行一些轻量级的算法。

三层体系协同工作,保证了推荐系统的高可靠、高并发的性能;同时高负荷和轻量级的算法并举,秒级响应用户行为反馈,保证了推荐结果的精准。

推荐系统效果的好坏有多种维度,结合到实际的业务场景,一般是选取主要的几个指标进行量化,通过不断的迭代和AB测试来优化推荐系统。

达观数据个性化推荐点击率提升了3倍、付费金额提升了60%……推荐系统不仅极大的改善了用户体验,满足了用户的信息诉求,同时也增加了用户粘性、减少了用户流失,提升了企业经济效益。

达观数据于敬:推荐系统实践与优化

推荐系统效果优化

最后聊聊推荐系统的效果优化。其实谈到推荐系统的优化,主要是和具体推荐场景相结合的,方法也有很多。这里从中选取了几点介绍下。对症下药

为了提升推荐系统的效果,首先需要“对症下药”,也就是推荐出来的物品集合可以追溯来源,找到问题。在设计推荐系统的时候,对推荐结果进行“埋点”,带上推荐策略的标识。然后在推荐效果的时候,对各个推荐策略分别统计结果,对比数据可以看出各个算法的优劣。最后,根据推荐统计结果,优化对应的推荐策略,进行分流测试,验证优化方法的有效性。

达观数据于敬:推荐系统实践与优化
标签拓展

物品信息中很重要的一个特征是标签。好的推荐系统不仅体现在精准性,还有多样性和惊喜度方面的要求。对物品信息进行深层度的挖掘分析,进而对标签进行拓展,也是一种实现上述要求行之有效的方法。

达观数据于敬:推荐系统实践与优化
点击反馈

和搜索引擎一样,在推荐系统中也存在一个问题:position bias。推荐结果在最终展现给用户的时候,不可避免的会有先后之分,好的位置有好的曝光机会。但是最好的位置不代表有最好的推荐效果,比如推荐点击率。即使有更高的推荐点击率也不代表就一定是好的推荐结果。所以需要去除position bias,进行点击反馈调权。

首先需要基于历史数据,分析每个位置的推荐效果数据,这个时候就可以看出各个位置的推荐系统的差异。然后在推荐的时候,基于推荐物品数据和每个位置的推荐效果数据,对最终的推荐结果顺序进行调整。从下图可以看出,使用点击反馈之前点击率在11.5%左右,加上点击反馈之后,点击率在14%左右,提升了20%。

达观数据于敬:推荐系统实践与优化
和所有的算法效果优化一样,推荐系统的方方面面都是在实践中不断沉淀下来。由于时间有限,以上就是这次分享的全部内容,感谢大家的参与,有兴趣的话后续线上继续交流,谢谢。

Q&AQ1: 达观的推荐现在应用到哪些领域的客户上了呢?衡量效果的主要指标有哪些?

A1: 达观的推荐系统已经应用到媒体、电商、直播、视频、招聘等多个领域的客户上,衡量指标也有很多,包括推荐点击率、购买转化率等

Q2:于老师你好,请问基于内容的推荐,相当于求与购买产品相似度最高的产品列表了,对吧,将相似度最高的推荐出去 对吗?

A2:基于内容的推荐是根据当前产品的属性信息,找到与该物品“内容”上最相似进行推荐。基于用户行为的推荐,如购买,一般是协同过滤推荐算法。

Q3:协同过滤的一个问题是,一个客户对某个商品有购买行为,对绝大多数商品没有购买行为。这个矩阵的稀疏性很大,怎么解决呢?

A3:对于数据的稀疏问题,一般可以结合隐式反馈数据来解决,同时可以引入用户及商品的属性特征,当然也可以对稀疏矩阵进行降维处理。另外,基于客户的多维度数据,可以构建用户画像进行推荐。

Q4:推荐系统评价指标怎么选取呢?有没有指标可推荐的呢?

A4:评价指标有很多种,包括准确率、覆盖率、多样性、推荐点击率、转化率、推荐带来的pv/uv/新用户等等。具体的推荐效果评估和业务指标强相关的。

Q5:于老师你好,请问基于内容的推荐,相当于求与购买产品相似度最高的产品列表了,对吧,将相似度最高的推荐出去 。KNN和直接计算产品相似度排序是否是一样的效果呢?

A5:KNN和直接产品相似度进行排序本质上一样,都都需要计算物品间的相关性,时间结果取决于特征选择等因素。

本文是8月11日大数据杂谈群分享的内容。讲师介绍:于敬,现为达观数据联合创始人&推荐系统负责人,同济大学计算机硕士。之前在盛大创新院、盛大文学和腾讯文学从事个性化推荐系统、用户建模、广告系统、文本挖掘、反作弊等相关工作,对智能推荐、用户画像、数据挖掘大数据技术等有深入理解和实践经验。

本文为专栏文章,来自:AI前线,内容观点不代表本站立场,如若转载请联系专栏作者,本文链接:https://www.afenxi.com/24441.html 。

(0)
AI前线的头像AI前线专栏
上一篇 2016-08-10 23:02
下一篇 2016-08-19 09:47

相关文章

关注我们
关注我们
分享本页
返回顶部