`

解析智能推荐系统开发中十大关键要素

 
阅读更多

解析智能推荐系统开发中十大关键要素

分页浏览|全文浏览2013-04-09 05:21    【互联网分析 转载】      评论(3)
本文导航
第1页:1 充分运用显式\隐式反馈数据第2页:3 重视时间因素第3页:5 SNS关系的使用第4页:7 推荐结果的展现方式不可忽略第5页:10 大数据挖掘和性能优化
返回分页阅读文章
1 充分运用显式\隐式反馈数据
    亚马逊的CEO Jeff Bezos曾经说过,他的梦想是“如果我有100万个用户,我就要为他们做100万个亚马逊网站”。智能推荐系统承载的就是这个梦想,即通过数据挖掘技 术,为每一个用户实现个性化的推荐结果,让每个用户更便捷的获取信息。为了实现这个梦想,过去十余年间,无数顶尖技术专家和工程师投身于推荐算法和技术的 研究与应用中,很多优秀的方法被提出,很多技术难题被攻克。在今天的互联网应用中,越来越多“聪明”的推荐系统被开发出来,并被广大用户信赖和使用。



图片说明

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

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

  数据是一切推荐系统的基础。良好的推荐效果一定是来自于丰富而准确的数据。这些数据既包括了用户(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%的样本进行后续推荐挖掘,不仅成功提高了推荐精度,而且大大减少了运算量。 所以充分利用各类显式和隐式数据,并做好数据的预处理,保证输入数据的质量,是第一个关键点。

  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)等,这方面历次推荐竞赛中有很多相关文章,可以看到为了提升推荐效果,将不同算法的结果能够取长补短,各自发挥价值,是极为 有效的。

  

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

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

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

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

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

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

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

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

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

  

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

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

  6 缓解冷启动问题

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

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

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

  

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

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

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

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

  8 明确优化目标和评估手段

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

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

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

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

  

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

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

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

  10 大数据挖掘和性能优化

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

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

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

  总结

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

 

分享到:
评论

相关推荐

    智能车系统开发

    智能车系统开发是一个涵盖多个领域的综合项目,涉及到硬件设计、软件编程、传感器技术、自动控制理论以及数据分析等多个方面的知识。在这个项目中,我们通常会利用微型计算机或微控制器作为核心处理器,结合各种...

    利用ChatGPT构建智能电子商务对话系统的关键要素.docx

    通过上述提到的五个关键要素,可以开发出一个能够提供出色用户体验,有效推动销售增长的智能对话系统。这种系统不仅能提高客户满意度,还能加强企业在市场中的竞争力,助力其在激烈的市场竞争中获得领先地位。随着...

    城市智能水网系统解析与关键支撑技术.pdf

    关键技术在城市智能水网的实施中起着决定性作用,包括但不限于: 1. 数据采集与感知技术:通过传感器网络实时监控水质、水量和压力等参数。 2. 大数据分析与云计算:处理海量数据,预测和分析水需求、供应状况,...

    煤层气井抽油机工况智能预测系统开发.pdf

    在智能预测系统中,通过解析黏滞带阻尼的波动方程,实现从井示功图向泵示功图的转换,提高了故障诊断的准确性。 在智能预测系统中,实际应用的示功图原始数据需要经过预处理,包括数据标准化、网格化和等高线赋值等...

    智能车开发技术解析-从智能驾驶到车载智能计算平台

    使用场景及目标:适用于智能车研发项目前期策划、技术调研与产品设计等环节,帮助开发者深入理解智能车开发的关键要素和发展趋势。 其他说明:随着智能科技的进步与市场需求的增长,文中提出的技术和理念对于推动...

    智能车开发技术的详细解析

    智能车开发技术是现代汽车行业的重要研究领域,涵盖了自动驾驶、智能交通、车辆电子系统等多个方面。在本课程中,我们将深入探讨这些关键技术,并提供详细的解析。以下是对这些关键知识点的详细阐述: 1. 自动驾驶...

    基于Pro_E车轮智能设计系统开发.pdf

    综上所述,本文深入解析了基于Pro/E的车轮智能设计系统开发的整个过程,包括智能设计的原理、CLIPS在构建专家系统中的应用,以及如何与Pro/E软件进行有效集成。这一系列的技术集成,实现了一个高效率、高精度的车轮...

    智能浇花系统_智能家居物联网开发PCB设计方案.rar

    标题中的“智能浇花系统”是指一种利用现代科技手段实现自动化浇花的设备,它结合了物联网(IoT)技术和智能家居的理念,旨在提高植物养护的效率和便利性。物联网是互联网的一个扩展,允许物理设备通过传感器和通信...

    施工图BIM智能审查系统电气条文筛选与拆解方法.pdf

    【系统开发】开发施工图BIM智能审查系统需要考虑的关键因素包括:数据处理能力,系统需能高效处理大量BIM模型数据;智能算法,如机器学习和深度学习,用于理解和解析电气条文;以及用户界面设计,确保审查过程的便捷...

    智能家居系统APP设计源码

    智能家居系统APP设计源码是2018年广东省大学生电子设计竞赛的一等奖作品,它采用蓝牙技术和语音控制技术,构建了一种创新的智能家居控制系统。这个APP部分的设计源码揭示了如何将现代移动设备与家庭自动化设备相结合...

    基于XML的船舶防污染设备实操评估智能仿真系统开发.rar

    在船舶防污染设备实操评估智能仿真系统开发中,XML的应用至关重要。本系统通过XML来实现数据的结构化表示,以便于设备操作、评估结果和模拟环境等信息的有效管理和传递。 首先,XML的灵活性是其被选用的关键因素之...

    浅论智能配电系统结构及关键技术.pdf

    智能配电系统是智能电网的关键组成部分,它主要由内部系统和外部系统构成。内部系统包括通信系统、配电子系统和配电主站系统,是智能配电的核心部分。通信系统负责数据传输,配电子系统实现局部监控与自动化,而配电...

    32单片机智能家居系统设计_智能家居物联网开发PCB设计方案.rar

    《32位单片机在智能家居系统设计中的应用——物联网开发与PCB设计方案解析》 在当今科技飞速发展的时代,智能家居系统已经成为人们日常生活的重要组成部分,而32位单片机作为其核心控制元件,扮演着至关重要的角色...

    Ai智能客服系统在线客服源码 多语言 支持20国语言ai智能客服PHP源码

    在现代商业环境中,高效的客户服务是提升用户体验和企业竞争力的关键因素之一。随着人工智能技术的发展,AI智能客服系统已经成为许多企业的首选解决方案。本文将深入探讨一款名为“AI智能客服系统在线客服源码”的...

    嵌入式系统编程源代码解析光盘

    在“嵌入式系统编程源代码解析光盘”中,我们通常会找到一系列与该主题相关的资源,包括源代码示例、开发工具以及可能的文档资料。这些内容对于学习和理解嵌入式系统的底层工作原理极其宝贵。 首先,源代码是学习...

    智能家居系统C#上位机实现

    在智能家居系统中,C#因其强大的类库支持、高效性能和易读性而成为理想的开发语言。开发者可以利用.NET Framework或.NET Core框架,结合Windows Presentation Foundation (WPF)或Windows Forms来创建用户界面。 2. ...

    springboot+vue药品智能推荐系统的设计与实现.rar

    在当今的信息化时代,药品推荐系统的应用已经越来越广泛,它能够根据用户的历史购买记录、疾病情况、用药习惯等因素,智能地为用户提供个性化的药品推荐,提高医疗服务的效率和质量。本项目采用SpringBoot后端框架和...

    现代农业温室大棚智能掌握系统方案解析.docx

    在当今社会,随着科技的飞速发展,现代农业温室大棚智能掌握系统作为一种创新的农业管理模式,正逐渐成为推动传统农业向现代农业转变的关键力量。该系统的开发和应用,不仅响应了精准农业的号召,也体现了信息技术与...

    铁路连续梁全自动智能养护系统研究与应用解析.pdf

    它利用人工智能和智能系统技术,显著提升了养护工作的精确度和效率,对保障高速铁路的工程质量起到了关键作用。该系统不仅在铁路工程中有良好的应用前景,其技术原理和技术路径在其它基础设施建设中也有广泛的参考...

Global site tag (gtag.js) - Google Analytics