顺义青岛网站建设,做网站上时需要3d预览功能,株洲渌口区,郑州网站seo技术一. 背景 效果广告的主要特点之一是可量化#xff0c;即广告系统的所有业务指标都是可以计算并通过数字进行展示的。因此#xff0c;可以通过业务指标来表示广告系统的迭代效果。那如何在全量上线前确认迭代的结果呢#xff1f;通用的方法是采用AB实验#xff08;如图1即广告系统的所有业务指标都是可以计算并通过数字进行展示的。因此可以通过业务指标来表示广告系统的迭代效果。那如何在全量上线前确认迭代的结果呢通用的方法是采用AB实验如图1。所谓AB实验是指单个变量具有两个版本A和B的随机实验。在实际应用中是一种比较单个或多个变量多个版本的方法通常是通过测试受试者对多个版本的反应并确定多个版本中的哪个更有效。Google工程师在2000年进行了首次AB实验试图确定在其搜索引擎结果页上显示的最佳结果数。到了2011年Google进行了7,000多次不同的AB实验。现在很多公司使用“设计实验”的方法来制定营销决策期望在实验样本上可以得到积极的转化结果并且随着工具和专业知识在实验领域的发展AB实验已成为越来越普遍的一种做法。 图1 什么是AB实验 我们都知道机器学习在广告投放中的作用是举足轻重的广告收入的提升离不开算法模型的优化迭代因此算法模型的迭代也需要进行AB实验。除了算法模型的迭代之外工程中较大规模的重构和优化也需要AB实验来验证效果的有效性和正确性。此外目前在大部分应用中应用参数配置采用最多是单键值的配置方式这种配置方式的确满足了大部分配置的需要但是在结合业务需求的情况下使用起来可能会很乏力。 因此我们需要搭建一个平台Wedge来满足算法、工程在迭代过程中的实验需求并且满足在不同流量下应用参数配置的需求。 二. 方案设计 目标 Wedge平台的目标如下 支持各类算法实验场景可灵活支持后续的功能扩展。实验配置、使用、效果回收等全链路对使用者透明降低解释成本。提供不同流量下应用参数的配置降低参数解析成本。支持版本控制可快速回滚。提供简洁、易用的操作界面。设计思路 在《Overlapping Experiment Infrastructure: More, Better, Faster Experimentation》中Google给出了一套通用的分层实验解决方案。我们以此为蓝本结合美团点评效果广告的LBS特性针对不同的业务场景实现了更适合日常迭代的实验配置框架。目前该框架已在搜索广告投放系统上全量上线。 实验分类 基于Google分层实验平台结合实际需求进行了以下实验分类。 根据实验种类分类 水平实验类似于Overlapping Layer中的实验是属于同个“层”的实验实验是互斥的在同一“层”上实验可以理解为是同一种实验例如关键词“层”表示这一层的实验都是关键词相关的该层上存在实验H1和H2那么流量绝对不会同时命中H1和H2。垂直实验类似于Non-overlapping Layer中的实验分布于不同“层”之间实验是不互斥的例如在关键词“层”和CTR“层”上在相同的分桶上配置了实验V1和V2那么流量可以同时命中V1和V2。条件实验表示进入某“层”的实验需要满足某些条件水平实验和垂直实验都可以是条件实验。根据流量类别分类 这种分类主要了为了用户体验使平台在操作上更加的简单、易用 普通实验最基本的实验根据流量类别进行配置。引用实验流量分类是整个配置中心基础但实际上存在一些实验是跨流量了而引用实验则可以配置在不同的流量种类中。全局实验可以理解为特殊的引用实验全局实验在所有流量上都生效。架构图 图2为整体架构图比较便于大家理解我们可以看到整体架构分为四层 Web层提供平台UI负责应用参数配置、实验配置、实验效果查看以及其他。服务层提供权限控制、实验管理、拉取实验效果等功能。存储层主要是数据存储功能。业务层业务层结合SDK完成获取实验参数和获取应用参数的功能。 图2 架构图 三. 模型设计 1. 分流模型 实验模型 如图3所示整体模型分为以下几个部分 App表示一个应用不同的应用对应的实验配置完全不同首先从App上进行区分可以更加明确实验的归属。Scene表示某一类流量的集合例如搜索、美食筛选、到综筛选等在这些流量上配置的实验互不干扰。Layer表示某一层种实验的集合。例如可以将在matching上做的实验放入Matching Layer中。流量命中时依次进入每个Layer获取实验配置参数此时的Layer更像一个抽象概念与具体的业务或者逻辑相关。条件Layer是一种更加精细的流量控制方式表示某一流量的某个或者某几个参数在满足一定条件下才会进行实验。进一步说就是相同Scene下某一流量的参数A满足条件一时采用一种实验配置策略满足条件二时采用另一种实验配置策略那可以分为两层如图3所示的Layer_3和Layer_4。例如某流量需要在城市北京单独做实验这种情况下可以分为参数相同但是先决条件即城市互斥的两个Layer。此时的Layer在抽象的基础上更加的具体化。Exp表示具体实验包括实验的分桶、实验参数、是否为垂直流量等等。 图3 实验模型 水平、垂直分流模型 如图4所示水平、垂直分流模型分为以下两个部分 仅包含水平实验 最基础的实验需求全部实验独占一个Layer每个实验覆盖若干个桶例如图4中的Layer_1将流量分为10份包含三个实验这三个实验分别占用3、3、4份流量。同时包含水平、垂直实验一个Layer中同时包含垂直、水平两种类型的实验。例如图4中的Layer_2和Layer_3将最后的4份流量用来做垂直实验包含两个垂直实验分别是Exp_6和Exp_7。 图4 水平、垂直分流模型 2. 实验命中模型 实验命中模型是指当一个请求过来时返回全局统一的实验参数。所有的请求都会平均地落入每一个分桶中并且不同的Layer之间能够保证流量的正交。 名词解释 Hash优先级在实验命中过程中第一次Hash首先判断命中垂直流量如果没有命中则进行第二次Hash再判断水平流量。Hash因子目前美团侧一般情况下为uuid点评侧为dpid。垂直流量Hash串Hash因子scene_id。水平流量Hash串Hash因子scene_idlayer_idlayer_name。取模数在Hash过程中垂直流量按照总Bucket默认取值100取模水平流量按照总Bucket数减去垂直流量Bucket数取模。这样的命中模型能保证无论是垂直的Bucket还是水平的Bucket都是全局的1%。实例解析 以最复杂的流量分配为例如图5水平、垂直流量各占全局50%流量。 水平流量上包含两个实验Exp_1、Exp_2各占全局20%流量还有10%流量未分配实验垂直流量与水平流量相同。 图5 流量分配示例 典型实验命中如图6所示 当一个请求过来时命中顺序按照Hash优先级为先垂直流量后水平流量。首先利用垂直流量Hash串进行Hash并取模得到一个hashNum如果命中了5099就会认为命中了垂直流量直接返回V_Exp_1、V_Exp_2或者未命中。如果没有命中5099则认为命中了水平流量。再利用水平Hash因子进行Hash并取模得到一个hashNum根据配置直接返回Exp_1、Exp_2或者未命中。 图6 实验命中流程 应用参数模型 应用参数模型如图7所示分为两层结构 全局参数所有流量都能拿到的参数。同类型流量参数相同类型的流量能拿到的参数。 图7 应用参数模型 值得注意的是应用参数的两个层级以及之前提到的实验参数可能出现重复的情况在出现重复的情况下参数的优先级为实验参数同类型流量参数全局参数。 3. 回滚模型 很明显平台的分流模型是层次结构的所以在数据设计上也是每一层一个table。这样就会出现一个问题一般的参数配置回滚都是单值的回滚但是存在多个表的情况下没有办法这么简单地去回滚。 因此我们设计了如下的回滚模型 首先在配置发布时会将所有修改的表名、列名、列类型、列新旧值、修改类型存入表中。回滚时获取上次发布的所有修改的表名、列名、列类型、列新旧值、修改类型反向操作数据库达到回滚的目的。 图8 回滚模型 数据库表的设计如下 四. AB实验实时效果 实时效果指标包含实际CTR、预估CTR、请求PV、广告密度、有效曝光、RPS等由于很多数据分布在不同的日志中所以需要实时处理。 广告的打点一般分为请求PV打点、SPVServer PV打点、CPVClient PV曝光打点和CPV点击打点在所有打点中都会包含一个流量的requestId和命中的实验路径。根据requestId和命中的实验路径可以将所有的日志进行join得到一个request中需要的所有数据然后将数据存入Durid中。 计算各项效果指标就是在日志join后带有实验路径的数据上做OLAP。为了支持高效的实时查询平台采用时序数据库Druid作为底层存储。Druid作为分布式时序数据库提供了丰富的OLAP能力和强悍的性能。Druid将数据分为时间戳、维度和指标三个部分其中维度多用于过滤指标用于聚合和计算等。平台将数据中的实验路径同其他用于过滤的字段一同作为维度结合时间戳和指标字段完成指定标签的广告效果指标计算。 五. 总结 目前Wedge平台已经完全上线除了满足目标之外还带来了以下的成果 配合完成算法工程架构调整、更新流大版本升级。算法各方向之间可以任意做垂直实验满足算法灵活、快速迭代。具备配置审核功能保证配置发布的正确性。六. 作者简介 哲琪、仓魁、刘铮美团点评效果广告引擎团队工程师。 七. 招聘信息 美团点评效果广告引擎团队招募出色的后端开发工程师。我们希望您具有扎实的后端服务开发功底能够熟练使用Java或C开发语言致力于互联网技术领域。 有兴趣的同学欢迎投递简历至techmeituan.com邮件标题注明美团点评效果广告引擎团队