阅读 301

文本获取和搜索引擎如何评估一个算法是否有效

coursera课程 text retrieval and search engine 第三周 推荐。

如何评估一个算法是否有效

思路:构建一个可以重复使用的数据集,并且定义测量办法,来衡量结果。
感性的来说,使用不同的算法作用于同一个数据集,得到不同的结论,根据使用者的使用场景【测量】来判断哪个算法更有效,这是因为具体的场景使用,这应该是知道什么样的结果是最想要的;
另一方面可以从理性的角度来衡量,1是精度(Precision),2是召回率(recall)

  • 精度 用来度量算法返回的结果中,有多少是有用的
  • 召回率 用来度量在所有的结果中,有多少被返回了

一般说来,高的召回率意味着低精度

当尝试去找更多的文档的时候,那也会查找更多的文件,精度随之降低 从实用性来讲,用户使用一般只看返回结果的第一屏【一般是10】,那么可以在这个范围内来衡量【前10】的准确率

可以使用PR曲线来衡量精度和召回率的关系,一个良好的PR曲线它不会偏向于任何一个算法

对于理想的系统而言,它的精度不会受召回率的影响。通常相同的召回率,精度越高越好,但是如果A/B两条曲线存在交点,这时候就要根据系统自己的使用场景,是关心高召回率还是高精度来选择

F-measure

组合Precision和recall,来衡量算法的有效性

如何来衡量排序方式

使用平均精度。

图中+号表示正确的结果,从上到下表示顺序

平均精度计算中,没有出现的精度,认为是0

此时,当任意一个文档的顺序发生变化,比如,位置下降,那么整体精度下降,上升,整体精度上身,能对排序产生灵敏的反应

衡量多个查询的排序影响

MAP:对每一个的平均值做算术平均值,即把每个平均值相加再除以中的数量
gMAP:几何平均值,即把所有的平均值相乘,再做n次幂的根号运算

MAP的值主要取决于最大的值,也就是那个查询特别相关;gMAP则受单次平均值低的影响,所以当想要提高搜索结果的质量,可以用gMAP来衡量,想让整体的查询最好,就用MAP

单个排序衡量

有的查询结果只有1个结果,比如想知道某个网站的主页,使用排序位置的倒数更好,当排在后面的时候,衡量结果越小,更直观

多层次相关性判断

每个查询结果和查询的关键字的相关性程度是不一样的,比如结果1的相关性是3,结果2的相关性是2,值越大,越相关。
一种简便的方式是直接加上所有的相关性,这种方式对相同相关性的顺序无法体现。
这时可以给每个位置一个加权,同样的相关性,越排在后面,它被用户选中的几率越小,因此共享越低,一种方式是相关性除以logR,R为顺序,这种方式称作DCG。
但是由于他会随着高相关的一直递增,而对于某些结果而言,高相关的结果本来就少,就会失去公正性,所以实行标准化,称作NDCG

A-B测试

将两个方法返回的结果混合起来,在用户不知道的情况下进行选择,用户最终点击那个方法的连接多,就证明那个方法更好

符号统计测试

对于多次实验的结果做平均值,如果表明实验A的平均值比B的平均值低,真的表明A比B要好么?而不是因为你选的特定的查询呢?

可以通过符号统计来说:

  • 一是做简单的比较(sign test),如果B比A好,用减号,否则用加号;
  • 二是使用Wilcoxon方法,不仅看符号而且看数值,一般来说,当得到的统计结果在95%区间之外,就可以认为平均值计算是成立的

选择全部文档的子集做判断用于测试

  1. 选择多个排序的方法
  2. 让每个排序方法返回前k个结果
  3. 将所有的排序返回的k个结果合成一个结果池以供人来判断
  4. 未放入池中的结果认为是不相关

这种方式对已有的文档系统是有效的,但是新的产生的效果可能不好