QQ登录

只需要一步,快速开始

 注册地址  找回密码
查看: 6046|回复: 0
打印 上一主题 下一主题

[推荐] 推荐系统常用评价指标(recall,MAP,MRR,NDCG,F1,ROC等)

[复制链接]
字体大小: 正常 放大
杨利霞        

5250

主题

81

听众

16万

积分

  • TA的每日心情
    开心
    2021-8-11 17:59
  • 签到天数: 17 天

    [LV.4]偶尔看看III

    网络挑战赛参赛者

    网络挑战赛参赛者

    自我介绍
    本人女,毕业于内蒙古科技大学,担任文职专业,毕业专业英语。

    群组2018美赛大象算法课程

    群组2018美赛护航培训课程

    群组2019年 数学中国站长建

    群组2019年数据分析师课程

    群组2018年大象老师国赛优

    跳转到指定楼层
    1#
    发表于 2020-4-19 16:24 |只看该作者 |倒序浏览
    |招呼Ta 关注Ta

    推荐系统常用评价指标(recall,MAP,MRR,NDCG,F1,ROC等)这里主要总结一下推荐系统当中常见的一些评价指标,主要包括: MAE,RMSE,recall,precision,MAP,MRR,NDCG等

    MAE(Mean Average Error,平均绝对误差)

    表示预测值和实际值之间的绝对误差的平均值.

    RMSE(Root Mean Square Error,均方根误差)

    均方根误差是用来衡量观测值同真实值之间的偏差,RMSE越小越好.

    Recall(召回率)与Precision(精确率)

    Recall 和precision又叫查全率和查准率.
    查准率就是说检索出的信息中有多少是用户真正感兴趣的.
    查全率就是说用户真正感兴趣的信息有多少被我们预测到了
    首先我们明确如下几个定力:
    TP(True Positive) : 表示样本的真实类别为正,最后预测得到的结果也为正
    FP(False Positive): 表示样本的真实类别为负,最后预测得到的结果为正
    TN(True Negative): 表示样本的真实类别为负,最后预测得到的结果也为负
    FN(False Nositive): 表示样本的真实类别为正,最后预测得到的结果为负
    可以看到TP,TN是我们预测准确的样本,而FP,FN是我们预测错误的样本.

    Recall

    召回率表示在原样本的正样本中,最后被正确预测为正样本的概率
    即:
    Recall=TPTP+FN Recall = \frac{TP}{TP + FN}
    Recall=
    TP+FN
    TP
    ​       


    Precision

    精确率表示在所有为正的样本中,真正为正的样本概率
    Precision=TPTP+FP Precision = \frac{TP}{TP + FP}
    Precision=
    TP+FP
    TP
    ​       


    recall 和Precision是相互矛盾的.一般来说查准率高时查全率往往偏低,查全率高时查准率往往偏低.
    在很多情形下,我们根据学习期的预测结果进行排序,排在前面的我们认为是最可能是正例的样本,排在后面的被认为是最不可能是正例的.根据此顺序我们可以每次计算出recall,precision.以查准率为纵轴,查全率为 横轴就得到了"P-R"曲线,

    P-R曲线

    如图
    P-R图直观的显示出学习器在样本总体上的查全率和查准率.若一个学习器的p-r曲线被另一个曲线完全包住,则可断言后者的性能优于前者,例如上面的A和B优于学习器C,但是A和B的性能无法直接判断,因为他们之间发生了交叉.A和B只能在具体的查全率或者查准率条件下进行比较,如果我们仍然希望将A和B比个高低,这时候我们可以比较P-R曲线下的面积大小,它在一定程度上表征了学习器在查准率和查全率上取得相对"双高"的比例.

    平衡点(Break-Even Point ,BEP)

    P-R曲线的面积很难去估算,所以BEP我们设为是查准率=查全率时的取值,BEP越大学习器越优.上图中A的BEP大于B,则可认为是A优于B.

    F1度量

    F1是基于precision和recall的调和平均定义的.
    1F1=12(1P+1R) \frac{1}{F_1} = \frac{1}{2}(\frac{1}{P} + \frac{1}{R})
    F
    1
    ​       

    1
    ​       
    =
    2
    1
    ​       
    (
    P
    1
    ​       
    +
    R
    1
    ​       
    )

    F1=2×P×RP+R F_1 = \frac{2 \times P \times R}{P + R}
    F
    1
    ​       
    =
    P+R
    2×P×R
    ​       


    在一些应用中对recall和Precision的重视程度是不同的,比如在推荐系统中我们更希望推荐的内容是用户感兴趣的,所以Precision更重要.

    Fβ F_\betaF
    β
    ​       
    度量(加权调和平均)

    Fβ F_\betaF
    β
    ​       
    是F1 F_1F
    1
    ​       
    度量的一般形式,能让我们表达出对Precision/Recall的不同偏好,定义如下:
    1Fβ=1(1+β2)(1P+β2R) \frac{1}{F_\beta} = \frac{1}{(1 + \beta^2)} (\frac{1}{P} + \frac{\beta^2}{R})
    F
    β
    ​       

    1
    ​       
    =
    (1+β
    2
    )
    1
    ​       
    (
    P
    1
    ​       
    +
    R
    β
    2

    ​       
    )

    Fβ=(1+β2)×P×Rβ2×P+R F_\beta = \frac{(1 + \beta^2) \times P \times R}{\beta^2 \times P + R }
    F
    β
    ​       
    =
    β
    2
    ×P+R
    (1+β
    2
    )×P×R
    ​       


    其中β>0 \beta>0β>0度量了recall和Precision之间的相对重要性,β=1 \beta=1β=1即F1 F_1F
    1
    ​       
    度量.

    Accuracy

    准确率表示在所有预测的样本中预测正确的概率
    Accuray=TP+TNTP+TN+FP+FN Accuray = \frac{TP + TN}{TP + TN + FP + FN}
    Accuray=
    TP+TN+FP+FN
    TP+TN
    ​       


    MAP(Mean Average Precision,均值平均精度)

    首先我们需要了解一下AP

    MAP就是AP的平均值.
    例如:现在有两个user,与两个user直接相关的(positive feedback)的item分别有4个和3个.对第一个user的相关4个item的rank分别为1,2,4,7;第二个user的相关3个item的rank分别为1,3,5,则对于第一个user,AP为:
    11+22+34+474=0.83 \frac{\frac{1}{1} + \frac{2}{2} + \frac{3}{4} + \frac{4}{7}}{4} = 0.83
    4
    1
    1
    ​       
    +
    2
    2
    ​       
    +
    4
    3
    ​       
    +
    7
    4
    ​       

    ​       
    =0.83

    同理第二个user的为:
    11+23+353=0.75 \frac{\frac{1}{1} + \frac{2}{3} + \frac{3}{5} }{3} = 0.75
    3
    1
    1
    ​       
    +
    3
    2
    ​       
    +
    5
    3
    ​       

    ​       
    =0.75

    则MAP为:0.83+0.752=0.79 \frac{0.83 + 0.75}{2} = 0.79
    2
    0.83+0.75
    ​       
    =0.79

    MRR(Mean Reciprocal Rank,平均倒数排名)

    MRR是将user相关item在给出结果中的排名的倒数作为准确度,在对所有的取均值.


    NDCG(Normalized Discounted Cumulative Gain,归一化折损累计增益)

    上面我们也介绍了MAP评价指标,但是MAP认为是二元相关性(即对一个Item要么是感兴趣要么是不感兴趣的),而NDCG允许以实数形式进行相关性打分,这种关系类似分类和回归的关系.
    NDCG这个名字可能比较吓人,但背后的思想却很简单.一个推荐系统返回一些item并形成一个列表,我们想要计算这个列表有多好,每一项都有一个相关的评分值,通常这些评分值是一个非负数,这就是gain(增益).此外对于这些没有用户反馈的项我们通常设置起增益为0.

    CG

    我们将这些增益相加就是Cumulative Gain(累计增益,CG),CG就是将每个推荐结果相关性的分支累加后作为整个推荐列表的得分.
    CGk=∑ki=1reli CG_k = \sum_{i = 1}^k rel_i
    CG
    k
    ​       
    =
    i=1

    k
    ​       
    rel
    i
    ​       


    这里reli rel_irel
    i
    ​       
    表示处于位置i的推荐结果的相关性,k表示要考察的推荐列表的大小.

    DCG

    CG的一个缺点是没有考虑每个推荐结果处于不同位置对整个推荐效果的影响,例如我们总是希望相关性高的结果应该排在前面.显然,如果相关性低的结果排在靠前的位置会严重影响用户的体验,所以在CG的基础上引入位置影响因素,即DCG(Discounted Cumulative Gain),这里指的是对于排名靠后推荐结果的推荐效果进行“打折处理”:
    DCGk=∑ki=12reli−1log2(i+1) DCG_k = \sum_{i = 1}^k \frac{2^{rel_i} - 1}{log_2(i + 1)}
    DCG
    k
    ​       
    =
    i=1

    k
    ​       

    log
    2
    ​       
    (i+1)
    2
    rel
    i
    ​       

    −1
    ​       


    从上面的式子可以得到两个结论:
    1.推荐结果的相关性越大,DCG越大
    2.相关性好的排在推荐列表前面的话,推荐效果越好,DCG越大.

    NDCG

    DCG仍然有不足之处,即不同的推荐的推荐列表之间,很难进行横向的评估,而我们评估一个推荐系统不可能仅使用一个用户的推荐列表及相应结果进行评估,而是对整个测试机中的用户及其推荐列表结果进行评估.那么不同的用户的推荐列表的评估分数就需要进行归一化,也即NDCG(Normalized Discounted Cumulative Gain,归一化折损累计增益).
    在介绍NDCG之前还需要知道另一个概念,IDCG(Ideal DCG),指推荐系统为某一用户返回的最好推荐结果列表,即假设返回结果按照相关性排序,最相关的结果放在前面,此序列的DCG为IDCG.因此DCG的值介于(0,IDCG],故NDCG的值介于(0,1],那么用户u的NDCG@K定义为
    NDCGu@K=DCGu@KIDCGu NDCG_u@K = \frac{DCG_u@K}{IDCG_u}
    NDCG
    u
    ​       
    @K=
    IDCG
    u
    ​       

    DCG
    u
    ​       
    @K
    ​       


    因此平均NDCG@K计算为:
    NDCG@K=∑u∈∣U∣NDCGu@K∣U∣ NDCG@K = \frac{\sum_{u \in |U|} NDCG_u@K}{|U|}
    NDCG@K=
    ∣U∣

    u∈∣U∣
    ​       
    NDCG
    u
    ​       
    @K
    ​       


    ROC与AUC

    ROC

    很多学习器是为测试样本产生一个实值或概率预测,然后将这个预测值与一个分类阈值进行比较,若大于阈值分为正类,否则为反类,因此分类过程可以看作选取一个截断点。
    不同任务中,可以选择不同截断点,若更注重”查准率”,应选择排序中靠前位置进行截断,反之若注重”查全率”,则选择靠后位置截断。因此排序本身质量的好坏,可以直接导致学习器不同泛化性能好坏,ROC曲线则是从这个角度出发来研究学习器的工具。
    ROC全称是"受试者工作特征"(Receiver Operating Characteristic)曲线.与P-R曲线类似,我们根据学习器的预测结果对样例进行排序,按此顺序逐个把样本作为正例进行预测,每次计算出两个重要量的值,分别是纵轴:“真正例率(True Positive Rate,TPR)”,横轴是"假正例率(False Positive Rate,FPR)".公式如下(TP,TR,FP,FR定义同上):
    TPR=TPTP+FN TPR = \frac{TP}{TP + FN}
    TPR=
    TP+FN
    TP
    ​       


    FPR=FPTN+FP FPR = \frac{FP}{TN + FP}
    FPR=
    TN+FP
    FP
    ​       


    如图:
    现实任务中通常利用有限个测试样例来绘制ROC图,因此通常无法产生光滑曲线,如右图.

    绘图过程:
    给定m+ m^+m
    +
    个正例和m− m^-m

    个负例,根据学习器的预测结果将所有样例排序,然后把分类阈值设到最大,即把所有样例都看成负例,此时TPR和FPR都是0,在坐标(0,0)处标记一个点.然后将分类阈值依次设为每个样例的预测值,即依次将每个样例划分为正例.设前一个点的为(x,y) (x,y)(x,y),若当前样例为正例,则对应标记点的坐标为(x,y+1m+ (x,y + \frac{1}{m^+}(x,y+
    m
    +

    1
    ​       
    ;若当前点为假正例,则对应点坐标为(x+1m−,y) (x + \frac{1}{m^-},y)(x+
    m


    1
    ​       
    ,y),然后相邻点连接即可.
    进行学习器比较时,与P-R曲线类似.如果一个ROC曲线被另一个包住则后者优于前者,若发生交叉则难以断定.

    AUC

    上面说过如果ROC曲线发生交叉则无法直接断言谁优谁劣.如果非要比较,则可以根据ROC曲线下的面积,即AUC(Area Under ROC Curve).

    AUC可通过对ROC曲线下各部分的面积求得.假定ROC曲线是由坐标为{(x1,y1),(x2,y2)...(xm,ym)} \{(x_1,y_1),(x_2,y_2)...(x_m,y_m)\}{(x
    1
    ​       
    ,y
    1
    ​       
    ),(x
    2
    ​       
    ,y
    2
    ​       
    )...(x
    m
    ​       
    ,y
    m
    ​       
    )}的点按顺序连接形成的(x1=0,xm=1 x_1 = 0,x_m = 1x
    1
    ​       
    =0,x
    m
    ​       
    =1),则AUC可以估算为:
    AUC=12∑m−1i=1(xi+1−xi)(yi+yi+1) AUC = \frac{1}{2} \sum_{i = 1}^{m-1} (x_{i + 1} - x_i)(y_i + y_{i + 1})
    AUC=
    2
    1
    ​       

    i=1

    m−1
    ​       
    (x
    i+1
    ​       
    −x
    i
    ​       
    )(y
    i
    ​       
    +y
    i+1
    ​       
    )

    AUC的物理意义:

    任取一对正负样本,正样本的值大于负样本的概率!
    形式化的看,AUC考虑的是样本预测的排序质量,因此它与排序误差有紧密的联系.给定m+ m^+m
    +
    个正例和m− m^-m

    个负例,令D+ D^+D
    +
    和D− D^-D

    分别表示正反例的集合,则排序损失
    定义为:
    lrank=1m+m−∑x+∈D+∑x−∈D−(⨿(f(x+)<f(x−))+12⨿(f(x+)=f(x−))) l_{rank} = \frac{1}{m^+m^-} \sum_{x^+ \in D^+ } \sum_{x^- \in D^ -}( \amalg (f(x^+) < f(x^-)) + \frac{1}{2} \amalg(f(x^+) = f(x^-)))
    l
    rank
    ​       
    =
    m
    +
    m


    1
    ​       

    x
    +
    ∈D
    +


    ​       

    x

    ∈D



    ​       
    (⨿(f(x
    +
    )<f(x

    ))+
    2
    1
    ​       
    ⨿(f(x
    +
    )=f(x

    )))

    即考虑每一对正反例,若正例的预测值小于负例,则记1,若二者相等则记0.5分.
    ROC曲线中每有一个真正例需要向上走一步,每有一个假正例需要向右走一步.对于所有的正例其横坐标所代表的步数就是得分比起高的反例数.因此我们修改ROC空间的坐标,对横坐标乘以m− m^-m

    ,纵坐标乘以m+ m^+m
    +
    ,使得在这个空间中每一步的刻度都为1.

    从上图我们看出lrank l_{rank}l
    rank
    ​       
    其实是ROC曲线之上的面积
    比如上图蓝色的线表示ROC曲线.根据这个曲线,我们可以知道正反例顺序: (反,正,[正,正,反],反,正…)其中[]括起来的实例分数相同.
    对于第一个正例,对应区域1,区域1的面积表示排在其前面的反例数.
    对于第三个样例第四个样例是特殊情况,它们和一个反例的得分是相同的.我们假设有q个反例p个正例得分相同,那么就是要往上走p步往右走q步,于是得到三角形面积为12pq \frac{1}{2} pq
    2
    1
    ​       
    pq.与上式得0.5分相符
    所以有
    lrankm+m−=m+m−−m+m−AUC l_{rank} m^+ m^- = m^+ m^- - m^+ m^- AUC
    l
    rank
    ​       
    m
    +
    m

    =m
    +
    m

    −m
    +
    m

    AUC

    因此我们有:
    AUC=1−lrank AUC = 1 - l_{rank}
    AUC=1−l
    rank
    ​       


    为什么使用Roc和Auc评价分类器

    既然已经这么多标准,为什么还要使用ROC和AUC呢?因为ROC曲线有个很好的特性:当测试集中的正负样本的分布变换的时候,ROC曲线能够保持不变。在实际的数据集中经常会出现样本类不平衡,即正负样本比例差距较大,而且测试数据中的正负样本也可能随着时间变化。下图是ROC曲线和Presision-Recall曲线的对比:

    在上图中,(a)和©为Roc曲线,(b)和(d)为Precision-Recall曲线。

    (a)和(b)展示的是分类其在原始测试集(正负样本分布平衡)的结果,©(d)是将测试集中负样本的数量增加到原来的10倍后,分类器的结果,可以明显的看出,ROC曲线基本保持原貌,而Precision-Recall曲线变化较大。
    ————————————————
    版权声明:本文为CSDN博主「Marcus_Bob」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
    原文链接:https://blog.csdn.net/HowardEmily/article/details/104674901

    zan
    转播转播0 分享淘帖0 分享分享0 收藏收藏1 支持支持0 反对反对0 微信微信
    您需要登录后才可以回帖 登录 | 注册地址

    qq
    收缩
    • 电话咨询

    • 04714969085
    fastpost

    关于我们| 联系我们| 诚征英才| 对外合作| 产品服务| QQ

    手机版|Archiver| |繁體中文 手机客户端  

    蒙公网安备 15010502000194号

    Powered by Discuz! X2.5   © 2001-2013 数学建模网-数学中国 ( 蒙ICP备14002410号-3 蒙BBS备-0002号 )     论坛法律顾问:王兆丰

    GMT+8, 2024-4-26 23:41 , Processed in 0.412853 second(s), 50 queries .

    回顶部