美文网首页
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