陈一村,马尧,王新春,朱山风
互联网智能化发展是当前互联网科技发展的方向之一。基于用户的个人行为,将信息有针对性地推送给用户,实现个性化的服务,是智能互联网的重要体现。目前主流商城站点如Amazon、淘宝、当当等,都提供基于用户行为的个性化推荐或搜索。在电子商务领域,个性化服务不仅可以及时发现用户最佳购买冲动,提升用户的购买意愿;而且能够有效地缩短用户的购买路径和时间,提升用户购买体验。此外,个性化搜索服务消除了传统营销方式对用户的无故骚扰,进一步增强用户体验。
对于交易网站,用户的购买选择往往包含着长期的兴趣和短期的偏好[1]。用户在网站上的操作不断地暗示着其意图。如果我们能积极感知这些意图,那么我们就可以及时地在用户下一次操作前做出有效的响应,从而为用户提供便捷服务。这样的时效性要求系统的计算框架能够以数据流的方式来运转。本文将针对大众点评网团购业务需求,建立基于Storm框架的实时数据分析平台,分析用户行为,并结合移动用户的位置信息,对团购业务的附近搜索提供实时反馈的个性化排序结果。最后,本文给出了大众点评网移动主客户端在团购附近搜索场景上的真实运行效果。结果显示基于Storm框架的实时数据分析平台对已有系统和 HDFS集群具有良好的兼容性,并且具有高效、实时、稳定等优点;同时,对用户实时反馈的个性化分析能够显著提升团购附近搜索的性能。
随着信息化和互联网的急速发展,公司的日常运营经常会生成TB级别的数据,其来源囊括了互联网装置可以捕获的任何类型数据,包括网站、社交媒体、交易型商业数据以及其它商业环境中创建的数据。如何从如此海量的数据中发现其价值,是大数据时代亟需解决的问题。随着Google 2004年提出 GFS和 MapReduce[2],其后随之兴起的 Hadoop、Spark/Shark等框架和技术使得我们能够大规模且低成本地处理各种海量数据。然而它们设计的初衷都是为了处理静态数据,无法简单地转变成实时计算系统。考虑到数据的生成形式和产生速度,大规模的实时数据处理已经变得越来越重要,也成为了许多机构和公司需要面对的首要挑战。Google于2010年适时地推出可用于流式数据处理和交互式数据处理的Dremel系统。随后Twitter借助Nathan Marz 的Storm框架,实现了从海量的推文中提取所浮现的主题趋势[3]。与此同时,相关的企业和研究所也提出了很多基于自身业务特性的流处理框架,比如Yahoo创建的S4项目,应用于搜索引擎的“Cost-Per-Click”广告,能根据当前情景的上下文(用户偏好、地理位置、已发生的查询和点击等)来评估用户点击的可能性并实时做出调整;eBay针对自身作为电子商户和支付平台的特性,建立了JetStream系统,以处理海量的用户行为数据并实行24小时的运维监控[4]。本文将从Storm框架出发,重点讨论大众点评网如何利用Storm实现数据的实时分析平台,以及在个性化搜索上的应用。
本文重点涉及的大众点评网,是国内领先的餐饮、购物、休闲娱乐及生活服务等领域的商户信息、消费优惠以及发布消费评价的互动平台。截止2014年08月28日,大众点评网的手机用户已经超过1.5亿,月活跃用户达到1.3亿,来自移动端的流量占比超过80%。同时针对团购业务,日均有超过1500万的浏览用户及100万的购买用户,产生1.5亿条浏览记录和1.1亿元的交易额。本节将以此为基础,讨论如何基于Storm框架建立实时数据分析平台,分析用户行为,从而促进团购在线交易,最后给出平台和模型的测试框架。
从数据产生到消费流程,大众点评网的实时数据平台可分以下5个部分:
(1)数据源:非实时的历史数据和实时的日志数据,具体包括前端用户浏览行为数据(打点日志):客户端和浏览器数据,后端服务器Nginx日志和MySQL数据库的变更消息(PUMA),同时还包括应用程序实时Swallow消息;
(2)传输和计算:利用Blackhole系统处理整合日志信息,然后将日志数据流、实时Swallow信息和PUMA数据库表更新信息作为输入数据流,用于Storm计算;
(3)持久化Cache:根据数据类型和使用场景的不同,Storm实时输出数据分为3部分存储,分为3部分储存:用于创建索引的数据存于HBase数据库,基于持久化和可靠性考虑的数据存于MySQL数据库,以及最后用于高并发性的实时数据存于Redis;
(4)数据服务:为了便于公司不同业务层的使用,建立了数据服务系统Data Service,提供了不同层次的数据服务调用接口;
(5)数据消费:实时系统提供了多样性的数据信息,具体到各个部门各个业务线又具有更加多样性的使用,例如搜索平台分析用户的行为数据,提供个性化搜索结果等。
实时数据平台各部分的具体组成和相互关系如图 1所示:
图1 大众点评网数据实时平台
以往基于T+1模式(即数据的生成和消费是分离的,存在一定时间差的数据分析,数据往往是先存储再分析最后消费,比如打点日志先存于文件,固定时间读取分析入库,最后用于消费。而基于Storm框架,本系统能够实时地处理相关源数据。比如日志,我们建立了用于日志传输的Log Server以及用于提取的Blackhole系统,以实时提取和清洗日志数据。就时效性而言,传统PC端和移动浏览器访问日志能够做到实时进系统,而客户端日志由于上传速率问题存在略微延迟(<16s)。就数据量而言,系统日均批量写入HDFS的数据超过3.2TB,系统实时传输超过1TB,后台平均数据延迟小于1s。目前,实时系统的Data Service已经成为大众点评网最大的Pigeon服务调用,日均调用超过10亿次,占点评全站 Pigeon调用的20%。
对于交易网站,用户的购买选择包含着长期的兴趣和短期的偏好[5],比如每天从用户中心(我的订单、我的收藏)出发购买的人数占列表页购买人数的1/7 ~1/6。对此,我们分析了团购用户长期到实时的行为意图,从时间维度大致可分为以下几部分:
(1)长期偏好:描述用户商圈偏好、消费能力、环境、口味偏好等相对固定的特征;
(2)近期意图:用户的购买、收藏、点击等行为,描述用户近期需求;
(3)当天行为:收集用户在移动终端、PC上的各种行为,进行多屏互动;
(4)实时意图:采集各种实时用户数据,用于判断用户实时意图及用户场景等。
针对最重要的用户行为:点击、购买和收藏,我们分析了具有历史点击、购买和收藏行为的用户的购买情况[6]。用户在购买某个团购后,后续一个月内再次购买该相同团单的占比高达20.08%,再次购买同商户团单的比例为23.4%;而收藏某个团单后,后续一个月内购买该团单可能性为32.5%;用户点击团单后一周内购买的可能性高达 20.61%。点击、购买和收藏用户的购买比率随时间的衰减趋势,如图2和图3所示:
图2 用户收藏/购买后购买30天衰减趋势
图3 用户点击后购买7天衰减趋势
从用户行为看,点击后购买的行为衰减最快,当天点击后购买的比例为16.18%,到第二天降为1.57%,其次是收藏,最后是购买。对于用户行为分析,更多考虑的是用户的实时意图。因此,在实际应用中主要考虑用户实时的点击行为,而收藏和重复购买则作为次要因素。下面给出了用户实时行为类型:
(1)团单点击数据:最直接的点击数据,包括用户在团购附近列表、商户列表、关键词列表的团单点击等;
(2)商户点击数据:用户点击相关商户等;
(3)导航点击数据:用户选择的品类、商圈、排序方式以及其他过滤条件等;
(4)用户输入的关键词:包括商户关键词、团购关键词以及关键词提示词等;
在实现过程中,我们将获取当前用户的点击数据和之前输入的关键词信息,用于索引召回和结果排序,同时考虑时间衰减和距离因素。
基于以上两点,我们在大众点评网主客户端团购附近搜索上进行了真实的交易测试。团购附近搜索,是指客户端团购板块中,在用户仅提供位置和类目信息的情况下,团购列表页所呈现的个性化团单结果。以往默认算法首先利用团单类目信息从索引中召回候选团单,然后基于用户与商户之间的距离进行结果排序,并未考虑用户以往的选择和当前的浏览点击。
对于搜索排序而言,研究人员已经提出了很多评价方式,比如基于精度的点击率、转化率,基于排序的NDCG、MAP等。本文中所有实验都是基于大众点评网客户端在线团单交易平台,故在此采用业务评价的两大核心指标:购买转化率和点击率。
购买转化率:调用搜索返回结果后有购买行为的比率;点击率:调用搜索返回结果后有点击行为的比率;
同时,考虑到在线交易平台日流量和日交易量的波动性,我们不能简单地纵向比较不同天的购买转化率和点击率。因此,我们将采取AB测试的策略,即把同时访问附近搜索团单列表页的用户按照客户端设备号(Device ID)或者用户唯一标识(User ID)切分排序算法,对50%的用户流量实施A版本,对剩余50%的用户流量实施B版本,其中A版本为对比实验的基准策略,B版本为需要测试的新策略。考虑到划分用户人群的差异性,还将考虑实验前后的总体走势。
我们在大众点网主客户端团购列表上进行了真实的交易测试,所有数据都基于真实的在线交易。
首先,我们在团购附近搜索进行了实时反馈的AB测试,其中A版本为原始的基于距离排序的结果,B版本为基于用户行为实时反馈的个性化排序结果。在11/6/2014上线基于实时数据反馈的用户个性化排序策略之后,新的排序策略表现出优异的性能,单日购买转化率和点击率上均超过了基准版本,如图4和图5所示:
图4 实时反馈个性化策略点击率对比
图5 实时反馈个性化策略转化率对比
同时为了排除交易随时间和用户群体不同而产生的波动性,即在不同天相同用户会呈现出不同的交易模式和偏好性,在稳定上线4天后,核心指标购买转化率总体由6.61%增长到7.03%,相对提升6.35%,点击率总体由48.3%增长到49.9%,相对提升3.31%。预计切换全流量后,日均可以多带来2.2K个购买用户,折算月度将多带来66K购买用户及6.6M交易额。
实时反馈策略在团购列表页取得重大提升效果之后,在原来前面基础上又对策略中涉及时间因素的成分进行了调优,细分了时间粒度,即在不同的时间粒度上具有不同的实时反馈分和相应权重,使得实时反馈策略具有随时间衰减的动态性。时间粒度调优策略上线后,转化率和点击率均具有稳定的提升,如图6和图7所示:
图6 实时反馈个性化策略(时间粒度)点击率对比
图7 实时反馈个性化策略(时间粒度)转化率对比
其中,A版本为初始化的实时反馈版本,B版本为时间粒度调优后版本。
由图6和图7可知,新算法上线后,单日点击率和转化率具有不同程度的提升,同时点击率表现明显,在实验的9天中全部胜出,转化率稳中有升,9天中6胜3平。最后,考虑总体增长趋势,转化率(7.1%->7.2%)和点击率(54.9%->55.3%)在原来提升的基础上均有所提升。预计切换全流量后,日均可多带来0.4K购买用户,月度可多带来1.2M交易额。
众所周知,团购业务是一种线上购买线下消费(Online to Offline)的交易模式,用户在购买团单时需要考虑到自身位置与消费商家的距离远近。同时,针对移动客户端用户,即时的位置会带了截然不同的消费偏好,尤其是用户的即时查询和消费,距离因素有可能成为主导因素。而单纯考虑时间粒度和用户行为,有可能造成一个离用户实时位置较远的团单因为用户的短期收藏点击行为而排在当前排序结果的首位。因此,在前面的优化基础上,为了保证用户体验,我们结合原有距离区间策略进行了调整,即近距离区间的团单一定会排在远距离区间的团单之前。调整策略上线后,结果如图8和图9所示:
图8 实时反馈个性化策略(距离区间)点击率对比
图9 实时反馈个性化策略(距离区间)转化率对比
其中,A版本为时间粒度调优后反馈版本,B版本为距离区间调优后的版本。
由图8和图9可知,新策略上线后,单日点击率和转化率均得到了稳定的提升。考虑总体增长趋势,购买转化率相对提升 3.17%(6.3%->6.5%),点击率相对提升 1.27%(47.2%->47.8%),预计切换全流量后,日均可多带来0.8K个购买用户,月度可多带来2.2M交易额。
基于Storm的实时数据平台对已有系统和HDFS集群具有良好的兼容性,整体运行高效、实时、稳定。从运行结果看,系统完全能够胜任TB级别数据的实时处理;对于前端的数据请求,系统后端能够做出毫秒级别的响应。用户的实时行为基本能够在秒级做出响应,就团购附近搜索而言,用户在点击/收藏/购买之后刷新页面后就能呈现实时反馈排序结果。
分析用户行为数据,我们证实了团购用户的购买选择包含着长期的兴趣和短期的偏好:以往的点击/收藏/购买能够说明用户近期的需求,同时实时行为又预示着当前的意图。实验证明基于用户行为实时反馈的个性化排序策略,即根据用户的实时点击、收藏、购买等行为反作用于排序结果,能够明显提升用户体验,团购附件搜索的购买转化率和点击率得到了明显的提升。预计切换全流量后,日均可以多带来3.4K个购买用户,折算月度将多带来100K购买用户及10M交易额。
将来,我们将进一步扩展实时数据平台的使用场景,包括传统的关键词搜索、个性化推荐及广告推送等[7]。对于用户行为实时反馈,我们将引入用户场景和消费模式,例如考虑是工作餐还是周末聚餐、是实时消费还是计划性消费等等。同时,对于现有实时反馈,我们将进一步细化用户行为,比如对于用户刚刚购买的团单需要在排序中降权;而对于用户的点击行为,我们要区分正负反馈,若用户的点击仅出于好奇,我们需要削弱负反馈的影响。
[1] 张如云,许波勇.基于网站用户行为的综合评价分析[J].微型电脑应用, 2014,30(9).
[2] Dean J, Ghemawat S. MapReduce: simplified data processing on large clusters[J].Communications of the ACM, 2008, 51(1):107-113.
[3] Jones M T. Process real-time big data with Twitter Storm[J]. IBM Technical Library, 2013.eBay用户行为数据流实时处理系统[R]. QCon全球软件开发大会,2014.
[4] 王继民,李雷,明子,等.基于日志挖掘的移动搜索用户行为研究综述[J].情报理论与实践,2014,7(3):134-139.
[5] 袁兴福,张鹏翼,刘洪莲,等.基于点击流的电商用户会话建模[J].图书情报工作,59(1):119-126.
[6] 李中良.基于 Web日志挖掘和关联规则的个性化推荐系统模型研究[D].重庆:西南大学,2014.