二、线下评估
  算法模型的评估一般分为线下的评估和线上的评估,线下的评估很多都体现在搜索中常用的相关性(Relevance)指标。相关性的定义可以分为狭义相关性和广义相关性两方面,狭义相关性一般指检索结果和用户查询的相关程度。而从广义的层面,相关性可以理解为用户查询的综合满意度。当用户在搜索框输入关键词,到需求获得满足,这之间经历的过程越顺畅,越便捷,搜索相关性越好。
  在淘宝搜索衡量狭义相关性的时候,一般是使用PI(Per Item)测试的方法:
  A、抽取具有代表性的查询关键词,组成一个规模适当的关键词集合
  B、针对这个关键词集合,从模型的产出结果中查询对应的结果,进行人工标注(人工判断为相关性好、中、差等),对人工评测的结果数据,使用预定义好的评价计算公式比如DCG等,用数值化的方法来评价算法模型的结果和标注的理想结果的接近程度。
  利用人工标注数据来计算相关性的分数,来判断模型的好坏;在这个过程中人工不可避免的会有主观的判断,但综合了多人的判断结果还是可以获得一个有统计意义的结果,另一方面标注数据也可以帮助我们找到一个算法表现不理想的地方,有针对性的提升。
  广义的相关性线下评测比较困难,受人工主观因素的影响更大,一般使用SBS(Side by Side)的评测方法,针对一个关键词,把两个不同算法模型产出的结果同时展示在屏幕上,每次新模型和对比模型展示的位置关系都是随即的,人工判断的时候不知道哪一边的数据是新模型的结果,人工判断那一边的搜索结果好,以终的统计结果综合来衡量新模型和老模型的搜索表现。
  线下评测的方法和指标有很多,不同的搜索引擎会关注不同的指标,比如以前Yahoo的全网搜索引擎比较关注RCFP(Relevance,Coverage,Freshness,Perspective)等,淘宝搜索线下评测时候一般统计DCG和SBS的指标。
  线下的评测方法从统计上有一定的指导意义,能从一定程度上区分模型的好坏,但要真正验证算法模型的好坏,还需要接受真实的流量来验证。
  三、线上测试
  为了真实验证一个算法模型的好坏,需要有一个系统能提供真实的流量来检验。淘宝搜索实现的BTS(Bucket Testing System)系统是这样的一个环境,在用户搜索时,由搜索系统根据一定的策略来自动决定用户的分组号(Bucket id),保证自动抽取导入不同分组的流量具有可对比性,然后让不同分组的用户看到的不同算法模型提供的结果。用户在不同模型下的行为将被记录下来,这些行为数据通过数据分析形成一系列指标,而通过这些指标的比较,后形成了不同模型之间孰优孰劣的结论。只要分组的流量达到一定的程度,数据指标从统计意义上具有可比性。
  不同的BTS系统会关注不同的数据指标,在淘宝搜索,有一些重要的指标是很多算法模型测试的时候关注的:
  访问UV成交转化率:来淘宝搜索的UV,终通过搜索结果成交的用户占比。
  IPV-UV转化率:来淘宝搜索的UV,有多少比例的用户点击了搜索结果
  CTR:搜索产生的点击占搜索产生的PV的比例
  客单价:每个成交用户在淘宝搜索上产生成交的平均价格
  基尼系数:基尼系数是一个经济学名词,考量社会财富的集中度;如果社会财富集中到很少一部分富人手中的时候,基尼系数会增大,社会的稳定性和可持续发展性会出现问题;淘宝搜索借用了这个概念来衡量搜索带给卖家的PV展示,和点击的集中度,在保证用户体验的前提下,给更多的优质或小小而美的卖家展示的机会。
  大部分时候我们都有好几个模型和功能在线上测试,我们用BTS的方式来观察测试的情况,如果提升稳定逐渐开放给所有用户,如果没有提升,我们也能从中获得经验帮助我们更好的理解用户。