评估对检索系统的性能:
由于我们这里的检索结果,是主要根据PageRank的排名,以及Lucene对文本的分词和相关性计算的最后得分,进行权值调整后得到的排名结果。
这里对我们检索系统的进行性能评估,这里主要评估的是检索结果排名的质量。
由于对搜索结果排名的评估有很多方法和技巧,这里我们可以采用几个比较经典的评估方法:
1,对rank result 计算P/R值,利用差值法,衡量平均的P/R值。
2,对rank计算DCG值,以及NDCG值,得到。
3,利用google的站内搜索功能,对我们自己的排名结果进行对比排名。
接下来详细说明下,是怎么使用各个评估方法的。
1,对rank result 计算P/R值,利用差值法,衡量平均P/R值。(具体求值方法,见附录。)
1.1首先,为了得到标准测试集。我们选择了5个有代表性的query,然后在我们抓的数据集中随机选择100个
静态网页。人工对100个网页,对5个关键词进行“相关/不相关”的二元标注。这样我们就得到了
标准测试集。然后我们使用自己设计的rank算法,对这100个网页进行索引。
对选择的5个query,进行查询,得到rank的结果。
1.2接下来,我们就可以进行进行rank的P/R值计算了。
分别计算得到10个Precision 和 Recall value。这样我们得到了一连串的PR值,
如何比较query之间的检索效果,就需要计算出avgPrec。将Recall里面递增的值
的prec的平均值。这样可以评估不同query间的检索效果。
1.3对上面计算的P/R值,计算其F1值。利用avgF值也可以得到评估排名的效果。
2,对rank计算DCG值,以及NDCG值,得到。(具体求值方法,见附录。)
2.1 首先我们选择出5个query,然后可以对全局爬下来的数据进行检索。
输入5个query后,得到的top10 结果。对10个页面结果,进行3个等级的区分:Good(好)、Fair(一般)、 Bad(差),
标注后,得到每个页面得分。根据DCG的定义,分别计算出DCG值。但是和上面遇到的问题一样,不同query之间的比较,不能很好
的比较,所以需要就计算NDCG,归一化DCG值后,query之间的效果就可以计算。一定程度上,可以比较方法1,2中的评估结果,
看下不同评估方法之间的效果和侧重点。
3,利用google的站内搜索功能,对我们自己的排名结果进行对比排名。
google站内搜索,是想利用google的搜索结果,计算出DCG值,然后和2中的值进行比较,查看结果,分析出现不同估算值的原因和结果,是否算法客观评估了效果,或者算法是否有需要改进的地方。
google站内搜索,还可以帮助,1中的测评中,代替大量人工评估的相关性方法,可以假设google搜出结果的前n条为相关性结果,
然后其余的为不相关,这样可以得到数量级更大的测试集。
关于测试集的获得,还可以使用人工标注的结果,然后对其余子集使用分类算法,进行相关性分类。这样也可以得到数量级大的测试集。
附录:
1, P/R 值,rank P/R值计算 , F1值计算。
来源于:wbia 课件
n 精度Precision P = tp/(tp + fp)
n 召回率Recall R = tp/(tp + fn)
Rank P/R 计算
2,DCG,NDCG计算。
来源于 http://hi.baidu.com/jasonlyy/blog/item/60614c487685983f09f7efe7.html
CG并不考虑在搜索结果页面中结果的位置信息,它是在这个搜索结果list里面所有的结果的等级对应的得分的总和。如一个搜索结果list页面有P个结果,CG被定义为:
reli是 第i位结果的得分。CG的统计并不能影响到搜索结果的排序,CG得分高只能说明这个结果页面总体的质量比较高并不能说明这个算法做的排序好或差。什么是好 的排序?也就是说要把Good的结果排到Fair结果上面、Fair结果排到Bad结果上面,如果有Bad的结果排在了Good上面,那当然排序就不好 了。到底排序好不好,需要一个指标来衡量,DCG就是这样的一个指标。
上面的例子CG=3+2+1+3+2=11,如果调换第二个结果和第三个结果的位置CG=3+1+2+3+2=11,并没有改变总体的得分。
Discounted Cumulative Gain
在一个搜索结果list里面,比如有两个结果的打分都是Good,但是有一个是排在第1位,还 有一个是排在第40位,虽然这两个结果一样都是Good,但是排在第40位的那个结果因为被用户看到的概率是比较小的,他对这整个搜索结果页面的贡献值是 相对排在第一位那个结果来得小的。
DCG的思想是等级比较高的结果却排到了比较后面,那么在统计分数时,就应该对这个结果的得分有所打折。一个有p(P≥2)个结果的搜索结果页面的DCG定义为:
为什么要用以2为底的对数函数?这个并没有明确的科学依据,大概是根据大量的用户点击与其所点宝贝的位置信息,模拟出一条衰减的曲线。
DCG=3+(1+1.26+1.5+0.86)=7.62
DCG的公式另外一种表达式是:
这个表达式在一些搜索文档中经常会被提到,他的作用和之前的那个公式一样,但是这个公式只适合打分分两档的评测。
nDCG(normalize DCG) 因为不同query的搜索结果有多有少,所以不同query的DCG值就没有办法来做对比。
定义:
IDCG(ideal DCG),就是理想的DCG。IDCG如何计算?首先要拿到搜索的结果,人工对这些结果进行排序,排到最好的状态后,算出这个排列下本query的DCG,就是IDCG。
因为nDCG是一个相对比值,那么不同的query之间就可以通过比较nDCCG来决定哪个query的排序比较好。
例子中,理想的排序应该是3 、3 、2 、2 、1,那么IDCG=3+3+1.26+1+0.43=8.69
nDCG=DCG/IDCG=7.62/8.69=0.88,从nDCG这个值可以看出目前算法存在的优化空间。