美文网首页
NDCG,NDCG@n信息检索指标总结

NDCG,NDCG@n信息检索指标总结

作者: 数据小新手 | 来源:发表于2018-11-09 16:11 被阅读0次

NDCG:normalized discounted cumulative gain

NDCG把相关度分为r个等级

如果r=5,则等级设定分别为2^ 5-1, 2^ 4-1, 2^ 3-1, 2^2-1,1.

通常将得分分为3分等级或5个等级,rel用2^n来表示。

NDCG = DCG/ideal DCG

NDCG@n

ndcg@n 只关心前n个排序是否正确,后面的排序正不正确不予考虑。

ndcg@n 的计算方式比较特别,要进行两次排序,一次是对预测的结果排序,另一次是对实际的分布排序。

例如list [3,2,0,1,1,3,0,0]

计算ndcg@5时只考虑前5个元素[3,2,0,1,1]

理想情况下的排序为[3,3,2,1,1]

此时的dcg为

ndcg@5 即为

def DCG(label_list):
    dcgsum = 0
    for i in range(len(label_list)):
        dcg = (2**label_list[i] - 1)/np.log2(i+2)
        dcgsum += dcg
    return dcgsum


#ndcg 计算
def NDCG(label_list,top_n):
    #没有设定topn
    if top_n==None:
        dcg = DCG(label_list)
        ideal_list = sorted(label_list, reverse=True)
        ideal_dcg = DCG(ideal_list)
        if ideal_dcg == 0:
            return 0
        return dcg/ideal_dcg
    #设定top n
    else:
        dcg = DCG(label_list[0:top_n])
        ideal_list = sorted(label_list, reverse=True)
        ideal_dcg = DCG(ideal_list[0:top_n])
        if ideal_dcg == 0:
            return 0
        return dcg/ideal_dcg

相关文章

网友评论

      本文标题:NDCG,NDCG@n信息检索指标总结

      本文链接:https://www.haomeiwen.com/subject/abeoxqtx.html