`
wbj0110
  • 浏览: 1549142 次
  • 性别: Icon_minigender_1
  • 来自: 上海
文章分类
社区版块
存档分类
最新评论

智能推荐系统开发中的十个关键注意点

阅读更多

亚马逊的CEO Jeff Bezos曾经说过,他的梦想是“如果我有100万个用户,我就要为他们做100万个亚马逊网站”。智能推荐系统承载的就是这个梦想,即通过数据挖掘技术,为每一个用户实现个性化的推荐结果,让每个用户更便捷的获取信息。为了实现这个梦想,过去十余年间,无数顶尖技术专家和工程师投身于推荐算法和技术的研究与应用中,很多优秀的方法被提出,很多技术难题被攻克。在今天的互联网应用中,越来越多“聪明”的推荐系统被开发出来,并被广大用户信赖和使用。

智能推荐系统充分运用了机器学习、数据挖掘、搜索引擎、自然语言处理等相关领域的技术。但推荐系统并不神秘,事实上,推荐在我们身边无处不在。对广大软件开发工程师们来说,能够投身于推荐系统的研发,是一件既有趣又充满挑战的工作。想要成功的开发一套效果良好的推荐系统,有一系列值得重视的关键点,文本对此进行了总结,具体列举如下。

充分运用显式\隐式反馈数据

数据是一切推荐系统的基础。良好的推荐效果一定是来自于丰富而准确的数据。这些数据既包括了用户(user)和待推荐物品(item)相关的基础信息(注:item和具体的推荐场景相关,可以是商品、影片、音乐、新闻等,如果是进行好友推荐,那么item也可以是user本身),另一方面,user和item之间在网站或应用中发生的用户行为和关系数据也非常重要。因为这些用户行为和关系数据能真实的反映每个用户的偏好和习惯。采集这些基础数据,并做好清洗和预处理,是整个推荐系统的基石。

用户行为数据,又可细分为两部分:显式反馈数据(explicit feedbacks)和隐式反馈(implicit feedbacks)数据。显式反馈是指能明确表达用户好恶的行为数据,例如用户对某商品的购买、收-藏、评分等数据。与之相反,隐式反馈数据是指无法直接体现用户偏好的行为,例如用户在网站中的点击、浏览、停留、跳转、关闭等行为。通过挖掘显式反馈数据能明确把握用户的偏好,但在很多应用中,显式反馈数据通常很稀疏,导致对用户偏好的挖掘无法深入。这个问题在一些刚上线的应用、或者偏冷门的物品或用户身上反映尤其明显。在这种情况下,用户的隐式反馈数据就显得尤为重要。因为虽然用户在网站中的点击等行为很庞杂,但其中蕴藏了大量信息。在2006-2008年间进行的国际著名推荐竞赛Netflix Prize中,冠军队成员Yehuda Koren发现将用户租用影片的记录,转换为特征向量注入奇异值分解算法(SVD)用于影响用户兴趣向量,能够很好的提高推荐准确率。

基础数据的预处理对推荐效果的提升也非常有帮助。以2012年的ACM KDD-Cup(国际数据挖掘竞赛)为例,训练样本中,负样本的数量居然达到了总样本数量的92.82%,但是通过仔细分析这些负样本,发现其中有大量样本存在噪音,通过一系列的Session分析和筛选方法,从中保留了11.2%的样本进行后续推荐挖掘,不仅成功提高了推荐精度,而且大大减少了运算量。所以充分利用各类显式和隐式数据,并做好数据的预处理,保证输入数据的质量,是第一个关键点。

多种方法的融合

经过多年的发展,很多种推荐算法被提出来。常见的推荐方法,从大类上分,有基于历史行为(Memory-based)的方法、基于模型(Model-based)的方法、基于内容(Content-based)方法等。在Memory-based方法这个方向,又可进一步细分为基于物品的协同过滤算法(item-based collaborative filtering)、基于用户的协同过滤算法(user-based collaborative filtering)、关联规则(association rule)等;Model-based方法常用的包括Random Walk、pLSA、SVD、SVD++等。每种方法在具体实施时,针对不同的问题又有很多不同的实现方案,例如在基于物品的协同过滤算法(item-based collaborative filtering)中,item之间相似度计算公式(Similarity)也可能有很多很多种变化。

在系统推荐的结果以外,还有一类传统的方式是通过专家进行推荐。这些专家可以是一些有经验的编辑,也可以是社区中意见领袖等。这些领域专家推荐的结果,在很多实际应用中,可以作为算法推荐结果的有益补充。

事实上,在实践中并没有任何一种方法在实践中始终占据压倒性的优势,它们各有千秋,分别有其各自合适的应用场景,因此因地制宜根据不同的场景,挑选不同的方法,并有机的结合起来,能让推荐效果得到极大的提升。常见的融合方法包括Restricted Boltzmann Machines(RBM), Gradient Boosted Decision Trees(GBDT),Logistic Regression(LR)等,这方面历次推荐竞赛中有很多相关文章,可以看到为了提升推荐效果,将不同算法的结果能够取长补短,各自发挥价值,是极为有效的。

重视时间因素

用户的行为是存在很强的时间规律的。例如通常人们中午会吃饭、周末会休假、过年会回家团圆等等。用户在各个应用中的行为也同样有规律可以挖掘,用好时间这个特征,在很多推荐场景下,会对推荐效果的提升有很大的帮助。

用户行为日志中,行为发生的时间戳(timestamp)通常都会被记录。这个时间戳能从user和item两方面来进行分析。从user的角度来看:user的兴趣往往会随着时间不断变化,几年前的兴趣和当前的兴趣可能是不同的;另一方面,user的行为也存在一定的规律,例如工作日的行为是类似的,而在周末里user的行为也会变化,甚至在同一天中,上午和晚上的user行为和偏好也会有各种不同的规律。

从item的角度来看,流行度随着时间会有规律性的波动,通过持续挖掘user与item之间的行为在一段时间内的记录,往往能够发掘出这种规律,并进而用于指导我们预测user在后续某个时刻的行为,提高推荐的准确率。

时间因素的一些常见处理方案包括:1)在协同过滤计算user或者item相似度的公式中,增加时间因子,发挥相近时间的作用;2)将时间离散映射到自然月、周、日、小时等时间片中,并分别进行统计计算,并进而将累积的数据用于特定的回归模型(Regression models)中,指导结果预测;3)将时间作为线性连续变量,用于训练模型参数等。

特定推荐场景需要使用地域特征

有一些推荐场景是和用户所处地域密切相关的,尤其对一些LBS、O2O的应用来说,一旦离开地域这个特征,那么智能推荐的效果根本就无从谈起。例如当需要推荐一个餐馆时,如果不考虑用户当前所在的位置,那么即使某餐馆和当前用户的口味匹配度非常高,但远在天边,这个推荐也是毫无价值的。

目前推荐系统在地域特征的使用还停留在较为原始的状态,通常需要让用户手工筛选推荐结果所在的区域(如省、市、区、县等),或者指定若干半径范围内的结果。这种方式不仅操作繁琐,而且缺乏对地域信息的细致分析。例如地点A和B的地图直线距离虽然较远,但两点间有地铁直接往返,而另一地点C虽然地图直线距离A很近,但两点间需要绕行交通不便。另外从用户角度来说,每天活动的地域总是存在规律的,例如工作日白天,往往活动区域在工作地点附近,夜晚的时间会在家附近等。

在基于地理位置信息的应用中,需要更聪明的挖掘用户对地域的偏好(而且这种偏好往往和时间紧密联系),例如在基于用户的协同过滤中,将类似地域用户活跃用户的行为,作为推荐的依据,即认为活动地域相似的用户,可能存在一定相同的偏好。或者使用基于物品的协同过滤思想,在计算item之间相似度时引入地域特征。在Latent Factor Model中,将用户的活动地域作为隐式反馈来作用于用户特征向量等,都是可行的方案。

手机是进行基于地域信息推荐的最好载体,随着移动互联网应用越来越普及,期待未来有更多基于地域信息的推荐产品的问世。

5 SNS关系的使用

社交网络近年来得到了突飞猛进的发展,用户不再是单纯的内容接收者,而是能够主动的建立用户之间的关系。这些关系,可以划分为显式关系(explicit relations)和隐式关系(implicit relations)。显式关系指的是用户已明确建立的相关关系,例如在微博中关注/被关注某人等,或者在社区中加为好友等。而隐式关系指用户之间存在一些互动行为,但这些行为不能明确指示用户间的关系。例如用户在微博中点击、评论、转发另一个用户的帖子,如果在网络游戏世界中另一个玩家交谈,或者PK等。隐式关系虽然并不如显式关系那样明确,但比显式关系要丰富的多。所以在一些对推荐精度要求很高的应用场景下,显式关系需要发挥主要作用;而对一些需要提高推荐召回率和推荐结果多样性的场景下,尤其是当显式关系面临数据稀疏性的问题时(注:这个问题在推荐应用中普遍存在),充分利用隐式关系能起到非常好的效果。以今年的KDD-Cup竞赛为例,在腾讯微博的好友推荐系统上,我们通过在SVD++模型中增加隐式关系,处理数据稀疏性的问题,能够将推荐准确率提升5.5%

此外,移动互联网的普及,让SNS关系使用起来更加便捷,而且加上地域信息,产生了像微信这样新颖的移动应用,而SNS关系和地域特征的结合使用,一定会让推荐系统也产生出更受欢迎的结果。

缓解冷启动问题

冷启动是推荐系统最为悠久的一个问题,伴随推荐系统诞生至今。这是因为推荐系统效果提升的关键天然在于数据,而当新用户、或新物品等刚上线时,由于积累的数据极为稀少,大量方法在最初这段时间难以生效。

冷启动问题又可细分为user冷启动或者item的冷启动。user冷启动在一些场景普遍存在,例如在一些短视频网站,由于user没有登录浏览的习惯,因此大量来访用户都是陌生的cookie用户,如何对这些user进行推荐是至关重要的。常见的思路包括:1)采用热门推荐(排行榜)结果。虽然排行榜是一个看似简单的方法,但设计良好、的排行榜并不如想象中简单,排行榜如何计算,基于哪些统计特征,都是值得深究的。2)充分利用有限的用户信息来迅速捕捉偏好。例如用户的来源ip、访问时间、最初点击的几个结果的属性,都需要被充分运用。3)为新用户设置简单的口味测试,根据用户提交的答案主动收集用户偏好。常见的方案包括为提供一些预先精心设计的选项,通过用户的选择迅速建立用户模型。在设计选项时,一些注意点包括:A)必须要有代表性的选项;B)选项需要相对热门,或有一定的用户知名度;C)选项之间要有区分度。

item冷启动的问题在一些item频繁更新的应用中普遍存在,例如一些电子商务网站会不断上架新商品,这些新商品由于缺少点击,很难进行推荐。但基于内容的方法(content-based)往往此时能发挥关键作用。根据item的类别、标签、关键词等初始特征,能计算item之间的关联度。尽管很多对比评测表明,基于内容的推荐算法往往推荐精度不够高,但这种方法在处理item冷启动时有先天的优势,所以在工程实践中可以注意使用。

推荐结果的展现方式不可忽略

推荐系统绝不仅仅局限于推荐算法和架构,而是一个完整的系统。其中推荐结果的展现方案是这个系统中极为重要的一环,开发一个推荐系统时,这个环节往往被工程师们忽略,但推荐结果最终呈现给用户的位置、提供哪些信息,往往起到举足轻重的作用。

这里需要注意的关键点包括:1)不同item的推荐,由于用户关注点不同,展现的方案也需要不同,要尽量凸显出用户的关注重点。例如推荐一个服饰时,缩略图对用户的点击意愿起到极为重要的作用;而推荐服务类商品时(例如旅游线路),天数、价格、是否优惠等信息,才是用户关注的重点;2)推荐展示的场景和位置,需要符合用户的行为习惯。求职社交网站LinkedIn的对比实验表明,在用户申请完一个工作的之前或之后分别展示推荐结果,前者的点击率是后者的10倍。在网页正中或右侧边栏放置推荐结果,点击率也相差5倍之多。

在展现方式中,另一个极为重要的方面是提供推荐理由。因为通过展现推荐理由,能够赢得用户的信任,进而让用户更容易接受推荐给他的结果。例如直接为A用户给出一个猜她喜欢的视频V,可能很难信任。但如果同时给出推荐理由:“和你口味相似的B和C都收-藏了该视频”,那么能很好的提升用户的信任感。另外,推荐理由本身也是对推荐结果的一个良好的补充描述。例如推荐一本小说,按传统方案只提供小说名称、封面,读者很难获取足够的信息,但如果提供推荐理由:“本周销售量最多”或者“起点白金作家XXX最新作品”,对提升推荐成功率有很大的帮助。

合适的推荐结果的展示方案,需要技术、产品、UI、UED等充分结合,对用户需求和用户心里有细致入微的把握,往往能起到事半功倍的效果。

明确优化目标和评估手段

开发一个初步可用的推荐系统并不难,难的是如何在原有推荐效果的基础上精益求精,更进一步。优化目标和评估手段的确定是解决这个问题的关键所在。首先需要确定系统的优化目标。例如有些推荐系统追求推荐结果的点击率;有些则还考虑点击后的实际转化或成交效果;有些推荐场景更关注推荐结果的新颖性,即希望更多的将本站新收录的物品展现给用户;另一些则更重视结果的多样性。

在推荐系统的目标明确后,随之而来的问题是,如何量化的评价这些推荐目标?传统的评分预测问题通常使用均方根误差(RMSE)或者平均绝对误差(MAE)等计算方法。但在实际应用中Top-N推荐更为常见,这种场景下NDCG(Normalized Discounted Cumulative Gain)或MAP(Mean Average Precision)是普遍使用的衡量方法。

由于推荐系统经常借鉴相关领域的一些技术,如广告学或搜索系统,因此计算广告学中的pCTR或者搜索系统的Precision-Recall曲线等也经常用于评估推荐效果的优劣。有些系统甚至直接将推荐系统转化为一个机器学习问题,评估手段也随之转化为对应问题的方法。

实际系统中,往往是多个指标(点击率、准确率、覆盖率、多样性、新颖性等)共同作用,并且按照产品的实际需求,加权折衷后进行结果评测。测试方法也有线上A/B Testing以及人工评测等。无论采用何种方法,一个成熟的推荐系统一定要建立在明确的优化目标和评测系统之上,它们像一把尺子,丈量着推荐系统每次前进的脚步。

时效性问题

正所谓“天下武功,唯快不破”,推荐系统要能及时捕捉用户需求的变化,反馈到模型中,并及时响应用户请求,实时提供在线服务。因为用户是挑剔的、也是缺乏耐心的,新用户尤其如此,如果一个推荐系统无法在较短的时间内调整结果以迎合用户,那么用户会迅速流失。

推荐系统的时效性首先体现在能灵敏捕捉用户反馈,这些反馈既包括正反馈(用户喜爱),也需要收集负反馈(用户不感兴趣的)。很多推荐系统往往忽略了负反馈样本的收集,而事实上,有效的收集用户的正负反馈,并进行对比训练,能够更全面准确的掌握用户偏好。

在用户反馈收集的基础上,还需要能够及时更新后台的推荐模型。很多推荐系统后端的用户模型和物品模型,都需要通过大量用户日志来进行挖掘运算,计算开销大,所以一个设计良好的推荐系统,需要将离线挖掘和在线服务系统进行有机的结合。离线系统可以设计得比较“厚”,即算法复杂,模型庞大,更新缓慢。而在线系统则倾向于设计得轻巧灵活,能及时将捕获的正负反馈信息传递进来,修改在线模型,捕获用户短期兴趣变化,从而快速修正推荐结果。

10 大数据挖掘和性能优化

大数据挖掘是近年来的研究热点,得益于分布式计算技术的广泛使用,系统吞吐的数据规模越来越大,离线数据挖掘的能力也越来越强,处理大量用户行为数据变得越来越便捷。但在推荐挖掘中,系统能够提供的运算能力和实际的运算需求之间,始终存在矛盾,所以如果有效合理的分配运算资源十分重要。这里需要在挖掘深度上进行合理的分配。对重点的用户或者item,可以分配更多的资源,进行更深入的挖掘。对基础数据也是如此,高质量的数据可以用于更详细的分析,而低价值的数据可能只需要简化处理流程。

后端的离线系统往往还需要定期更新模型,这里模型的全量或增量更新方式也是一个值得关注的点。以用户模型为例,并非所有用户的个性化模型都需要频繁更新,活跃的、高贡献值的用户,应该需要更频繁的予以更新。对item也类似,热门item和冷门item更新技术的周期可以不同。

在大数据推荐系统的性能优化方面,还有一些常用的技巧,例如倒排索引的使用,cache机制的充分运用等。

总结

智能推荐系统是一个系统工程,依赖数据、架构、算法、人机交互等环节的有机结合,形成合力。本文列举的十个关键点,是作者在开发推荐系统中积累的一些经验与心得,希望能抛砖引玉,与大家共同探讨。我们开发推荐系统的目标,是通过个性化数据挖掘技术,将“千人一面”变为“千人千面”,因为大千世界、芸芸众生,原本就是多姿多彩的,希望智能推荐系统能让这个世界变得更人性化、更丰富、更美好。

http://www.cserzs.com/ten-key-points-in-intelligent-recommendation-system-development

机器学习/推荐系统课程链接:http://edu.51cto.com/pack/view/id-535.html

 

机器学习课程:http://edu.51cto.com/course/course_id-3560.html

推荐系统课程:http://edu.51cto.com/course/course_id-3792.html

 

http://soledede.com/

 

大家可以加我个人微信号:scccdgf

 

 

或者关注soledede的微信公众号:soledede
微信公众号:
分享到:
评论

相关推荐

    智能设计关键技术.doc

    3) 人机一体化 智能制造系统的设计不是建立单纯的"人工智能"系统,而是建立一种混合智能, 即人机一体化智能系统,通过这种混合智能,制造系统不仅能进行逻辑思维,还 能进行形象思维和顿悟思维。 4) 智能交互界面 ...

    智能设计关键技术(1).doc

    3) 人机一体化 智能制造系统的设计不是建立单纯的"人工智能"系统,而是建立一种混合智能, 即人机一体化智能系统,通过这种混合智能,制造系统不仅能进行逻辑思维,还 能进行形象思维和顿悟思维。 4) 智能交互界面 ...

    人工智能技术在电子商务中的应用.doc

    人工智能技术在电子商务中的应用 摘要:人工智能技术和电子商务的飞速发展推动了全球科技经济领域的进步,基于 人工智能技术的电子商务更趋向完美和成熟。随着电子商务的不断发展和人工智能技术 的不断完善,两者在...

    计算机毕业设计-Python语言开发的django大数据的应届生求职系统--论文-毕设源代码+说明文档.rar

    该系统集成了大数据技术,能够根据用户的求职意向和行为,智能推荐匹配度高的职位信息。同时,系统还提供了简历管理、职位搜索、公司分析等实用功能,帮助用户更好地展示自己并找到理想的工作。 论文部分详细阐述了...

    毕设源码-VB排课系统程序设计(论文+源代码).rar

    同时,我们还提供了与源码配套的详细论文,论文中阐述了系统的设计思路、关键技术分析、系统实现及测试等方面的内容,为学生提供了一个完整的毕业设计解决方案。 此外,该系统具有良好的二次开发定制潜力。开发者...

    智能控制技术现状与发展.doc

    因此,在研究和设计智能系统 时,主要注意力不放在数学公式的表达、计算和处理方面,而是放在对任务和现实模型 的描述、符号和环境的识别以及知识库和推理机的开发上,即智能控制的关键问题不是 设计常规控制器,...

    Android例子源码实现仿360应用助手秒装和智能安装功能.zip

    本项目是一个Android静默安装实现项目源码,仿360手机助手、百度助手、豌豆荚、等应用助手类秒装和智能安装功能的功能,所谓的秒装其实就是需要ROOT权限的静默安装,其实静默安装的原理很简单,就是调用Android系统...

    厨房智能监控系统(下位机源码+APP+设计分析)-电路方案

    这个因为有官方开源的Dome源码,所以我们只要有一些安卓或者ios开发基础,就可以轻松的从官方Dome中改一个出来。如果仅仅是学习测试使用,甚至可以直接用官方给的IOE Dome测试,因为这个Dome里没有都设备的product ...

    安徽大学-互联网学院-智能科学与技术-嵌入式实验代码(1-8)

    总之,安徽大学互联网学院智能科学与技术专业的嵌入式实验代码(1-8)为学生提供了一个全面学习嵌入式系统开发的平台。通过使用这些代码,学生可以掌握实际技能,并在未来的职业发展中受益匪浅。

    安防天下智能网络视频监控技术详解与实践part2

    10.1.3 系统中的视频传输 299 10.2 网络传输协议介绍 300 10.2.1 osi模型介绍 300 10.2.2 传输层介绍 303 10.2.3 tcp与udp协议 304 10.2.4 rtp与rtcp协议 307 10.2.5 rtsp与rtvp简介 309 10.2.6 网管...

    泛智能终端销售策略与实务.doc

    6.3对不同类型客户操作体验的应用引导 6.4 演示中的3必讲 6.5 非语言技巧 情景演练与讨论:客户体验过程中的关键细节管理 7,共鸣达成促进成交 7.1 顾客的心理期望与让渡价值 7.2降低客户的疑虑八技法 7.3落单技巧 ...

    安防天下智能网络视频监控技术详解与实践.part3

    10.1.3 系统中的视频传输 299 10.2 网络传输协议介绍 300 10.2.1 osi模型介绍 300 10.2.2 传输层介绍 303 10.2.3 tcp与udp协议 304 10.2.4 rtp与rtcp协议 307 10.2.5 rtsp与rtvp简介 309 10.2.6 网管协议snmp...

    智能合约Solidity编程教程.pdf

    智能合约Solidity编程教程 以太坊编程之菜鸟教程 译注:⾸发于ConsenSys开发者博客,原作者为Eva以及ConsenSys的开发团队。如果您想要获取更多及时信息,可以访问⾸页点击左下⾓Newsletter订阅邮件。本⽂的翻译获 ...

    基于微信平台的车险投保系统设计与实现.zip

    系统设计通常包括以下几个关键部分:用户界面设计:系统提供一个简洁明了的用户界面,用户可以通过微信小程序或者公众号访问车险投保系统,进行各种操作。报价引擎:系统内置智能报价引擎,用户输入车辆信息和个人...

    vc++ 开发实例源码包

    ----------VC应用开发 [Visual.C..编程技巧精选500例]源代码. 内含各种例子(vc下各种控件的使用方法、标题栏与菜单栏、工具栏与状态栏、图标与光标、程序窗口、程序控制、进程与线程、字符串、文件读写操作、文件...

    ASP.NET智能评教系统(源代码+论文+开题报告+答辩PPT)_new.rar

    学生可以从论文中理解项目的全局构想和关键设计决策。 - 设计文档:详细梳理了系统的构建过程,包含需求分析、系统框架设计、数据库规划、界面布局、功能模块划分等。此文档将引导学生逐步实现和调试系统。 - 源代码...

    智能热度分析和自媒体推送平台_new.zip

    论文:详细阐述了为何选择SpringBoot作为开发框架、系统的总体设计哲学、模块划分、功能描述、技术栈选择等关键信息。这部分内容可以帮助读者了解背后的设计思路和系统的核心价值。 设计文档:这部分包括了系统的...

    智能合约的典型应用场景.pdf

    智能合约的典型应⽤场景 去中⼼化组织不仅仅是信息公开 dao 数字共识空间(我正在测试中的加密货币2.0的新术语)中最热门的主题之... 去中⼼化应⽤ 去中⼼化的应⽤程序类似于智能合约,但是在两个关键⽅⾯有所不同。⾸

    安防天下智能网络视频监控技术详解与实践part1

    10.1.3 系统中的视频传输 299 10.2 网络传输协议介绍 300 10.2.1 osi模型介绍 300 10.2.2 传输层介绍 303 10.2.3 tcp与udp协议 304 10.2.4 rtp与rtcp协议 307 10.2.5 rtsp与rtvp简介 309 10.2.6 网管...

    揭秘人工智能(系列):人工智能带来的网络安全威胁.pdf

    揭秘⼈⼯智能(系列):⼈⼯智能带来的⽹络安全威胁 ...加州⼤学伯克利分校的研究在这种中,他们 操纵⾳频⽂件的⽅式会让⼈⽿不被注意,但会导致AI转录系统产⽣不同的输出。例如,这种对抗性攻击可⽤于以在播放时向智

Global site tag (gtag.js) - Google Analytics