ROC曲线绘制
建议自己手绘一下ROC曲线,可以有更好的理解。
如何绘制ROC曲线,可参考:
https://blog.csdn.net/xiaohuihui1994/article/details/87987836
AUC和loss公式
西瓜书中AUC和排序loss的公式部分,因自己不太理解,故笔记较为啰嗦
关于公式的理解,参考了:
https://blog.csdn.net/luo3300612/article/details/80367901
NDCG
累计增益(cumulative gain,CG)(只有相关性,无位置)
将每个推荐结果相关性的分值累加后作为整个推荐列表的得分:
表示第个位置的相关性得分,表示推荐列表的大小。
CG 只考虑相关性,没有考虑每个推荐结果处于不同位置对整个结果的影响。
e.g. A,B,C 与C,A,B两种排序的CG值是一样的。
折损累计增益(discounted cumulative gain,DCG)(有位置)
引入了位置因素,希望相关性大的排前面(相关性越大,DCG值越大):
工业界中常用公式,但只适合打分分两档的情况:
当取值为0或1时,以上俩公式等价。
CG针对不同的推荐列表之间很难进行横向评估,而评估一个推荐系统需要评估各个用户的推荐列表及结果,因此需要对不同用户的推荐列表的评估分数进行归一化。
所以需要用IDCG归一化DCG,得到NDCG。
最佳/理想的折损累计增益(ideal discounted cumulative gain,IDCG)(最佳DCG)
表示推荐系统某一用户返回的最好的推荐结果列表,即假设返回结果按照相关性排序, 最相关的结果放在最前面, 此序列的DCG为IDCG,DCG的值介于 (0,IDCG] :
表示,结果按相关性由大到小排序,即最佳排序结果
归一化折损累计增益( Normalized discounted cumulative gain,NDCG)
取值范围(0, 1]
例子:
假设搜索回来的5个结果,其相关性分数分别是 3、2、3、0、1、2
CG = 3+2+3+0+1+2
DCG:
k | relk | log2(k+1) | relk /log2(k+1) |
1 | 3 | 1.00 | 3.00 |
2 | 2 | 1.58 | 1.26 |
3 | 3 | 2.00 | 1.50 |
4 | 0 | 2.32 | 0.00 |
5 | 1 | 2.58 | 0.39 |
6 | 2 | 2.81 | 0.71 |
sum | 6.86 |
IDCG:
假如我们实际召回了8个物品,除了上面的6个,还有两个结果,假设第7个相关性为3,第8个相关性为0。那么在理想情况下的相关性分数排序应该是:3、3、3、2、2、1、0、0。计算IDCG@6:
k | relk | log2(k+1) | relk /log2(k+1) |
1 | 3 | 1.00 | 3.00 |
2 | 3 | 1.58 | 1.89 |
3 | 3 | 2.00 | 1.50 |
4 | 2 | 2.32 | 0.86 |
5 | 2 | 2.58 | 0.77 |
6 | 1 | 2.81 | 0.36 |
sum | 8.38 |
所以,NDCG@6 = 6.86/8.38 = 81.86%
几个疑问:
1、DCG的公式问题1
本文中的公式:
还看到过:
哪个更合理?区别何在?
2、DCG的公式问题2
当rel的取值不止0和1时,还能用如下公式吗?
看到有些说法是以上公式,只适合打分分两档的情况,但美团这本书里的例子:
虽然relk有三种取值,但使用的仍是上述公式(最后一列)。
若采用如下公式(倒数第二列),得到的IDCG值是不一样的。
DCG | k | relk | log2(k+1) | relk /log2(k+1) | (2relk -1)/log2(k+1) |
1 | 1 | 1.00 | 1.00 | 1.00 | |
2 | 1 | 1.58 | 0.63 | 0.63 | |
3 | 2 | 2.00 | 1.00 | 1.50 | |
4 | 0 | 2.32 | 0.00 | 0.00 | |
sum | 2.63 | 3.13 | |||
IDCG | k | relk | log2(k+1) | relk /log2(k+1) | (2relk -1)/log2(k+1) |
1 | 2 | 1.00 | 2.00 | 3.00 | |
2 | 1 | 1.58 | 0.63 | 0.63 | |
3 | 1 | 2.00 | 0.50 | 0.50 | |
4 | 0 | 2.32 | 0.00 | 0.00 | |
sum | 3.13 | 4.13 | |||
percent | 84.03 | 75.79 |
NDCG参考了: