2018.11.12
前言DataCanvas布道师团队成员之
首席解决方案架构师
周 晓 凌
“如何为用户提供最佳体验的推荐系统”
今天,我们探讨一个实时营销推荐系统中的难题:如何为用户提供最佳体验的推荐系统,并且系统能够支持新推荐方法的快速尝试。
实时推荐系统可以追溯到在线广告的竞价阶段,也就是我们一般称为实时竞价即RTB为核心的程序化交易,通过实时计算与海量数据离线计算能力为特点目标客户投放营销广告。
而近几年来实时流式计算能力的门槛大大降低,使得我们可以快速搭建一套实时推荐系统。
这里,我们将提供一个实时推荐系统的软件架构思路,同时讨论解决上述难题所需要面对的挑战。
实时推荐系统的整体架构图:
整体系统架构图可以分为在线计算和离线计算两部分。
在线计算由于是实时计算可以更好地响应用户最新的事件和交互(例如网页浏览、点击事件、停留时长等),但由于实时响应,这限制了可以采用算法的计算复杂性以及可处理的数据量。
离线计算对数据量和算法的计算复杂性限制较少,但是由于用户最新的交互数据没有合并利用,模型的准确度以及及时性得不到保证。
因此可以看到,实时推荐系统的关键问题之一是如何以无缝方式组合和管理在线和离线计算及其处理的不同类型的数据和事件。
此外,还有其他需要注意的问题:
• 如果仅依靠在线计算实时响应,当在某些情况下出现无法满足服务要求时,有没有快速回退机制?(例如:恢复到预先计算的结果或者采用预先计算的结果来满足要求)
• 新技术和新方法层出不穷,是否快速尝试新算法以支持创新?
• 如何支持事件进行更复杂的处理以支持更为丰富的业务场景?(例如:在线计算完成后缓存中间结果)
推荐系统的目标是提供个性化的营销推荐建议,并且可以根据用户的实时行为做出实时响应。实际的推荐结果可以直接从离线计算的列表中提供服务,也可以通过在线算法动态生成。
为了解决以上涉及的问题点,以及综合现实实践经验,我们的解决方案是使用两者的组合,大部分中间结果采用离线计算,通过在线计算对列表进行后处理来增加新鲜度和实时性,实现统一完备的实时推荐系统。
例如:推荐算法中的矩阵分解就比较适合混合在线/离线建模的方式(将计算耗时的近邻用户/商品矩阵的计算以离线方式预先计算并缓存,最新事件流完成实时更新推荐);无监督方法(例如聚类)离线计算获得聚类中心和聚类分组在线完成分配;静态标签离线计算,动态标签在线计算并推荐最终排序结果。
如下图的基于标签的实时推荐系统示意图:
另外,无论是在线还是离线计算,都需要考虑算法如何处理数据和事件。
在这里我们区分数据和事件,仅仅是强调针对不同数据处理的时延差异。我们将事件视为时间敏感信息(诸如会话,设备,日期或时间的上下文数据构成),需要尽可能少的延迟进行处理。另一方面,我们将数据定义为需要处理和存储供以后使用的信息,这部分对于延迟并不敏感。
针对不同数据有不同的存储和计算策略,都需要和具体应用场景和客户环境结合起来讨论。
比如在电商类环境中,除了传统的用户对用户、商品对商品的推荐,也需要追踪用户在电商客户端的搜索、浏览、加购、下单、付款等行为,提供基于行为的跨屏商品实时推荐,同时也帮助用户提升购物决策效率。
在内容类客户端,除了使用传统的文本聚类、主题发现、相似度计算以外,也会通过跟踪读者对内容的搜索、详情浏览、评论阅读与评论交互等行为,通过自然语言处理,图谱推理等技术实现内容推荐,实现连续的阅读以提升产品的使用时长与用户粘性。
DataCanvas RT实时计算平台,是一个流数据实时处理和分析平台,具备低时延(毫秒级)、高吞吐(单集群支持>10TB/日流量)、高性能(>40,000 TPS 保序场景/>160,000 TPS 非保序场景)等特性,能够提供风险监控、精准营销、实时预警与事中分析等多种应用场景的实时分析。
DataCanvas RT实时计算平台强大的数据分析处理能力,为企业提供面向未来的大数据技术和人工智能计算架构的支撑。平台全面考虑实际应用的业务场景与技术指标要求,将为企业未来的大数据技术提供高效可靠的基础设施。