速来报名!AICon北京站鸿蒙专场~ 了解详情
写点什么

推荐系统衡量: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:0016297

评论

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

如何创建良好的数据模型?

NocoBase

低代码 数据模型 无代码

Go语言手写本地 LRU 缓存

FunTester

CloudMounter for mac 一站式网盘管理工具

Rose

万界星空科技低代码云MES--快速实现数字化

万界星空科技

低代码平台 mes 云mes 万界星空科技 低代码云MES

CVPR 2021 ImageNet 无限制对抗攻击 TOP 4 (Advers) 方案分享

阿里云天池

【数梦工场】【智慧航空AI大赛】比赛分享

阿里云天池

科大讯飞lumie10和t20区别 选哪个好

妙龙

科大讯飞 学习机

mac上怎么卸载office应用程序

Rose

微信、支付宝、字节跨平台小程序集成到企业APP的兼容性策略

Geek_2305a8

一本小册子,咋就让IT人水灵灵地「由I变E」了?

白洞计划

AI

利用Python和API接口获取1688商品列表数据的方法

tbapi

1688 1688API 1688商品列表数据接口 关键词搜索1688接口

记一次 Python 应用开发频繁假死的问题

我再BUG界嘎嘎乱杀

Python 编程 后端 开发语言

人工智能丨打造垂直领域内容的问答机器人

测试人

软件测试

【参赛总结】第二届云原生编程挑战赛-冷热读写场景的RocketMQ存储系统设计 - Ninety Percent 战队

阿里云天池

IROS 2020 OCRTOC比赛总结 - Team PHAI Robotics

阿里云天池

深入探索:淘宝/天猫商品详情API返回值实战解析与应用

代码忍者

API 接口 API 测试

如何在Mac之间进行数据迁移?

Rose

一文让你知道为什么电力行业需要堡垒机

行云管家

电力 等保 堡垒机

不只是前端,后端、产品和测试也需要了解的浏览器知识(二)

京东科技开发者

NFS v3及v4协议区别

天翼云开发者社区

云计算 NFS

科大讯飞t30ultra和小度z30对比

妙龙

科大讯飞 学习机

科大讯飞t20怎么样 值得买吗

妙龙

科大讯飞 学习机

一本小册子,咋就让IT人水灵灵地「由I变E」了?

脑极体

AI

一款兼容微信抖音支付宝小程序的工具可以将小程序无缝迁移至自己的APP

Geek_2305a8

TDengine 签约协鑫鑫光,优化光伏数据管理

TDengine

打造垂直领域内容的问答机器人

霍格沃兹测试开发学社

量化合约/合约量化机器人系统开发稳定版/指南教程

V\TG【ch3nguang】

量化交易系统开发 合约量化

科大讯飞T30 UItra和小猿智能练习本S2对比选哪个好

妙龙

科大讯飞 学习机

俄罗斯加密货币挖矿合法化:重新定义全球挖矿行业的格局

区块链软件开发推广运营

dapp开发 区块链开发 链游开发 NFT开发 公链开发

机器学习算法: 朴素贝叶斯(Naive Bayes)

阿里云天池

nvme磁盘故障注入方法

天翼云开发者社区

nvme 磁盘 磁盘故障

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