• 简中
    • 繁中
  • 注册
  • 查看作者
  • 9年70万次实验,字节跳动首次揭秘A/B测试

    “A/B测试唔一定是最好嘅评估方法。佢唔是万能嘅,但唔会A/B测试肯定是唔行嘅。” 

    4月20日,首个火山引擎技术开放日喺北京方恒时尚中心举办,字节跳动副总裁杨震原以《聊聊数据驱动和用A/B测试解决问题》为题,分享‌他对于A/B测试嘅理解。 

    杨震原话,A/B测试是字节跳动一项非常基础嘅工具,从公司成立之初就喺使用,支撑‌抖音、今日头条等产品嘅增长迭代。目前,字节跳动A/B测试每日新增1500+实验,服务于400多项大大小小嘅业务,累计做‌70多万次实验。这项工具已经实现产品化,通过火山引擎向企业客户开放。

    A/B测试广泛应用于字节跳动方方面面,包括产品命名、交互设计、推荐算法等。但杨震原表示,呢项工具也存喺好多应用局限,比如独立性、置信度、长短期等问题。 

    杨震原透露,抖音产品名,其实系综合‌A/B测试和人为判断嘅结果,“‘抖音’呢个名喺测试结果中排名第二。但大家觉得,呢个名更符合认知,更能体现佢嘅形态,所以还是选‌佢。” 

    9年70万次实验,字节跳动首次揭秘A/B测试

    以下为杨震原演讲全文:

    大家好,我叫杨震原。非常高兴喺火山引擎技术开放日上和大家交流分享,希望对大家有所帮助。

    字节跳动做‌好多产品,我哋希望技术团队对待自家产品好似对待客户一样。我哋唔仅有内部客户,像抖音、今日头条,也希望有更多外部客户,将我哋嘅技术能力输出,于是就有‌火山引擎品牌。火山引擎技术开放日都系呢个目的,希望将我哋嘅技术对外,跟更多朋友分享交流。当然,也有啲私心,希望我哋嘅产品能卖到更多地方去。 

    今日我哋聊嘅话题是“数据驱动和用A/B测试解决问题”。这里嘅关键词是“解决问题、数据驱动、A/B测试”。解决问题一定要有好嘅方法,每个人都想用更好嘅方法解决问题,呢涉及用乜嘢方法,达成乜嘢目标。“数据驱动”是我哋公司内非常睇重嘅一系列方法,“A/B测试”是“数据驱动”中嘅一个具体方法。 

    用户画像和使用时长唔是好嘅目标

    要想解决问题,第一个问题是:目标是乜嘢?好多人觉得:呢个好简单啊!目标嘛,今日想干一个乜嘢事,我就确定一个目标,接下来就是照住呢个目标去完成。但是,确认目标,以及呢个目标系咪可量化,其实系特别重要嘅。 

    我畀大家举几个例子。我大概2014年初来到字节跳动。刚来时,张一鸣说将我哋嘅推荐质量提升提升,想谂办法点样做改进。所以,当时我嘅目标就是提升今日头条产品嘅用户体验,将推荐做得更好。 

    好快我发现,呢方面其实已经有好多项目做紧嘎啦,其中有一个子方向嘅目标是“全面、精准嘅用户画像体系”。但喺我睇来,呢个目标其实有好多问题。 

    我哋嘅实际目标是“提升推荐嘅用户体验”。我哋有好多方法来达成目标,用户画像只是方法之一。佢是个子目标,唔是我哋要解决嘅目标,甚至可能都唔是重要嘅方法。就算假设呢个目标就是我哋嘅主要目标,我哋也还要评估佢系唔系可衡量嘅。 

    点样评估呢一点非常难,比如衡量用户画像系唔系好,好难量化。用户嘅实际兴趣是乜嘢,好难评估。问用户钟意唔钟意旅游,一般人都说钟意,但是推荐旅游相关文章睇唔睇?实际上好多人都唔睇。 

    因此,用户画像唔系一个好嘅目标。首先,呢个目标优先级唔一定高,其次,佢嘅评估非常难,噉就意味住,呢个目标好难指导我哋嘅具体工作。

    仲有一种常用目标,叫“使用时长”。A做‌一个算法,平均使用时长40分钟,B做嘅算法,平均使用时长45分钟,噉系唔系B就比A好?呢个听起来似乎好科学。 

    但是我要跟大家讲一个例子。大概喺2016年,有一个传统老牌外企,佢喺美国嘅PC端有一款产品是新闻推荐。呢个公司喺中国有一个研究所,其中一项工作是去提高新闻推荐质量,采用嘅评估标准是用户使用时长。对于用户喺平台上阅读‌几多时长,呢个研究所每个季度都有KPI,连续几年佢哋每年都可以完成目标,并且经常超额完成。但后来我跟佢哋聊嘅时候,呢个研究所快要解散嘎啦。 

    原来,虽然使用时长喺增加,但呢个产品嘅用户规模其实系唔好嘅,用户体验也唔够理想,成个产品嘅留存喺下降。我问佢哋,点解你们嘅时长一直喺涨,但是你们产品却唔行‌?对方讲:时长系喺涨,但时长增长有两种方式,一种是用户体验变好‌、用户睇嘅时间更长‌;仲有一种方式是用住好好嘅用户继续留下来嘎啦,而一啲时长好短嘅用户睇‌睇觉得呢个产品唔好,就走嘎啦。呢啲用户走‌以后,平均时长继续变长。于是就变成‌“唔断驱赶体验差嘅用户,平均时长却变长‌”咁样一个过程。 

    这是好可怕嘅,睇起来是个好好嘅目标,但却将产品做死嘎啦。可以预见,如果我哋只用使用时长作为目标嘅话,是有风险嘅。 

    那点样办呢?我哋也没有大招,只能是尽量将多个目标综合。既要考虑用户体验,都要考虑一啲客观指标,同时可能辅以一啲用户访谈嘅直观印象,最后综合去制定我哋嘅方向。

    9年70万次实验,字节跳动首次揭秘A/B测试

    好嘅目标层次合理、可衡量

    点样选一个合适嘅目标?我觉得至少有两个角度,需要去考虑。 

    第一个角度,目标层次合理性。

    乜嘢叫“层次合理性”?比如你系一家公司嘅首席技术官(CTO),CEO问你公司嘅技术目标是乜嘢,你说“我要让我哋嘅公司市值做得更大,原来估值5亿美元,10年之后估值50亿美元”。呢个目标好泛、好高层次,跟最终目标好接近。通常大家也唔会质疑讲呢个目标有错误。但是呢个目标就唔太能指导你嘅工作。CTO下面嘅总监、经理、工程师呢个季度该干乜嘢呢?呢个目标能有啲推导分解吗?好难。虽然目标层次好高,唔容易偏离,但系对具体工作好难有指导。 

    那我哋定非常具体嘅目标可以吗?比如像啱先嘅例子,以使用时长为目标。呢种时候,会有另一个问题:呢个目标好具体、好能指导工作,但是佢偏离‌点样办?仲有一个可能出现嘅问题是,呢个目标没有偏离,但唔可衡量,佢唔利于指导工作。 

    所以,应该选一个唔好太高、唔好太低嘅目标,并且定期衡量特别重要。 聊数据驱动思路时,当试图用数据驱动思路去细化目标时,有利于你仔细反思:我嘅目标系唔系呢个?我嘅目标能唔可以量化?佢会逼你将目标想得好清楚。 

    第二个角度,目标可衡量。 呢一点特别重要。佢跟数据驱动嘅理念互相帮助,定好目标,先能更好嘅应用数据驱动,当你用数据驱动嘅方法去做事时,佢就会push你嘅目标到底系唔系合理。比如你想‌想呢个目标:哦,之前嘅目标就定错嘎啦,怪唔得搞唔清楚。 

    9年70万次实验,字节跳动首次揭秘A/B测试

    乜嘢是靠谱嘅评估方法?

    当目标想清楚嘎啦,噉我哋就评估啦。通常我哋有边啲方法? 

    一是经验判断。 唔管乜嘢公司,每天都喺度唔停嘅用呢个方法,呢个方法非常靠谱嘅,但是有佢嘅问题。 

    二是非A/B测试嘅数据分析。

    三是A/B测试嘅数据分析。 我特别将A/B测试和非A/B测试区分‌一下,因为佢系一个更接近真实、更能够将握住本质嘅一个方法。相信好多朋友都认识因果推断,做精准嘅A/B测试能够将因果说得更清楚,所以是更有效嘅方法。 

    9年70万次实验,字节跳动首次揭秘A/B测试

    经验判断是乜嘢?本质上是就靠人,呢个方法是普遍采用嘅。举个例子,大家都知道我哋公司做紧短视频,点样评估质量好坏?好多时候都靠人去判断,如果你用客观指标判断佢,会有另外嘅风险,所以好多时候用人判断。喺好多公司,比如战略决策通常是人判断嘅,好难靠数据定你嘅战略方向,呢系一个好重要嘅方法。 

    但佢嘅问题喺于:执行层面好容易唔一致,尤其对一个好大嘅公司嚟讲,每天要决策嘅事好多,并唔是每个决策都由CEO或者高管来做,可能会分到公司好多团队好多部门,每个部门都有好多人,呢啲人喺佢哋嘅点上去做希望对公司正确嘅决策,但佢哋嘅意见有可能系唔一致嘅。而且每个人可能有每个人嘅偏好,呢是好难避免嘅。尤其公司比较大嘅时候,就会带来非常多风险,比如唔一致性和有偏性。 

    非A/B测试嘅数据分析。呢个主要想强调关联跟因果嘅问题,我哋来举个例子就好容易睇到。暑假前,运营团队做‌一波活动,声势非常浩大,到‌暑假开始嘅时候,发现用户嘅活跃度大幅上升,呢个提升是我哋嘅运营活动带来嘅吗?二者是有关联嘅,但是关联并唔代表因果。好明显,暑假就系一个因素,暑假带来嘅变化跟运营活动带来嘅变化,到底谁更大?呢个事好难归因嘅。每个人都觉得自己做嘅事有用,关联分析中往往就会带有偏见。

    我哋再举个有趣嘅例子,诺贝尔奖和巧克力消费量嘅关系图。图片显示,巧克力食得越多嘅国家,诺贝尔奖得主就越多。如果想改进中国嘅科技水平,多拿诺贝尔奖,我哋应该多食巧克力吗?这显然唔靠谱。可能会变胖,但好难拿到诺贝尔奖。 

    9年70万次实验,字节跳动首次揭秘A/B测试

    这可以说明一件事,呢两个事件有关联性,但是佢唔是因果性。从数据分析中得出结论,就会面临好多咁样嘅风险,佢会混淆关联性和因果性,并唔可以解决问题。 

    真正嘅完美解决方案是乜嘢?得靠平行宇宙嘎啦。家阵时时空是呢个状态,做‌一波A操作,比如一啲同事搞‌一波活动,时间退翻去,他没有做呢个事。我哋再回过头来睇这两个平行宇宙嘅差别是乜嘢,呢个差别就是呢个活动所带来嘅,呢个好好理解。但是我哋没办法做平行宇宙嘅实验,就只能做A/B测试嘎啦。 

    点样做A/B测试?当我哋想观测某个方面,比如说人群或者某类产品,就将人群和产品分成A、B两组,比如你嘅操作是发红包,或者改‌设计页面,又或者是做‌运营活动。除咗呢啲操作之外,第啲嘅分布完全一样。当然嘎啦,呢件事只能无限逼近,唔可以做到理论上完全一样,除非是平行宇宙。 

    A/B测试睇上去好像效率好低,非常复杂,要分组,仲要要睇因素系唔系剥离干净嘎啦。但是当你真正将一个事搞清楚以后,就可以一个台阶一个台阶往上走。 如果你搞唔清楚,做得好快,有可能今日上一个台阶,明天下一个台阶,后天上一个台阶,唔可以保证一直喺前进,呢是非常大嘅差别。 

    字节跳动嘅A/B测试实践

    早期有记载嘅A/B测试,系喺1747年,詹姆斯·林德治疗坏血病嘅临床实验。佢哋将患有坏血病嘅水手分成6组,每组2个人。喺6天嘅时间内,佢哋将大家安排同样嘅治疗室度,食同样嘅食物,尽量排除实验嘅干扰。呢个人群选择也好重要,我哋应该选择各种年龄段嘅,各种国家地区嘅。这里没有写,没有足够嘅数量,呢是佢唔严谨嘅地方。唯一嘅唔同是每组嘅治疗方案,食乜嘢嘢?柠檬、橘子、苹果汁、醋、海水等等。最后嘅实验结果是柠檬/橘子、苹果汁有用。 

    喺此之前有好多玄学,呢个病,有人说用呢个方法有用,用嗰个方法有用,有嘅是碰上嘎啦,有嘅是有效嘎啦。呢个实验虽然唔够严谨,仲要可以做得更好,但是佢真正确定‌乜嘢原因。当你非常确信呢个结论时,就可以继续深入研究,比如从呢个食物中分离出佢所必要嘅真正有效物质是乜嘢。喺好确定结论嘅基础上唔断演化,就能够往后走得好远。 

    知道‌A/B测试嘅源头后,而家说下字节跳动做嘅A/B测试实践。 

    9年70万次实验,字节跳动首次揭秘A/B测试

    2012年公司成立,噉时候我仲未来。听讲那会儿一鸣仲喺度自己写代码,已经开始做A/B测试。 

    我大概是2014年来嘅,发现公司已经非常重视这方面。这同我嘅理念非常像,我也喺继续推动呢件事。比如定目标,推动A/B测试嘅平台化,让佢更严谨,以及发现佢嘅问题,喺公司中更广泛地使用。 

    到2016年,已经变成一个内部广泛使用嘅平台嘎啦,叫Libra平台,佢有好多嘅功能。到2019年时,我哋已经唔只是内部平台嘎啦,正式立项,开始做对外平台,畀外部更多客户来用我哋嘅产品。 

    内部嚟讲,我哋用A/B测试确实好多,而家每天大概新增1500个实验,服务‌400多项业务,累计已经做‌70万次实验。

    9年70万次实验,字节跳动首次揭秘A/B测试

    应用喺边啲方面呢?产品命名、交互设计,比如改一个字体、一个弹窗、界面大小,都会做A/B测试。推荐算法就唔说嘎啦,从一鸣自己写代码开始,就一直做紧嘎啦。广告优化,呢是业界普遍做法。用户增长,都系咁样。市场活动,我哋做‌一小部分。内部基本上就是,能用A/B测试嘅都用。 

    A/B测试唔是万能嘅

    那A/B测试系唔系就一统天下‌呢?显然也唔是。A/B测试唔一定是最好嘅评估方法,佢唔是万能嘅,但是我觉得,唔会A/B测试肯定是唔行嘅。 

    点解说佢唔一定是最好嘅评估方法?我哋说说佢嘅一啲局限和问题。 

    首先是独立性嘅问题。 如果你真嘅想做A/B测试,就要对你嘅实验对象进行分组,分组之后,去做一个操作,观测结果。呢个分组要求两组是非常独立,除咗你嘅呢个操作之外,第啲部分都一样,至少是分布一样。但有时候这点并唔容易保证。 

    举个例子,网约车嘅司机分配策略,比如呢个网约车分配乜嘢司机?谁离你最近,我就分配,呢系一个策略。我哋还可以考虑价格,以及车型和时间等等,做别嘅策略。A同学做‌A策略,B同学做‌B策略,边个策略更好? 

    9年70万次实验,字节跳动首次揭秘A/B测试

    我哋可以来做个A/B实验,将用户分成两组,A组系一部分用户,用A策略,B组是另一部分用户,用B策略。但这是有好多问题嘅。如果只按用户来分,A策略和B策略嘅用户有可能都用同一个司机,A策略嘅用户将呢个司机订走嘎啦,B组嘅用户就订唔到呢个司机嘎啦。 

    也就是说,你最后观测到嘅统计指标,比如成单量、成单率,可能会有交叉影响,但具体是几多?单从呢个实验数据来讲,是睇唔出来嘅,也唔太容易分析,所以佢唔独立。交叉影响喺边?按用户分嘎啦,但是司机没有分开,两波用户有可能会联系到同一个司机,噉就叫“独立性问题”。 

    更严谨嘅实验点样做?应该将用户和司机都分开,将用户编个组,司机也编个组,用户司机A组,用户司机B组。当你发现你要观测嘅对象唔可以被严格切分嘅话,就需要考虑独立性嘅问题,呢时候你做嘅结论好可能系错嘅。 

    我哋再睇一个置信度嘅问题。 比如做搜索评估,我哋评估100个随机测试,将佢们分成A、B两个测试组,其中有22个变好嘎啦,有20个变差嘎啦,加起来是42个,剩下嘅58个两边一样。 

    请问,A组是比B组变好‌吗?有人说,系统变好10%,效果非常明显。你相信吗?你要相信嘅话就被蒙蔽嘎啦。 

    9年70万次实验,字节跳动首次揭秘A/B测试

    我这里写‌一个置信度,P值=0.75,呢是乜嘢意思?我哋通常认为,P值要小于0.05,呢个数据才是可信嘅,也就是A比B好。0.75嘅意思是“A比B好”碰巧出现嘅概率是75%,呢是唔可信嘅。我哋将呢个箱型图画出来,佢波动嘅范围如果按照95%嘅区间,从-0.1一直到0.147,是非常大嘅范围。将置信度画出来,发现呢个实验完全唔可以说明A比B好。结论就是:呢个实验唔可信,没有显著性,完全唔可以从呢个实验中得出A比B好嘅结论。 

    仲有长短期嘅影响,哩个都系一个常见嘅问题。 我举一个例子,比如说,我哋对每个商品会有评价,而家兴趣电商比较热,电商嘅推荐主要会考虑佢嘅评价,对于评价低嘅商品,我哋会做一啲控制和惩罚,让佢嘅推荐少一啲。如果加大惩罚力度,或者由唔惩罚变成惩罚,交易量会点样样变化? 

    9年70万次实验,字节跳动首次揭秘A/B测试

    如果做A/B实验,会发现加上呢个惩罚,佢嘅交易量是下降嘅。这好显然,商品本来可以买,而家唔让买嘎啦,噉佢嘅交易量肯定下降。如果你睇‌A/B测试,说我哋唔应该做,对呢啲差嘅产品就应该保持,噉你好可能就错嘎啦。 

    有时候,靠人嘅经验相信呢个事系对嘅,坚持做,你好可能会得到一个正确嘅答案。点解?我哋呢个实验唔再测3天或者1个礼拜,而是测1个月,你会发现,呢个交易量开始是下降嘅,但是慢慢持平嘎啦。随住时间再往前推移,佢嘅交易量就变好嘎啦。 

    可以想象,当你做‌一啲正确嘅事,短期可能会受一定损失,但是积累‌用户口碑,呢啲嘢周期都好长嘅,慢慢效果就体现出来嘎啦。A/B测试通常唔会做那么多时间。

    所以有时候要结合判断相信背后本质嘅嘢,可以用更长期嘅A/B测试验证佢,呢时候你会做出更正确嘅选择。如果相信短期,就掉到沟里嘎啦,得出错误嘅结论。 

    抖音嘅名是点样来嘅?

    最后再讲讲抖音取名嘅故事。好多人都好关心呢件事,甚至有人说抖音嘅名是找大师算过嘅。起名是可以做A/B测试嘅。当年,我哋做‌呢个短视频产品,有好多候选名,噉会儿已经有一啲产品demo嘎啦。 

    我哋就将呢个demo产品起成唔同嘅名,用唔同嘅logo,喺应用市场商店做A/B测试,同样嘅预算,同样嘅位置,呢能测出用户对呢个名嘅关心程度,吸引力程度,下载转化率等等,但其实都系非常短期嘅。 

    做完呢个测试之后,我哋得出‌一个排名,比如第一个是乜嘢,第二名是乜嘢。“抖音”是排名第二嘅,唔是最好嘅名。当时负责抖音嘅产品经理,讨论应该用边个名。 

    你去睇呢个分析和排名,睇嗰个过程,就会发现有一啲是符合你嘅感觉,有一啲唔是符合你嘅感觉,先知道,原来人对呢个嘢可能会咁想。所以A/B测试嘅过程,有时唔完全睇佢嘅结论,佢也会畀你带来好多认知,噉就是经验带来嘅偏差。A/B测试可以纠正呢啲偏差,但是佢也会有咁样或那样嘅问题,有时候你唔会完全采纳佢嘅结论。 

    我哋就无采纳排名第一嘅名,大家觉得,“抖音”长期来讲更符合认知,更能体现佢嘅形态,所以就选择‌“抖音”呢个排名第二嘅选项。 

    从呢个故事中可以睇到,真正想去做一个科学决策,是好难有完美方法嘅,没有一招鲜嘅方法,只有最合适嘅方法。充分地做A/B测试,呢系一个能够喺好大程度上补充信息嘅过程,能够消除好多偏见,能够带来好多客观嘅事实。但是佢也唔是完美嘅,需要补充第啲方法一齐来用。好似“抖音”起名嘅例子一样。喺公司中更广泛地使用A/B测试,我相信对提高成个公司嘅决策质量是好有帮助嘅。 

    今日就讲到这里,谢谢大家。 

    cantonese.live 足跡 粵字翻譯

    2021-04-21 21:35:30

  • 0
  • 0
  • 0
  • 169
  • 请登录之后再进行评论

    登录
  • 任务
  • 发布
  • 偏好设置
  • 单栏布局 侧栏位置: