1、优化改良无处不在

      相信大家都对转基因水稻有所耳闻。对于这些通过基因工程,被人为创造出来的新物种,科学家虽然能保证高产与抗虫害能力,但是不能证明食用后对人体没有损害,这多少有些令人尴尬;而农业部在前景不明朗情况下批准商业化种植,则把公众推向了高风险境地。不过,抛开转基因技术所带来的食品安全风险,它与杂交、辐射变异在本质上是类似的,都是通过尝试着的改变生物的基因,来选拔良种。由于人们对于基因如何表达为生物性状的机理不是完全了解,加之基因在杂交过程中本身存在随机因素。这使得寻找良种的过程中需要不断尝试。因此,不论是孟山都公司通过基因工程来改造水稻种子,还是袁隆平老师通过不同水稻品种的杂交来培育优质水稻,其实在方法论上都是一致的:挑选一些样本,然后施加各种各样的变化因素,通过观察,找到最佳的样本。

(袁隆平的杂交水稻实验,可以看作是一种BTS实践)

2、搜索产品的优化
      
在互联网领域尤其是搜索领域,我们同样也面临着与选育良种类似的问题,即如何对一个搜索产品施加各种变化,从而发现效果最好的版本。说的再具体一点,为了寻找到效果最好的搜索产品,我们应该尝试着去改变搜索产品的哪些方面,以及在每个方面施加哪些可能的变化。

      这问题不像看上去的那样简单。首先,这个效果的定义,含义可就丰富了。淘宝搜索首先要考虑搜索结果与用户query之间的相关性;除了相关性要求之外,对于淘宝搜索而言,是不是能有效的促进成交,也是要重点考虑的效果之一;此外,如果在搜索结果中,大量存在假冒伪劣产品,那这个效果也是要打折扣的;另外,如果大部分的搜索结果里,都是那些大卖家在抛头露面,中小卖家没有展现机会,对于淘宝生态圈的长期发展也是不利的。因此,淘宝搜索所考虑的效果问题要比一般意义上的搜索引擎更加复杂。其次,搜索产品的哪些方面可以做改动,如果要一一列举就太多了。事实上,搜索产品的任何一个地方的不完善,都有可能降低搜索产品的整体效果。笔者试着将淘宝搜索产品的可变化因素整理成一个图,希望各位看官能有一个感性的认知。

 

3、分桶测试 (Bucket Testing, BTS)

      诸位可能已经意识到了,如何优化一个搜索产品,实际情况应该比我上面说的更加复杂,这真是一个坏消息;不过我们也有一个好消息,因为对于这个问题的答案,业界已经有答案了,这就是分桶测试(bucket testing),简称BTS

      所谓的分桶测试,是让不同的用户在访问特定的互联网产品的时候,由系统来决定用户的分组号(我们称为bucket id),然后根据分组号,令用户看到的是不同的产品版本,用户在不同版本产品下的行为将被记录下来,这些行为数据通过数据分析形成一系列指标,而通过这些指标的比较,最后就形成了各版本之间孰优孰劣的结论。

3.1 A/B测试 (A/B Testing)
      
分桶测试的最简单形式,称为A/B testing。即设定一个基准桶,再设定一个或以上的测试桶。然后考察测试桶与基准桶之间在各项指标上的差异,最后确定测试桶的效果。这种方法论,很容易在现实生活中找到影子。其实,改革初期建立的深圳特区,就是一场伟大的A/B testing,基准桶就是中国内地,测试桶就是深圳,当时各自的用户量是9亿 vs 30万(以当时的人口计算)。对于A/B testing而言,测试桶的用户量、流量都不会太大,这是为了确保BTS万一失败,对于整体系统的影响尽量小。当然,测试桶的用户量、流量也不能太少,否则测试效果容易受到未知因素的干扰,而变得不稳定。对于A/B testing而言,判断测试组与基准组孰优孰劣非常简单,只要将二者的指标进行对比即可。但是,如果版本中包含多个因素,那么确定每个因素的贡献,就不好评估了。这就好比,我们不能仅仅根据内地与深圳的GDP差异,就能断定是因为当时良好的投资环境,还是地理因素,或其它什么因素,是导致了深圳当时成功的主要因素。所以,利用A/B测试,我们往往只能知道how,而不能知道why

      如果经济特区的例子还是不够直接的话,我们来看下奥巴马总统的例子吧。奥巴马的竞选团队如何在总统竞选中将互联网手段发挥到极致的,我们就不费口水介绍了,单说一下他们是如何改善竞选网站的吧。看下图,在奥巴马竞选网站上有一个赠送竞选T恤的页面,用户只要捐款达到一定数额就会赠送一件T恤。显然,如果T恤广告图片(下图红框处)足够抓眼球的话,那捐款率就会不停的往上涨。所以奥巴马团队在广告图片的设计上可是花了不少心血,方法自然是A/B测试,他们一共为测试组设计了4种变化(A~D),然后借助于 Google Website Optimizer 对用户点击行为的分析,选出最佳的形式。

(奥巴马竞选团队利用A/B测试来改进竞选宣传的效果)

3.2 多变量测试 (Multivariate Testing)
     
分桶测试的高级形式,是多变量测试。在多变量测试中,每个可以改变的地方称为因素,而每种因素的可能具有的状态称为水平。比如,你想同时改变某个搜索产品的按钮颜色、排序算法、索引数据这3个地方,那你需要一个3因素的多变量测试。如果,按钮的颜色为3种,那按钮颜色这个因素是3水平的。多变量测试允许你在同一时间测试多个要素处于不同水平时对于搜索产品的影响。通过多变量测试,你能十分清楚的看到不同的变化组合,对最终效果的影响。

      举例而言,如果对某个搜索产品进行BTS测试的范围为:3种按钮颜色、2种排序算法和2种索引数据,那么该如何确定效果最佳的搭配呢?一般,我们会进行排列组合,产生不同的版本,使得每个版本对应一种水平的组合,这样我们就要构造3*2*2=12种版本参加BTS测试。接下来我们只要确定好每个版本的流量分配即可,即哪些桶对应哪个版本。

       最后,也是最有难度的地方在于,如何通过各版本的指标分析,来确定哪个版本最好、每个因素贡献程度以及结论的可靠性。这将比A/B测试要复杂的多,建议各位在有兴趣尝试之前,回顾一下统计学的假设检验、实验设计方面的知识。限于篇幅,这里我们就不展开。

          在这里说明下,多变量测试的威力在于同一时间内可以进行多个因素的测试,可以为我们节省时间,但在使用这个工具的时候,切忌贪心,不要同时进行太多因素的测试。这是因为,在一定时间内,网络流量是有限的,而同时进行太多的测试,就要创建大量的版本,这将摊薄每个版本能够得到的流量。而流量不足时,会导致统计指标的可靠性变差。

 

郑重声明:本站“淘宝搜索技术文档”版块所有内容均来自淘宝搜索技术内参,并由薄言亲自归纳整理,旨在将复杂的技术文档转化成直白容易理解的文字,以此来帮助淘宝卖家更好的了解淘宝搜索系统,为此耗费了巨大的时间和精力,请大家尊重薄言的劳动,不要转载和盗用,即使需要转载,请务必取得授权,并注明出处!谢谢!