【编者按】如果看过前FB工程师覃超的(《关于神秘的Growth Hacking,Facebook都做了什么?(中)》)的朋友应该对于里面Facebook首页和人人网首页改版的例子印象深刻。这里Facebook使用的一大法宝就是灰度发布和 A/B testing,让Facebook的日活达到了10亿用户。本文作者Fan,在美国卡耐基梅隆大学完成博士阶段学习,曾任职Facebook与Google Switzerland,专注于广告与推荐排序的研发。2015年底加入美图公司担任数据总监。文章来自Fan的线下数据交流会的分享,介绍了美拍是如何做好数据驱动的。
大家好!很高兴能有这个交流的机会。准备这次主题的时候,我想的是去了解大家对产品中的数据指标是否熟悉,以及在日常研发的过程中怎样与数据打交道。所以我针对我们的主打产品美拍做了一个关于数据的简短调研,今天也结合自己之前的工作经验讲讲这个调研的过程、结果和体会,希望能对大家有所帮助。
“Data-informed and data-driven”这个题目来自选择到Facebook工作之前交流时的一个问答。我的问题是 “有的公司是数据驱动的,有的公司是得益于创新的设计,那么对FB最重要的一个方面是什么?”回答的一部分谈到了数据,因为印象比较深,所以就借用过来——“不同的领域对待数据的方式各异,比如广告后台的迭代改进更加需要数据驱动,而开发一个全新的产品可能更多需要对数据有所感知,即是在产品方面有要个做什么的想法时通过数据来佐知我们的观点。
既然是要讲产品研发中的数据,我也就通过收集一些数据来让自己明了。
我关注的产品是美拍,因为它是我们最受欢迎的应用产品之一,不仅数据的种类丰富,总量也很大。除了用户注册、活跃、访问数和一些简单的交互,作为一个短视频分享的服务,美拍特有的数据就包括用户的上传、播放、搜索,对一个视频的点赞、评论、转发,以及用户和用户的交互,包括评论的回复、关注、私信等。美拍的用户可以分为明星、达人和众多普通的用户。用户也会根据自己的兴趣选择不同的频道。这里面有很多很丰富的数据,为了支持这些体验,数据部门的职责之一,就是通过个性化的推荐让用户更容易看到自己喜欢的视频和关注到感兴趣的发布者。
美拍的数据从一些基本的数字看起,比如每日、每周、每月的活跃用户数,每天的新增用户数和留存比。留存的定义是,如果今天新增的用户明天仍然用到了美拍,则计入今天的次日留存,类似的用户在未来一周内至少有一天活跃则计入今天的周留存。另外的数字包括播放总数和播放时长等。统计的总数可以来自客户端,或者包括客户端、移动端与非移动端的网页版的总数,来源是美图的统计后台以及第三方平台。
在准备好这些数字之前,我想到可以在自己不知道标准答案的时候找负责美拍的技术、产品、运营的同学做一个相关的调研。于是就准备了单页的问卷打印出来,到每人的工位旁打扰他们15分钟来做访谈,最后一共有17位同学参与。
在谈到调研结果前先谈下过程中的体会。
首先是数据收集的过程中要考虑到可行性与代价。比如在调研中问一些很细节的或者目前后台没有加入统计的数据指标,可能不会有信息量。在研发中类似的情况比如说在设计推荐和排序用到的特征时,优先级不仅取决于该特征可能产生的效果,也依赖于产生特征需要的数据能否在保证性能的前提下获得。
其次是关于测量方式,尤其是在有多个相关的指标时如何做选择,比如这次调研中的一个问题是平均每日用户对视频点赞的总数,如果换一个方式,每天的活跃用户的平均点赞数,由此推出的答案非常可能会与前一种问法有差异。类似的情况在技术实践中也时常遇到,比如测试性能的时候就不仅仅需要了解一个请求延迟时长的平均数,相应的百分位数p50, p95, p99都是常见的指标。
最后有一句话是“Done is better than perfect”,也就是说在一次访谈还没做之前去花时间纠结怎样把问卷设计的更完美,不如在过程中迭代改进。事实上访谈问卷经过前几次访谈后做了一次简化,很大提升了后面完成的效率。
下面是经过可视化处理的数据,每一行对应一个数据指标,每一列对应一份问卷。上面的颜色用来指示答案的准确程度,越接近真实值颜色越深。可以清楚的看出有一些指标的颜色更深,尤其是最下方的两排,分别对应每周和每天的活跃高峰期。大多数同学对这两个指标的了解都相当准确。
本段后的两排单独列出日、月活跃用户数两项指标。日活被了解的比月活更多。这可能是因为目前月活数通常是按照自然月统计,尽管它还可被定义为过去30天内的活跃用户数。另外,美图统计后台和第三方平台的计算方法也有所不同,在问卷中没有明确数据源也造成了一定的误差。
另外有意思的比较是上传数和播放数的回答情况。作为短视频的分享平台,美拍的播放数和播放时长是比上传数更有意义的指标——尽管它们都彼此相关——因此播放数被关注和了解的更多。如果美拍仅仅是一个视频处理工具,那么上传数就会是关键指标了。
下面就不再每项指标的去罗列,而是以调研中遇到的情形谈谈数据分析中的几点体会。
首先是数据工作的前提是准确。
无论是用于报表分析、推荐算法或是这次分享,收集得到的数据指标应该与定义相一致。比如下面的曲线左边是三个星期的注册数,其中有一个是前后平均值两倍的高峰,这个是真实的增长吗?如果再看右手边同时段内手机号的注册数占总注册数的比例就会发现有5倍的增长,这样大的增幅相当可疑。真正的成因是某个旧版本被刷了注册数,多出来许多虚假账户,当问题解决时指标水平又恢复正常。对这个具体的例子,可以根据平日手机号注册所占的比例修正得到基本准确的注册总数。其他情形如统计算法或数据源的bug就无法能通过简单的数据清理而解决。
在迭代上线的时候,A/B测试实验有时会看到意外的结果,可能是意外的好也可能是意外的坏,意外的坏常常在分析时比意外好的情形更得到重视。但从数据准确性的角度而言,意外的好与意外的坏是相同的情况,只有在确认数据正确解决了可能存在的问题之后,意外的好才会是真的提升。
同样重要的一点是大家对于数据指标的理解是否一致。
举个在之前的公司的例子,产品广告质量中用到一个产品“参考价格”的概念。这个概念非常直观,大家都喜欢用,可是在之后的沟通中的过程中会因为彼此的理解不同造成问题,比如它可以指产品价格的中位数,即于大多数商家选择的价格接近,也可以指在有信誉商家所提供的最低价格。对于美拍而言, “有效播放”也是个模糊的概念,可能存在各自有价值的几个相关的指标,比如播放长度是超过几秒,或者是超过视频长度的百分之多少,能尽早分别定义、命名清楚能够避免后续的混淆。
数据还能够帮助我们了解进展与建立优先级。
对一个快速发展的产品而言,可以优化的点很多,想法也就更多了,然而资源和时间是有限的。了解重要指标的数据分布可以是一个入手点,比如如果目标是增加美拍的总播放数,那么就可以先了解哪个频道的播放数占的比例最高。除此之外,具体的比例数据的绝对大小也不应该忽略。之前工作中曾经做过一次实验,希望上线的测试组比对照组的各项指标均没有明显变化,但转化数有1%的统计显著的增长。因为转化数是产品广告质量非常相关的一个指标,起初这个结果看着很不错。因为转化数的绝对值没有在界面中显示,等查到发现1%的增长只对应少几百个时,就进一步调查得知这个转化数指标的统计是依赖商家主动报上来的,很不完全,所以1%的增长对实际效果的影响并不能得出明确的结论。
另外一个体会是关于界面的。
用户界面的改变可能对下游的数据产生极大的影响,而一个好的设计对主要指标的贡献的程度会是后台迭代中很难见到的。比如在用户添加好友时取消确认框能够把损耗率降低两位数的百分点,而提升广告CTR的有效途径是设计吸引人的创意。与界面相关的特征也是机器学习模型的重要输入,而当用户界面有较大变更时,相应的A/B测试会需要独立的模型,这不仅仅因为有这些特征的存在,也是因为组成其他特征的数据分布和目标函数的分布都会有显著变化。
还有一句话是“If you can’t measure it, you can’t fix it”。
就是要求先发、及时的数据测量,如果问题无法测量,那也失去了解决的途径。这次调研其实有一些重要的用户体验数据没有包括在内,比如和用户使用体验很相关的平均视频加载时间及其分布。还有一些分解的指标没有加到现有的统计后台中,后面会尽快补上。
大数据是现在常听到的一个词,甚至被用得有些过头了。拥有海量、多样的数据确实有很大潜在的价值,但要用好还是要定义、采集、存储、清理等一个个环节入手,才能为之后的分析、推断、预测提供可靠的基础。
数据感知的前提是:数据是有的;数据是正确的;理解是相一致的;在哪儿是找得到的;怎样变化是看得来的。而数据驱动则要求数据收集、处理和应用的整个过程都能够及时(甚至实时)而有效,这需要数据相关的上下游团队的共同努力。数据之所以有用是因为当产品够大时就不存在一个典型用户。A/B测试就是说明这点的很好的例子。每个人在做决定的时候会代入自己的判断,而良好设计的实验得到的客观指标,能够指引我们做出有依据的选择。从另一个角度讲,虽然数据是提升用户体验的一个指标,但总有它的局限性,例如依赖不完整的数据测量可能无法做出最优的选择。而用户的信任取得难失去易,从数据的角度而言就是要格外注意数据的隐私,这是非常重要的!