Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >大数据实时推荐-不只是统计

大数据实时推荐-不只是统计

作者头像
腾讯大数据
发布于 2018-01-26 11:11:44
发布于 2018-01-26 11:11:44
3.5K0
举报

随着大数据时代的来临,如何帮助用户从大量信息中迅速获得对自己有用的信息成为众多商家的重要任务,个性化推荐系统应运而生。个性化推荐系统以海量数据挖掘为基础,引导用户发现自己的信息需求,现已广泛应用于很多领域。传统的个性化推荐系统,采用定期对数据进行分析的做法来更新模型。由于是定期更新,推荐模型无法保持实时性,对用户当前的行为推荐结果可能不会非常精准。实时个性化推荐实时分析用户产生的数据,可以更准确地为用户进行推荐,同时根据实时的推荐结果进行反馈,更好地改进推荐模型。

腾讯大数据平台部和北京大学网络所崔斌教授研究组从2014年起开展大数据实时推荐研究,双方合作的论文连续两年在国际顶级会议SIGMOD2015和2016发表:TencentRec: Real-time Stream Recommendation in Practice SIGMOD 2015,Real-time Video Recommendation Exploration SIGMOD2016 。研究工作侧重解决实际应用中存在的问题,针对大数据实时推荐在精准、实时、海量等方面的挑战,提出了分布式可扩展的实时增量更新推荐算法,使推荐效果得到了明显的提升。所研究的方法已应用在包括视频、新闻等多个业务中,推荐效果得到显著提升。实时推荐系统现每天处理千亿条用户行为,支撑百亿级用户请求。

1. 大数据实时计算平台

腾讯大数据实时计算平台TRC[1]由实时数据接入TDBank、实时数据处理TDProcess、和分布式K-V存储TDEngine等部分组成,其中TDBank主要负责从业务侧接入实时数据,如用户行为数据、物品信息数据等;TDProcess基于Storm对实时流入的数据进行计算,并利用TDEngine存储计算结果,以供推荐引擎等使用。

TRC的主要框架如上图所示,有关TRC的文章已经有很多,这里不作详述,有兴趣的读者可以参考文章[1]获得详细描述。

2. 推荐算法实时化

基于Storm的实时计算能够针对海量流式数据进行有效的统计处理,然而流式计算机器学习算法方面有着天然的劣势,而要完成大数据实时推荐,只是实时统计显然是不够的,我们希望能实现推荐算法的实时化更新计算。

流式实时计算在机器学习方面的局限性主要表现在两方面:首先,由于数据是以流的形式进入Storm平台计算,在任何时刻,我们都只有目前流入的数据,而没有传统的全局数据概念,而在全局数据上进行迭代计算正是许多机器学习算法需要的;其次,Storm平台是计算数据易失的,在海量数据背景下,如何保证模型的有效存储及更新维护成为一个挑战。

对于上述第二点不足,我们使用了TDE作为解决方案,TDE作为一个高容错、高可用性的分布式K-V存储,很好的满足了我们对计算数据的存储需求。而对于第一点不足,我们通过精细的设计,将原始的离线计算转化为增量计算,并实现了几类经典算法:

  • CF算法:协同过滤算法,根据当前时间用户对物品的行为,实时更新物品间的共现数据和用户的兴趣分布数据,以计算物品间和用户间的相似度,进行基于物品或用户的协同推荐。
  • CB算法:通过分析用户的实时行为数据,更新计算用户和不同物品间的内容相似度,以对用户进行推荐。
  • Hot算法:通过接收所有用户的实时行为数据,实时更新物品的热度,分析得到当前的热点物品,如实时热点新闻等,以对用户进行实时的推荐。
  • MF算法:协同过滤矩阵分解算法,根据用户对物品的行为评分矩阵,将矩阵分解为用户和物品的特征向量,以预测用户对物品的喜好,来进行推荐。
  • 实现框架

下图为基于Storm实现的框架图,系统可以分为五层,数据接入层,数据预处理层,算法处理层,商品信息补充层,和存储层。数据接入层负责接收数据,预处理层负责根据历史数据对数据进行补全或者过滤等。算法处理层,是系统的主体部分,负责对数据进行分析处理,实现相关推荐算法的计算,将算法结果传入下一层。商品信息补充层负责对算法结果进行商品信息补全,这里补全是为了后续与离线模型结合或向用户推荐时,进一步对推荐结果做筛选的。最后一层是存储层,负责将结果存入存储部分,以供使用。

数据接入层

数据接入层负责接入数据,并且做简单的检查,对应TdbankSpout。通用推荐平台接收的数据共有五类,包括类别数据,行为权重数据,商品属性,用户属性,以及用户行为数据。

类别数据:是各个商品的类别的描述和等级,用于基础数据统计

行为权重数据:各个行为的权重,用于基础数据统计

商品属性:各个商品的基本属性,基础数据统计

用户属性:用户的基本属性,基础数据统计

用户行为数据:记录了用户的行为,是系统主要要分析的数据。

数据预处理层

包括两个部分,一个是基础信息构建,对应的bolt是BaseInfoBolt,一个是对用户行为数据进行预处理,对应的是PretreatmentBolt。基础信息构建接受类别、行为权重、商品属性和用户属性四种数据,并存入相应的table。预处理bolt接受用户行为数据,根据用户群信息和历史数据对用户行为记录进行补全或者过滤等。

算法处理层

算法处理层是系统的主体部分,又可以分为数据统计部分和算法计算部分。数据统计部分包括用户详细信息统计,最近访问商品统计,人群行为数据统计,人群商品共现数据统计,场景Ctr统计等。

算法计算部分实现了CF,MF,Hot,CB等算法。这里对算法进行描述。

商品信息补全层

商品信息补充层负责对算法结果进行商品信息补全,这里补全是为了后续与离线模型结合或向用户推荐时,根据商品信息来对算法推荐结果进行筛选后对相应用户进行推荐,比如,根据商品价格和离线模型分析的用户财富层次等对推荐结果进行筛选,有些商品是vip免费的,可以对vip用户推荐,而对普通用户则要慎重考虑。

存储层

存储层是系统的最后一层,负责将推荐结果存入tde,tde是腾讯构建的一个内存k-v存储,对用户进行在线推荐时,从tde中取出推荐结果,与离线模型结合,对推荐结果进一步处理后推荐给用户。

2.2 实现优化策略

针对实现过程中遇到的问题和挑战,我们提出了几点优化策略以优化资源使用、提升效果。

  • 分群计算:在实际计算过程中,我们根据不同的用户群体对数据进行了划分,并在划分数据集上进行计算。用户群体可根据用户年龄、性别等进行划分,也可根据其他信息如职业、活跃度等进行划分。由于不同群体内的用户行为模式可能不同,在经过划分的数据集上进行计算,可以得到更准确的用户行为模式。
  • 滑动窗口:为了保证数据模型的实时性,某些情况下需要对历史数据进行“遗忘”,即只使用最近一段时间的数据来进行计算。为此,我们实现了滑动窗口,对于某个时间单位,我们维护近n个时间窗口的数据信息,这些窗口会实时滑动,丢掉最远的数据,保留最近的实时数据信息用于计算。
  • 局部集成:为了有效维护计算数据,我们使用了TDE作为数据外部存储,而在计算过程中与TDE的交互成为了计算开销不可忽视的一部分。为了减少与TDE的交互,降低资源使用,我们使用了局部集成策略,根据不同的计算特点,将数据先在worker内部做集成,然后再将局部集成结果合并到TDE。实践证明,这一策略有效降低了与TDE的交互,减少了资源使用。
  • 多层Hash:在计算过程中,会出现有多个worker需要写同一个Key-Value值得到情况,称之为写冲突,为了保证TDE的高可用性,我们使用了多层Hash策略来解决写冲突问题,减小了TDE在数据一致性上的负担。通过多层Hash策略,对同一个key的写操作将只发生在同一个worker上。
  • 实时可扩展item-based CF

基于物品的协同过滤推荐[2](item-based CF)是亚马逊于2003年公布的推荐算法,由于其推荐效果较好且易于实现等特点,在工业界得到了广泛应用。这里我们以item-basedCF算法为例,解释实时推荐算法的具体实现[3],有关其他算法的具体描述可参考论文[3]和[4]。

3.1 原始Item-basedCF

Item-based CF的基本思想是认为用户会喜欢和他以前所喜欢的物品相似的物品,其计算分为相似物品计算和用户喜好预测两部分,相似物品计算是整个算法的关键部分,用户喜好预测根据物品相似度加权预测用户对新物品的评分。

3.2 实时item-basedCF

在传统的推荐算法中,用户对物品的喜好评分由用户打分决定,而现实世界中,用户对物品的打分数据较少,大部分数据是用户行为数据,如浏览、点击等,这些用户行为具有不确定性,比如,用户点击一个物品详情页后关闭,可能表示用户喜欢该物品因为用户点击了详情页,也可能表示用户不喜欢该物品因为用户又关闭了详情页。这种情况下,我们只能从用户行为数据中去猜测用户的喜好。

为了降低对用户行为数据的错误理解造成的损失,我们对原始item-basedCF算法进行了改进。具体来说,我们为每个用户行为类型设置了评分权重,衡量不同行为表示的用户喜好的可靠性,如,对点击行为我们设定其评分权重为一分,而购买行为三分,因为用户的购买比点击更有可能说明用户喜欢该物品。对于一个物品,用户可能有多种行为,比如点击、购买、评论等,这时我们取权重最高的用户行为评分作为该用户对物品的喜好。

我们定义了用户对两个物品的共同评分用于计算物品相似度,如下:

通过将物品的共同评分设定为两个物品评分中较低的那个,我们限定了对行为错误估计的损失为两者的较小值。相应的,两个物品的相似度计算如下:

为了实现流式实时计算,实时更新物品的相似度,我们将上式计算分为了三部分,如下:

其中, ,

3.3 实时剪枝策略

在实际计算过程中,我们发现,由于数据量太大,用户的某一个行为会带来大量的物品需要重新计算。具体来说,我们一般认为用户在某一时间段中交互的物品相互之间相关,即可能相似,这个时间段可能是一天或者一个月,那么一个用户行为带来的物品评分更新,可能会造成数十甚至数百个物品对的相似度需要重新计算,而这些物品对很多可能是不那么相似的,即不会出现在用于喜好预测中的物品的邻居集

中,对这些物品对的计算无疑是一种资源浪费。

4 总结

随着近年来个性化服务的发展,推荐系统在实际应用中的价值也得到越来越多的认可,大数据实时推荐在推荐效果上的优秀表现,以及其巨大的发展空间,使其获得很多的关注。大数据实时推荐仍然有许多值得探索的地方,如实时矩阵分解、实时LR、实时深度学习等在线学习算法。

[1]“腾讯实时计算平台(TRC)系列之一:初识TRC”

[2]G. Linden, B. Smith, and J. York. Amazon.com recommendations: Item-to-itemcollaborative filtering. In IEEEInternet Computing, 7(1):76–80, Jan. 2003

[3] Yanxiang Huang, Bin Cui, Wenyu Zhang, Jie Jiang,and Ying Xu. TencentRec: Real-time Stream Recommendation in Practice. [C]//Procof the 2015 ACM SIGMOD Conference. ACM, 2015: 227-238

[4]Yanxiang Huang, Bin Cui, Jie Jiang, Kunqian Hong, Wenyu Zhang, Yiran Xie.Real-time video recommendation. In SIGMOD 2016

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2016-05-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 腾讯大数据 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
JStorm使用总结
JStorm 是一个类似Hadoop MapReduce的系统, 用户按照指定的接口实现一个任务,然后将这个任务递交给JStorm系统,JStorm将这个任务跑起来,并且按7 * 24小时运行起来,一旦中间一个Worker 发生意外故障, 调度器立即分配一个新的Worker替换这个失效的Worker。
全栈程序员站长
2022/11/04
4330
JStorm使用总结
腾讯大数据平台质量保障之道
引言: 大数据时代,业界各巨头都在投入重兵打造自己的大数据平台,分析挖掘蕴藏在数据金矿中的价值。在腾讯,数平承建了公司级大数据平台,我们的测试团队也有幸一起搭上了大数据的航母。这是一种机遇,更是一种挑战。因为大数据平台的技术复杂度、机器规模、容量、发展速度等都远非传统的后台系统可比,以前积累的测试方法和建设的工具平台很多并不适用于大数据测试,业界也没有很成熟的方法可以借鉴。这就需要我们在测试思路和方法上主动探索、大胆创新,过程中难免有弯路和挫折,但我们的成长和收获更多。 本文旨在介绍测试团队
腾讯大数据
2018/01/26
1.4K0
推荐算法概述
随着互联网发展,各类信息越来越多,如何进行有效的信息获取及展示成为用户和平台共同关注的问题,而有效的推荐可帮我们进行信息过滤,成为解决这项问题的重要手段。
三猫
2020/04/07
1.1K0
推荐算法概述
推荐系统--完整的架构设计和算法(协同过滤、隐语义)
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
mantch
2019/09/18
2.1K0
推荐系统--完整的架构设计和算法(协同过滤、隐语义)
超详细丨完整的【推荐系统】架构设计
本文我们将从架构设计的角度回顾和讨论推荐系统的一些核心算法模块,重点从离线层、近线层和在线层三个架构层面讨论这些算法。
Ai学习的老章
2020/09/22
2.1K0
超详细丨完整的【推荐系统】架构设计
学姐问我推荐系统是怎么做的?我用23张图带她搞懂!
做广告业务1年多时间了,但是平时的工作主要和广告工程有关,核心的广告算法由 AI 部门支持,对我们而言可以说是「黑盒般」的存在,只需要对训练好的模型进行调用即可。
Guide哥
2020/09/27
8370
学姐问我推荐系统是怎么做的?我用23张图带她搞懂!
超详细丨完整的推荐系统架构设计
推荐系统是移动互联网时代非常成功的人工智能技术落地场景之一。 本文我们将从架构设计的角度回顾和讨论推荐系统的一些核心算法模块,重点从离线层、近线层和在线层三个架构层面讨论这些算法。 本文不会讲解一些具体推荐模块的架构设计,但无论什么推荐模块,其逻辑经过拆解后都可以映射到本文的架构体系中,做到触类旁通,举一反三。 ----- 本文选自《从零开始构建企业级推荐系统》一书,在庞杂的领域知识网格中点亮关键节点,为你的商业化落地开辟泛化通道。 ▼ 扫码获取本书详情 ▼ ---- 1 架构设计概述    架构设计是
博文视点Broadview
2023/05/19
1.9K0
超详细丨完整的推荐系统架构设计
大数据–商品推荐系统介绍(上)
为了解决信息过载和用户无明确需求的问题,找到用户感兴趣的物品,才有了个性化推荐系统。
全栈程序员站长
2022/07/21
2K0
大数据–商品推荐系统介绍(上)
百亿级通用推荐系统实践
吕慧伟
2016/10/29
7.9K0
百亿级通用推荐系统实践
基于协同过滤的推荐系统
原公式中,只考虑用户消费用一种商品,而没有考虑用户消费同一种商品处在不同时期。如果用户消费了物品i和物品j,如果消费时间间隔越近,那么这次“同现”的权重应该越大,间隔越远权重越小。在分子上除以间隔时间,惩罚时间间隔影响。
birdskyws
2018/11/22
1.9K0
Storm上的实时统计利器-easycount
背景 Storm是TRC(腾讯实时计算)平台的核心组件。与Hadoop不同,storm之上没有像hive,pig之类的解放应用开发人员效率的工具。开发原生的storm应用必须掌握storm的api,开发门槛高,调试困难,效率低下。 EasyCount(SQL on strom)是构建在storm之上的一套实时计算系统。应用开发人员只需通过配置定制化的脚本来完成业务逻辑的描述,能够快速实现各种实时统计需求,降低使用门槛,提升开发效率。 系统设计与实现 上图是EC系统的架构图。用于描述用户业务逻辑的SQL
腾讯大数据
2018/01/26
1.3K0
有关大数据的误区:数据统计 大数据
钛媒体注:大数据太火了,被广泛应用到各行各业,而近阶段又有着明显的过热迹象。大数据到底是一个营销词汇,还是一个方法论?本文作者老李正是一家大数据服务提供商的资深员工,他所做的项目就是针对不同行业进行大数据分析。他认为,关于大数据你首先必须有一个基本认识,那就是“大量的数据并非一定具有价值”。另外,数据统计并不等同于大数据,数据统计和大数据的区别就在于人工智能。长文慎入: 近两年来,“大数据”被广泛应用到各行各业,而近阶段又有着明显的过热迹象。从央视的春运迁徙图到姚晨看到微博数据的惊呼;从两会期间的两会大数据
小莹莹
2018/04/18
7220
有关大数据的误区:数据统计 大数据
达观数据中国电信分享实录:推荐技术介绍
导读:3月下旬,中国电信大数据技术团队邀请达观数据技术团队前去进行技术交流和互相学习。达观数据联合创始人文辉就“视频推荐技术”进行了详细的讲解,主要从达观推荐系统开发的概况、推荐系统的架构模块和达观推
达观数据
2018/03/30
8370
大数据Flink进阶(四):Flink应用场景以及其他实时计算框架对比
在实际生产的过程中,大量数据在不断地产生,例如金融交易数据、互联网订单数据、GPS定位数 据、传感器信号、移动终端产生的数据、通信信号数据等,以及我们熟悉的网络流量监控、服务器产生的日志数据,这些数据最大的共同点就是实时从不同的数据源中产生,然后再传输到下游的分析系统。针对这些数据类型主要包括实时智能推荐、复杂事件处理、实时欺诈检测、实时数仓与ETL类型、流数据分析类型、实时报表类型等实时业务场景,而Flink对于这些类型的场景都有着非常好的支持。
Lansonli
2023/03/18
3.3K0
大数据Flink进阶(四):Flink应用场景以及其他实时计算框架对比
基于大数据的推荐算法综述
致力于为机器学习、深度学习、数据挖掘等AI技术的“初学者”或者“爱好者”,进行基础理论与实战技能的介绍和学习。我们团队成员既有各个著名院校的在校硕士生、博士生,也有BAT一线资深工程师,我们会竭诚为您服务!
数据森麟
2019/10/17
3K0
推荐系统(Recommendation system )介绍[通俗易懂]
随着电子商务的发展,网络购物成为一种趋势,当你打开某个购物网站比如淘宝、京东的时候,会看到很多给你推荐的产品,你是否觉得这些推荐的产品都是你似曾相识或者正好需要的呢。这个就是现在电子商务里面的推荐系统,向客户提供商品建议和信息,模拟销售人员完成导购的过程。
全栈程序员站长
2022/09/20
3.1K0
推荐系统(Recommendation system )介绍[通俗易懂]
基于协同过滤(CF)算法的推荐系统
         随着计算机领域技术的高速发展,电子商务时代的普及,个性化的推荐系统深入生活应用的各个方面。个性化推荐算法是推荐系统中最核心的技术,在很大程度上决定了电子商务推荐系统性能的优劣。而协同过滤推荐是个性化推荐系统应用最为广泛的技术,协同过滤推荐主要分为基于用户的协同过滤推荐、基于项目的协同过滤推荐和基于模型的协同过滤推荐。
Flaneur
2020/03/25
5.1K0
CSDN专访腾讯蒋杰:深度揭秘腾讯大数据平台
腾讯业务产品线众多,拥有海量的活跃用户,每天线上产生的数据超乎想象,必然会成为数据大户,为了保证公司各业务产品能够使用更丰富优质的数据服务,腾讯的大数据平台做了那些工作?具备哪些能力?记者采访到了腾讯数据平台总经理蒋杰先生,他将给大家揭秘腾讯的大数据平台! 建设专业数据平台、持续提升处理能力、贴身满足业务需求、挖掘创造数据价值———蒋杰(腾讯大数据团队使命) CSDN: 首先还是请蒋总介绍一下自己和你的职业生涯。 蒋杰:我是蒋杰,目前是腾讯数据平台部的负责人。我的第一份工作其实并非在互联网行业,而是在传
腾讯大数据
2018/01/26
3.6K0
快点进来get“推荐系统常用的推荐算法”
一、推荐系统概述和常用评价指标 1.1 推荐系统的特点 在知乎搜了一下推荐系统,果真结果比较少,显得小众一些,然后大家对推荐系统普遍的观点是: (1)重要性UI>数据>算法,就是推荐系统中一味追求先
小莹莹
2018/04/25
1.2K0
快点进来get“推荐系统常用的推荐算法”
达观数据个性化推荐系统应用场景及架构实现
在当今DT时代,每天都在产生着海量的数据,移动互联网的兴起更是让我们体验到获取信息是如此的简单和方便。 同时,更多的选择也带来更多的困扰,面对层出不穷的信息和服务带来的困扰,使得个性推荐迅速崛起,并且大放异彩,在金融、电商、视频、资讯、直播、招聘、旅游等各个领域都能看到推荐系统的存在。 达观数据凭借多年在推荐系统方面的技术积累和优质的大数据服务,已经有数百家公司接入达观推荐系统,覆盖多个行业,实现企业经营业绩的大幅提升。本次分享结合达观数据个性化推荐引擎在各个行业的从业经验,围绕以下内容展开: 个性化
机器学习AI算法工程
2018/03/14
1.7K0
达观数据个性化推荐系统应用场景及架构实现
相关推荐
JStorm使用总结
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档