AICon 北京站 Keynote 亮点揭秘,想了解 Agent 智能体来就对了! 了解详情
写点什么

推荐系统衡量:ABtest 框架

  • 2019-06-24
  • 本文字数:4581 字

    阅读完需:约 15 分钟

推荐系统衡量:ABtest 框架

无法衡量就无法优化,对于互联网产品而言,不仅是推荐系统,整个 app 系统的更新迭代必然需要建立一套度量衡,来把控整个流程优化的方向。而 abtest 系统就是一个很好的进行变量控制和优化方向选取的工具,循环:衡量-发现-迭代-验证。所谓精细化迭代是一种建立在数据基础上的思维方式——用较少的成本获得较好的效果。无数据,不优化, 线上分流实验是进行推荐算法优化的必由之路。并且 abtest 不仅是推荐迭代的利器,他还可服务于所有需要逐步完善的产品迭代。有人说为什么需要 abtest ,为什么不能够前后进行实验比较;因为同时期测试的 abtest 非常有必要的原因是不同时间的测试无法说明 b 比 a 好,通常时间也是一个变量,比如电商的双十一等。


在网络分析中,A / B 测试(桶测试或分流测试)是一个随机实验,通常有两个变体,A 和 B 。利用控制变量法保持有单一变量的前提下,将 A 、B 数据进行对比,得出实验结论。AB 是一种科学的利用数据证明方案可行性的手段,一般在网站中广泛使用。 通过 abtest 系统对迭代方案进行实验, 并结合数据进行分析,反向再验证和驱动方案,是一个发现问题、提出假设、印证猜想、不断优化的过程。合适的推荐方法是要经过不断的实验去验证,验证的过程也是在校验数据,从而优化推荐系统策略,最终提升用户新增和留存。

1. 指标定义

在 abtest 前,我们需要梳理出我们关心的若干指标,并选择某个指标作为北极星指标,如点击率、转化率、浏览时长、gmv 、客单价等,未来讨论的推荐系统的相关优化也将围绕若干个目标进行。也有人将核心的指标成为北极星指标,北极星指标经常在增长黑客中被使用。来自微软 Bing 的例子:Bing 希望优化长期查询份额 ( 市场中的查询百分比 ) 和长期收入。短期内,通过展示更多广告很容易赚钱,但它可能会损害用户体验。所以其实短期和长期指标的定义也很重要,如何通过 abtest 平衡和评估长短期收益。

2. 了解几个事实

不是每个想法都是好的、大部分想法都是不好的;Many times, we have to tell people that their new beautiful baby is actually…ugly 。


根据微软官方发布的上万次 abtest 实验数据来看:


  1. 1/3 of ideas were positive ideas and statistically significant

  2. 1/3 of ideas were flat:no statistically significant difference

  3. 1/3 of ideas were negative and statistically significant

3. 实验管理平台

3.1 实验报告

实验报告需要对脏数据进行过滤,并做一定的效果平滑,效果波动告警。异常值会产生明显的偏差: 足以导致错误的统计结果。例:亚马逊上有围绕 100,000 名用户进行的 abtest 实验,其中 2% 的用户的客单价为 30 美元, 2% 的用户客单价是 1200 美元,有时 ( 很少 ) “用户”购买足以显着扭曲结果。

3.2 分流 & 分层策略

如果流量不进行分层、分流可能会导致流量饥饿,即实验一在进行中占用了全站的 80% 的流量,实验二就只能使用 20% 的流量。因此良好的分层、分流规则可以充分使用网站的流量。常见的分流策略有:Random – 随机分流,用于可变结果集,Partition By User – 按用户切分,同一用户永远看到同样结果,Partition By Category – 按分类切分,针对不同分类测试算法针对性。在分流的上层则会考虑分层,并且在互联网公司中应用广泛。


通常网站会利用分层和分流的机制保证本站的流量高可用,原因有以下几点:


1)网站的流量是有限的


2)实验的对象是多层的或同一层内互不干扰的。多层:例如网站不仅仅有 UI 层 ( 界面 ) ,通常还有算法层等;同一层内互不干扰:例如网站的推荐位有多个 ( 首页推荐位、商详页推荐位 ) 。


3)AB tests 的需求是大量的


注意点:幂等-均匀化-并行-互斥; 分层实验,促进流量的最大化利用。



规则 1. 正交、互斥


在介绍分层规则之前,先介绍一下正交和互斥的概念。


1)正交,如何理解正交?



例如:我们有 100 个兵乓球,随机拿出来 50 个染成蓝色,50 个染成白色,则我们有蓝色、白色兵乓球各 50 个,现在我们把这 100 个兵乓球重新放在袋子中摇匀,随机拿出 50 个兵乓球,那么这 50 个兵乓球颜色蓝色和白色各 25 。当然举这个例子并不是非常的恰当,因为样本太少了,此处举例只为说明正交的意义。


正交实验:每个独立实验为一层,层与层之间流量是正交的,一份流量穿越每层实验时,都会再次随机打散,且随机效果离散。


  1. 互斥,如何理解互斥?


例如:我们有 100 个兵乓球,每 25 个为一组,分别染成蓝、白、橘、绿。若 X 实验拿的是蓝色、白色则 Y 实验只能拿橘色和绿色,我们说 X 实验的和 Y 实验是互斥的。


互斥实验:实验在同一层拆分流量,且不论如何拆分,不同组的流量是不重叠的。


其中,分流及分层实验设计基于 Goolge 论文:


Overlapping Experiment Infrastructure : More, Better, Faster Experimentation


https://dl.acm.org/citation.cfm?id=1835810


流量从上往下流过分流模型:



1)规则详述:


域 1 和域 2 拆分流量,此时域 1 和域 2 是互斥的。


流量流过域 2 中的 B1 层、B2 层、B3 层时,B1 层、B2 层、B3 层的流量都是与域 2 的流量相等。此时 B1 层、B2 层、B3 层的流量是正交的。


扩展:流量流过域 2 中的 B1 层时,又把 B1 层分为了 B1-1 ,B1-2 ,B1-3 ,此时 B1-1 ,B1-2 ,B1-3 之间又是互斥的。


根据以上规则我们可以不断的在此模型中增加域、层,并且可以互相嵌套。这要与实际的业务相匹配,拆分过多的结构可能会把简单的业务复杂化,拆分过少的结构又可能不满足实际业务。


2)使用场景


例 1:B1 层、B2 层、B3 层可能分别为:UI 层、搜索结果层、广告结果层,这几层基本上是没有任何的业务关联度的,即使共用相同的流量 ( 流量正交 ) 也不会对实际的业务造成结果。但是如果不同层之间所进行的试验互相关联,如 B1 层是修改的一个页面的按钮文字颜色,B2 层是修改的按钮的颜色,当按钮文字颜色和按钮颜色一样时,该按钮已经是不可用的了。因此建议同一类型的实验在同一层内进行,并且需要考虑到不同实验互相的依赖。


例 2:域 1 的此种分流的意义在于,当我们做一个实验,并且希望其他任何实验都不能对我实验进行干扰,保证最后实验的可信度。

3.3 AA/AB 测试要点

1)候选策略+预测模型作为最小的考察单元


2)通过规则配置 ABtest:配置流量切分,候选策略及预测模型


3)重视抽样误差


4)关注时间周期效应

3.4 流程

1)随机分组 ( ABCDE… ) :A - 控制组,与线上一致;B - 测试组;C …


2)收集相关数据 ( 对决策有用的数据 )


3)数据分析,必须通过假设检验来确定差异不是来自于偶然,通过因果关系证明变化由测试桶的变化带来。

4. abtest 的那些技术

4.1 为什么灵敏度 ( p-value ) 很重要

p-value 即概率,反映某一事件发生的可能性大小,主要在 abest 中说明实验的提升的显著性,并且往往与假设检验相挂钩。统计学根据显著性检验方法所得到的 P 值,一般以 P < 0.05 为有统计学差异, P<0.01 为有显著统计学差异,P<0.001 为有极其显著的统计学差异。其含义是样本间的差异由抽样误差所致的概率小于 0.05 、0.01 、0.001 。实际上,P 值不能赋予数据任何重要性,只能说明某事件发生的几率。在实践中建议,运行 A / A 测试,并同时也关注相关指标及 p-value 。 A / A 测试中度量的 P-value 分布应该是统一的,进行 1,000 次 A / A 测试,并检查分布是否均匀,当我们得到异常信息时,则需要纠正一些事情。

4.2 假设检验

假设检验是推论统计中用于检验统计假设的一种方法。而“统计假设”是可通过观察一组随机变量的模型进行检验的科学假说。一旦能估计未知参数,就会希望根据结果对未知的真正参数值做出适当的推论。 统计上对参数的假设,就是对一个或多个参数的论述。而其中欲检验其正确性的为零假设 ( null hypothesis ) ,零假设通常由研究者决定,反映研究者对未知参数的看法。相对于零假设的其他有关参数之论述是备择假设 ( alternative hypothesis ),它通常反映了执行检定的研究者对参数可能数值的另一种 ( 对立的 ) 看法 ( 换句话说,备择假设通常才是研究者最想知道的 ) 。


常见假设检验的种类包括:t 检验,Z 检验,卡方检验,F 检验等等。

4.3 t-test、z-test、p-value、ci ( confidence interval )

1)T 检验,亦称 student t 检验 ( Student’s t test ) ,主要用于样本含量较小 ( 例如 n<30 ) ,总体标准差 σ 未知的正态分布数据。T 检验是用 t 分布理论来推论差异发生的概率,从而比较两个平均数的差异是否显著。


适用条件: 已知一个总体均数;可得到一个样本均数及该样本标准误; 样本来自正态或近似正态总体。


T 的公式:


T=(T-μ)/S/n 的平方根


若 T 值大于临界值,则拒绝原假设,否则不拒绝。


2)Z 检验是一般用于大样本 ( 即样本容量大于 30 ) 平均值差异性检验的方法。它是用标准正态分布的理论来推断差异发生的概率,从而比较两个平均数平均数的差异是否显著。 当已知标准差时,验证一组数的均值是否与某一期望值相等时,用 Z 检验。


Z 检验的步骤 适用条件:已知一个总体均数;可得到一个样本均数及该样本标准误; 样本来自正态或近似正态总体。


第一步:建立虚无假设,即先假定两个平均数之间没有显著差异,


第二步:计算统计量 Z 值,对于不同类型的问题选用不同的统计量计算方法.


如果检验一个样本平均数 ( x ) 与一个已知的总体平均数 ( μ0 ) 的差异是否显著。其 Z 值计算公式为:


Z=(X-μ)/S/n 的平方根


若 Z 值大于临界值,则认为为二者有差异,否则认为没差异。


注:事实上由于总体参数标准差未知,因此一般使用 T 检验。


3)p-value ,就是当原假设为真时,所得到的样本观察结果或更极端结果出现的概率。如果 p-value 很小,说明原假设情况的发生的概率很小,而如果出现了,根据小概率原理,我们就有理由拒绝原假设,p-value 越小,我们拒绝原假设的理由越充分。p-value 代表的是不接受原假设的最小的显著性水平,可以与选定的显著性水平直接比较。例如取 5% 的显著性水平,如果 p-value 大于 5% ,就接受原假设,否则不接受原假设。这样不用计算 t 值,不用查表。p-value 能直接跟显著性水平比较;而 t 值想要跟显著性水平比较,就得换算成 p-value ,或者将显著性水平换算成 t 值。在相同自由度下,查 t 表所得 t 统计量值越大,其尾端概率 p 越小,两者是此消彼长的关系,但不是直线型负相关。

作者介绍

姚凯飞,Club Factory 推荐算法负责人。硕士毕业于上海交通大学,前阿里推荐算法工程师,多年电商及视频推荐经验,目前在出海电商 Club Factory 负责推荐算法工作。


对作者感兴趣的小伙伴,欢迎点击文末阅读原文,与作者交流。

内推职位

算法 &开发工程师


工作地址:杭州市西湖区华星时代广场 B 座


内推邮箱:kaifeiyao@clubfactory.com

公司介绍

杭州嘉云数据科技有限公司成立于 2014 年,业务已覆盖欧美、中东、印度、东南亚 等地区。产品 Club Factory 在购物类 APP 应用下载量印度与阿联酋排名第一、菲律宾排名第二。核心技术团队来自 Facebook、阿里、网易、美 团、迅雷等大中型互联网公司,拥有斯坦福、卡耐基梅隆(CMU)、清华、浙大等院校的 计算机专业背景。2018 年 3 月完成 1 亿美金 C 轮融资,即将 D 轮,欢迎有意向的小伙伴赶紧上车。


本文来自 DataFun 社区


原文链接


https://mp.weixin.qq.com/s?__biz=MzU1NTMyOTI4Mw==&mid=2247491453&idx=1&sn=b42d2b3637c4c9cec0b9ff8ebd4a95e8&chksm=fbd4ad11cca32407ca43c4575fedf8359521305d8defd04c3c5445e9fc88929303e9590545ab&scene=27#wechat_redirect


2019-06-24 08:0016607

评论

发布
暂无评论
发现更多内容

聊聊Mybatis的类型转换的别名管理

急需上岸的小谢

11月月更

六年三次架构迭代,OceanBase 单机分布式一体化会是大势所趋吗?

OceanBase 数据库

数据库 oceanbase

从零开始学Java系列之Java是什么?它到底是个啥?

千锋IT教育

小间距LED显示屏既是机遇也是挑战

Dylan

LED显示屏 全彩LED显示屏 led显示屏厂家

阿里云与信通院邀您参与云原生安全用户调研

阿里巴巴云原生

阿里云 云原生

java培训程序员失业后的发展方向

小谷哥

不会还有人不知道,面试靠这1700道java面试八股文题库就能杀进大厂吧

程序知音

Java java面试 java架构 后端技术 Java面试八股文

ThreadPool的线程开启、线程等待、线程池的设置、定时功能

C++后台开发

线程 线程池 后端开发 C++开发 ThreadPool

进腾讯了!全靠着这两份近千页的Redis+Netty技术笔记

小小怪下士

Java redis 程序员 面试 Netty

宜昌市委书记王立调研数字经济发展并莅临升哲科技

SENSORO

java培训学习过程中需要什么方法?

小谷哥

商业智能BI工具如何选择?公司方面需学习具体方法

流量猫猫头

大数据

瓴羊Quick BI工具,为数据分析人员带来帮助

流量猫猫头

大数据

我从外包辞职了,10000小时后,走进字节跳动拿了offer

钟奕礼

Java java面试 java编程 程序员‘

如何通过前端培训成为合格的程序员

小谷哥

又一巅峰神作!14年工作经验大咖出品“JVM&G1 GC深入学习手册”

钟奕礼

Java java面试 java编程 程序员‘

从元宇宙、地产数字化到呼叫中心,华为云携手伙伴共创新价值

华为云开发者联盟

云计算 华为云 元宇宙

OceanBase 4.0 解读:分布式查询性能提升,我们是如何思考的?

OceanBase 数据库

数据库 oceanbase

高性能数据访问中间件 OBProxy(六):一文讲透数据路由

OceanBase 数据库

oceanbase

记一次TiDB数据库Insert语句执行报错的处理过程

TiDB 社区干货传送门

记录一次TiDB v5.2.3迁移到v6.1.0的过程

TiDB 社区干货传送门

迁移 实践案例

自制操作系统日记(8):变量显示

操作系统

Python太难懂?火山引擎数智平台这款产品可以了解一下

字节跳动数据平台

Python 大数据 数据分析

先到先得!阿里淘系内传322页Java并发编程核心讲义学习笔记

钟奕礼

Java java面试 java编程 程序员 java

前端培训学习,就业前景怎么样

小谷哥

多点DMALL × Apache Kyuubi:构建统一SQL Proxy探索实践

网易数帆

hadoop spark 开源 Apache Kyuubi

Python(文件操作)

浅辄

Python 文件 11月月更

linux高可用软件有哪些?重点推荐哪款?

行云管家

高可用 双机热备

新鲜出炉|基于深度学习的运维日志领域新进展

云智慧AIOps社区

人工智能 深度学习 日志分析 日志管理 运维管理

InterruptedException异常会对并发编程产生哪些影响?

冰河

并发编程 多线程 高并发 协程 异步编程

大数据培训学习方法有哪些

小谷哥

推荐系统衡量:ABtest 框架_软件工程_DataFunTalk_InfoQ精选文章