背景

随着大数据和人工智能时代的到来,数据的驱动使得企业经营决策和精细化运营的效果指标的量化评估成为可能,企业的决策和运营也越来越离不开数据的支持。尤其是朝夕万变的互联网行业,产品创新和决策都需要快速得到用户反馈的数据去不断的迭代更新。 产品的新特性是否会受到用户的欢迎?新优化的模型和策略的线上效果如何?如何低成本的进行快速且量化的效果验证? 答案是A/B test实验

事实上,一个高效的A/B test在线实验平台已经成为各大互联网公司进行产品迭代和策略优化的标配工具。A/B测试是互联网公司实现数据驱动的基础,Microsoft、Google, Amazon、Facebook都在这方面做了大量的工作,腾讯、阿里、百度等国内主流互联网公司也纷纷各自构建了一套支持产品迭代和策略优化的A/B test在线实验平台。

达观数据的算法和工程团队每天都在持续不断地尝试各种算法模型的升级和策略优化,而这些算法模型和策略有的相互独立,有的相互影响。为了对这些模型和策略进行有效的量化效果评估,我们借鉴了谷歌的 ”Overlapping Experiment Infrastructure”中的思想搭建了达观数据在线分层实验平台。该实验平台可以支持同时运行多个并行实验,支持多种分流模式,支持自动灰度发布,支持实验效果的实时反馈和可视化(达观数据桂洪冠)。

分层实验模型

达观数据在线分层实验平台的设计借鉴了谷歌2010年在KDD上公布的分层实验框架,并在其基础上根据我们的应用特点进行了大量的裁剪。谷歌分层实验框架对实验空间进行了纵向横向两个维度的划分,其中纵向的划分是对应的概念,横向的划分对应的概念。是指流量的一个划分(指对一部分流量的独占),是指系统参数的一个子集,而实验是指在一个流量划分上,进行零个或多个参数的修改,并最后改变请求处理的过程。概念还是比较抽象,我们来看一个栗子:

如上图,流量先被分成两个域,左边是一个只有单一层的非重叠域,右边是一个三层的重叠域。在这种情况下,每个请求要么被分到非重叠域要么被分到重叠域。如果请求在非重叠域(上图左侧),那么请求最多在一个实验中(这个实验可以改变参数集合中的任意参数的值),如果请求在重叠域(上图右侧),那么请求可以通过三个实验层总共九个实验中。每个实验层可以根据不同的流量划分策略把流量分配到相应参数集的实验中。

下图是一个更具体的栗子,左侧是非重叠域,右侧分为3层,分别是UI层搜索结果层广告结果层

根据我们的实践经验,一般每一层划定一个批次实验,这个批次试验中有一个是基准实验,其它的属于对比实验,基准实验以及每个对比试验都对应一个试验参数集(达观数据桂洪冠)。

分层实验模型特性

分层实验模型具备如下一些特性:

特性1:纵向域划分,横向层划分。

特性2:相互关联的策略参数位于相同实验层,相互独立的策略参数位于不同实验层。

特性3:流量在不同实验层之间根据不同的分流策略被重新分配,不同层的实验流量是正交的。

特性4:不同实验层之间的实验相互独立。

特性5:模型的发布层(Launch Layers)可以实现实验流量的灰度发布直至全流量发布。

流量分配策略

分层实验模型常见的流量分配策略:

策略1:随机分配

优点是简单自然,缺点是用户的请求会在不同参数集的实验中“穿梭”,造成用户体验上的不一致性。

策略2:按照cookie或用户id取模进行分配

此种流量划分方式可以确保用户的请求被分配到固定的实验中,不会造成用户体验的不一致。

策略3:按照cookie+日期取模进行分配

这种方式是综合了cookie和日期的信息后再取模,采用这种方式的话,一个实验一天内圈定的cookie是固定的,但随着日期的变更会圈定不同的cookie。

策略4:按照业务字段进行分配

这种方式可以满足特定的实验流量要求,比如可以按照用户的地域来源取特定城市的用户流量,或者按照用户年龄取特定年龄段的用户流量。

策略5:hash查询串取模进行分配

这种方式使得相同的查询串请求可以分流到确定的实验上。

为了保证层与层之间实验流量的相互独立,上述基于取模的流量分配策略需要考虑实验所在层layerid的信息, 假设当前层有20个bucket分桶(实验参数),则当前流量在当前层的bucket = (f(cookieid, layerid) % 20),f是某个hash函数。

流量分流条件

在通过上述流量分配策略选择一部分流量后,分流条件(condition)通过仅分配特定条件的流量给实验或域,以达到更高效利用流量的目的。比如,一个实验仅仅改变来自日语的查询,那么实验配置中只抽取日语的流量。我们可以基于地区,语言,浏览器等信息设置流量抽样条件。有了分流条件,一个只使用“日语”流量的实验,和一个只使用英语流量的实验,可以使用相同的cookie取模。

灰度发布策略

灰度发布是一种常用的发布流量控制策略,是指在实验的过程中根据实验的效果逐步加大实验流量同时持续跟踪实验效果直至最终全量一个实验。分层实验模型是如何实现灰度发布策略的呢? 谷歌提出一个发布层的概念(Launch Layers)。在这个架构下,一个特性的评估和发布过程是类似如下过程的:

1)创建一个实验或是一组实验来评估特性。注意配置实验涉及指定分配类型和相关的分配参数(比如:cookie取模),分配条件,和特性相关的参数。

2)评估实验指标。根据实验结果,判断是否要进行新一轮的实验,即通过修改或创建新的实验,或甚至修改代码从根本上改变特性。

3)如果特性可以发布,就进入发布过程:创建一个新的发布层和发布层实验,逐步的放量这个实验,并最终删除发布完的发布层,然后将发布层实验的相关参数设为系统默认参数。

达观分层实验平台架构

达观分层实验平台主要由实验配置管理中心实验分析与展示中心以及在线服务系统三部分组成。

实验配置管理中心

实验人员可以在实验配置管理中心进行实验的创建启动暂停删除等操作。

实验创建:实验数据主要包括(但不限于)实验的名称(比如搜索Reranking实验)、实验的起始时间、实验owner、实验参数集、实验作用模块、流量分配等。其中实验起始时间定义了实验生效发生作用的时间范围,超过此时间实验自动结束并停止。实验参数集定义了需要测试的不同实验参数数据,每个实验参数对应实验的一个bucket分桶(比如rank_strategy=5, rank_strategy=6, rank_strategy=7分别对应实验的三个bucket)。每个实验都有一个唯一的实验ID。

实验流量分配:对实验选择流量划分策略(见前文介绍)。

实验启动:创建好的时间在达到实验设置的开始时间后自动启动,实验人员也可以对暂停的实验重新执行启动操作。

实验暂停:实验人员可以对执行中的实验执行暂停操作。

实验删除:实验人员可以删除已经停止的实验,正在执行的实验无法直接删除(需要先执行停止操作)

实验权限控制:实验的owner(创建者)对实验有启动、暂停、删除等权限,也即只能操作自己创建的实验。实验配置管理中心直接控制线上服务的模型和策略的执行,安全性就显得尤为重要。

实验持久化:实验的数据被存储到MySQL数据库中进行持久化。

实验分析与效果展示中心

实验分析和可视化效果展示是实验平台不可或缺的组成部分。在数据实时采集模块,实验ID以及实验参数数据(比如策略和模型参数)连同系统的业务日志数据一起被记录和采集。在这里可以实时查看到每个执行中实验(实验ID区分)的统计分析和效果对比数据,既可以对一个实验的不同参数集(实验bucket分桶)的结果数据进行横向对比(通常与基准实验作对比),也可以对实验基于时间维度的纵向效果作对比。

上图是达观数据推荐算法和某客户推荐算法时间维度纵向效果(点击率)对比。

在我们的实践中,通过对实验日志数据的实时采集和分析,可以实现对实验效果(比如CTR指标)进行准实时的对比分析和监控。如果发现实验(新算法策略)的效果指标出现异常,可以在实验配置管理中心及时调整实验参数或调整实验流程或停止实验(达观数据桂洪冠)。

在线服务系统(实验执行环境)

在线服务系统是实验执行的环境。在线服务系统加载了一个实验平台客户端组件,该组件主要有2个职责:

职责1:定时从数据库中同步实验数据信息

职责2:实验流量决策。对每个请求流量,根据实验的流量划分策略进行bucket分桶计算,获取对应bucket的实验参数数据(策略和模型参数)。请求携带被分配的实验参数数据流入线上服务模块。

各线上服务模块从请求中获取自己关心的实验参数数据进行相应的实验,并在记录日志时把实验ID和参数数据一同写入。

总结

本文以谷歌2010年发布的分层实验框架为参考,阐述了分层实验模型的域、层、实验等基本概念,进一步分析了分层模型的基本特性、实验流量划分策略、分流条件以及灰度发布方法等内容。然后,重点介绍了达观数据分层实验平台架构的实验配置中心、效果分析与展示中心、在线服务系统(实验执行环境)等主要模块,描述了从实验创建到实验执行再到实验结果分析的全过程。

达观数据分层实验平台同时运行着数十个面向不同客户的多个系统应用的策略和模型迭代优化实验,已经成为公司基础平台体系架构中非常重要的组成部分。

未来展望

未来我们希望把达观数据分层实验平台做成开放的一站式实验服务平台,把我们的平台实验能力输出给更多的客户和合作伙伴,大家基于这个平台相互学习合作共赢。

参考文献

1.Diane Tang, Ashish Agarwal, Deirdre O’Brien, Mike Meyer   Overlapping Experiment Infrastructure: More, Better, Faster Experimentation

2.阿里妈妈大规模在线分层实验实践http://www.infoq.com/cn/articles/alimama-large-scale-online-hierarchical-experiment/

关于作者

桂洪冠,达观数据联合创始人,中国计算机学会CCF会员,自然语言处理技术专家。在参与创办达观数据前,曾在腾讯文学、阿里巴巴、新浪微博等知名企业担任数据挖掘高级技术管理工作。桂洪冠在数据技术领域拥有6项国家发明专利,中国科学技术大学计算机硕士学位。在大数据架构与核心算法以及文本智能处理等领域有深厚的积累和丰富的实战经验。

如何省时省力验证模型效果?达观数据在线分层实验平台给你支招相关推荐

  1. 【分层实验框架】阿里妈妈大规模在线分层实验实践

    引言 在线服务系统的AB-test方法有很多种.搭建多个可服务集群,从物理上对流量进行隔离是比较常见的一种方式.这种方式应用于大型复杂的在线服务系统时,存在部署比较慢的问题.这种方式的典型架构如下图所 ...

  2. 点击模型:达观数据提升算法精度的利器

    在搜索.推荐.广告引擎中,系统会通过复杂算法生成一个最终的结果列表.用户在看到这个结果列表时,未必都会对排序满意,比如有时觉得排序的顺序有问题,或者发现一些不符合喜好的item.如果从算法层面来调优, ...

  3. 在线打包app平台,Android春招实习面试经验汇总

    免费在线制作App的无线应用开发工具集合 -追信魔盒成就全球最大的手机软件在线制作平台 不会编程?教你用开发工具制作高下载量的App! 现在很多站长,商家和个人都想自己开发优质的App,利用高下载量去 ...

  4. 在线判题系统(oj)效果分析图_在线代码编写平台开发分享

    计算机专业的大学生应该都了解acm比赛,这种通过使用oj(online judge)系统在线编程刷题,实时反馈学习排名的方式能很大程度激发学生的学习热情. oj学习排名界面 oj个人学习记录界面 只是 ...

  5. Restsharp获取微信小程序数据,返回错误,提示没权限。手机抓包和操作都有数据,如何破--请大神支招,可私聊

    我的代码: RestClient restClient= new RestClient(BaseUrl);             restClient.Timeout = 5000;         ...

  6. 达观数据:用好学习排序 (LTR) ,资讯信息流推荐效果翻倍

    序言 达观数据是一家基于文本语义理解为企业提供自动抽取.审核.纠错.推荐.搜索.写作等系统服务的人工智能企业,其中在推荐场景上我们也服务了很多客户企业,客户在要求推荐服务稳定.需求响应及时的基础上,对 ...

  7. 【TensorFlow】TensorFlow从浅入深系列之七 -- 教你使用验证数据集判断模型效果

    本文是<TensorFlow从浅入深>系列之第7篇 TensorFlow从浅入深系列之一 -- 教你如何设置学习率(指数衰减法) TensorFlow从浅入深系列之二 -- 教你通过思维导 ...

  8. kaggle电子商务数据在线零售商的实际交易数据分析

    背景 这是一个跨国数据集,其中包含2010年12月12日至2011年12月9日之间在英国注册的非商店在线零售的所有交易.该公司主要销售独特的全时礼品.许多客户该公司是批发商. 数据下载地址:https ...

  9. 【计算机毕业设计】015基于SpringBoot的在线视频教育平台的设计与实现

    一.系统截图(需要演示视频可以私聊) 摘  要 随着科学技术的飞速发展,各行各业都在努力与现代先进技术接轨,通过科技手段提高自身的优势:对于在线视频教育平台当然也不能排除在外,随着网络技术的不断成熟, ...

最新文章

  1. java使用正则表达为数字添加千位符的简单方法
  2. linux mk创建文件,Linux运维知识之Linux mkkickstart建立安装的组态文件命令详解
  3. Java当中TreeMap用法
  4. duilib自定义消息
  5. “约见”面试官系列之常见面试题第一篇说说promise(建议收藏)
  6. windows 2008 R2系统安装拨号v p n详细配置
  7. 基于java语言轻量级实时风控引擎
  8. 加入域时出现以下错误 登陆失败 该目标账户名称不正确_微信支付踩坑合集:微信小程序支付失败是什么原因?持续更新...
  9. Bzoj4011 [HNOI2015]落忆枫音
  10. FileUtils工具类学习
  11. 基于单片机设计的遥控数字音量控制D类功率放大器设计
  12. 优质短信api接口具备的特点
  13. 公司知识库的搭建步骤
  14. 【JS】跨域问题读写cookie的解决办法
  15. 磁力链接方式下载完全攻略
  16. CSharp 创建项目
  17. 程序员如何做到高效减脂、减肥
  18. sql2008 语句还原数据库
  19. 微博“超话”幻灭之后 AI内容生产能重新定义追星规则?
  20. 零点极点传递函数以及伯德图

热门文章

  1. 核心转储文件的设置和查看
  2. JScript js数组去重
  3. ai人工智能_当AI接手我们的三种情况时
  4. 每个大洲上的国家_700名员工和多个大洲:Alconost如何建立无办公室业务模式
  5. Centos 在VMware运行并通过UEFI引导启动安装方法
  6. 一个未完成的文字rpg打怪小游戏。。。(难得写点东西)
  7. Vue使用iview中menu菜单组件的大坑!
  8. 基于HTML5 Canvas的工控SCADA模拟飞机飞行
  9. 登录注册模块面试讲解思路
  10. 震动筛超声波探头换能器设计