在淘宝反作弊的评测中,评测算法上线前的准确率时,使用最多的是单纯随机抽样和分层抽样。这两种方法都属于随机抽样方法,也就是照随机的原则,即保证总体中每个单位都有同等机会被抽中的原则抽取样本的方法。

一、反作弊算法评测概况
       反作弊,简单理解就是“打击作弊”,对使用各种作弊手段达到搜索排名靠前的行为进行处理。目前有虚假交易、广告商品等10种作弊类型。
       在淘宝海量的宝贝中,要把有作弊行为的宝贝识别出来,不可能靠人工case by case的寻找,而是通过总结宝贝的特征,用算法来实现批量处理。而算法是否可靠,则需要人工来验证,当人工验证的准确率达到预期的指标后,算法才能上线生效,对作弊宝贝进行处理。

二、为什么用随机抽样
       在前面说到,随机抽样是“保证总体中每个单位都有同等机会被抽中”的抽样方法。在一个算法中,宝贝是通过同一个算法逻辑来识别的,大家都“生而平等”,想要知道这些宝贝的状况,将用到随机抽样中的单纯随机抽样和分层抽样即可。

三、具体操作方法举例
      1、单纯随机抽样
      单纯随机抽样:从总体中抽取一定比例的样本。比如算法A,召回了5万宝贝(召回:即算法识别了5万作弊宝贝,称作召回),从中抽取1%的样本量进行评测,来估算算法的准确率。但是这种抽样方式适合召回数量不多,算法逻辑较为单一,召回总体无法再区分的评测。
      2、分层抽样
      分层抽样:先依据一种或几种特征将总体分为若干个子总体,每一子总体称作一个层;然后从每层中随机抽取一个子样本,这些子样本合起来就是总体的样本。稍微不同的是,一般的分层抽样重视的是整个样本的评测结果,而算法评测中,更重视单个子样本的评测结果。这是在算法准确率评测中使用最频繁的抽样方法。
       适用场景1:算法逻辑一致,分层变量清晰且相对独立。
       拿“标题滥用关键词”的算法来说,算法逻辑中滥用的关键词有“非”(非檀木匠),“比”(比江南布衣美),“不是”(不是百丽/达芙尼),这里分层就可以以关键为依据分成3个子总体,3个子总体各自抽自身数量的1%,合成一个总样本。当然每个子样本都设有一个下限,当1%不足下限时,自然补足,这样相对能保证评测结果的可信度。(为何是1%的比例?是根据经验在人力与置信度之间取的平衡点,暂不赘述。)

分层类型 召回量 抽样 抽样说明
滥用“非” 50000 500 抽样1%
滥用“比” 20000 200 抽样1%
滥用“不是” 10000 200 样本补足
总和 80000 900 /

      适用场景2:算法逻辑一致,分层变量本身有连续性。
     “标题滥用关键词”分层后,各子总体之间比较独立,没有连续性。而“虚假交易”算法的分层维度往往是数值,有一定的连续性。如,根据识别特征的不同,不同数值水平的宝贝或卖家会体现出明显的差异性,所以需要分阈值区间进行数据提取。
    像这种连续性的变量,应该怎么来分层呢?不可能50个变量值就要分50个子总体来进行评测与统计。所以在目前的评测中,一般用到2种划分方法。
   (1)分层后,每个子总体的召回数量相近。
    假设以下1-10是一个连续的变量:

主变量 1 2 3 4 5 6 7 8 9 10
召回数 100 10 20 30 50 10 45 20 40 20
各区间合 100       120         95

     从表格可以看出,以“每个子总体的召回数量相近”的原则来分层的话,区间应该是:1,(2,5],6以上。当然,临界点的数据能取到一个舒适的数值就最好不过了,比如,取5的倍数、10的倍数等,这也是为什么上表不取“变量6”为临界点的原因。

   (2)借助算法的其他维度分层。
    假设算法中有一个主变量,有一个辅助变量,则可以根据辅助变量来分层:

主变量 1 2 3 4 5 6 7 8 9 10
辅助变量 1 0.98 0.96 0.95 0.92 0.9 0.8 0.83 0.82 0.8
分层阀值 1       (1,0.9】         (0.9,0.8】

    总的来说,分层抽样的好处在于:
    A.清晰的看到子总体个自的算法准确率,其中一个子总体没有达到指标时,可以更有针对性的进行算法调优,来达到预期的指标,免去了对整个召回大动干戈。
    B.假设其中一类无法达到指标,又没有调优的空间,可以暂时不处理,先处理已达到指标的类型。免去了因一种类型导致整体准确率未达到指标而无法上线的情况。
    C.当算法召回量过于庞大,需要较长的时间停留在评测环节时,可以用分层的方法,把召回分成几个部分,评一部分,流动到下一环节,逐步在线上生效,不至于将“战线”拖得太长。