评估排名结果的指标是什么?

数据挖掘 预言 评估 表现 公制 排行
2022-03-05 13:55:29

我在 stackexchange 上进行了搜索,发现了一些类似thisthis的主题,但它们与我的问题不太相关(或者至少我不知道如何使它们与我的问题相关)。

无论如何,假设我有两组预测结果,如df1和所示df2

y_truth = [0, 1, 0, 1, 0, 1, 0, 1, 0, 1]
y_predicted_rank1 = [6, 1, 7, 2, 8, 3, 9, 4, 10, 5]
y_predicted_rank2 = [4, 1, 7, 2, 8, 3, 9, 6, 10, 5]
df1 = pd.DataFrame({'tag': yy_truth, 'predicted_rank': y_predicted_rank1}).sort_values('predicted_rank')
df2 = pd.DataFrame({'tag': yy_truth, 'predicted_rank': y_predicted_rank2}).sort_values('predicted_rank')

print(df1)

#   tag predicted_rank
#1  1   1
#3  1   2
#5  1   3
#7  1   4
#9  1   5
#0  0   6
#2  0   7
#4  0   8
#6  0   9
#8  0   10


print(df2)
#   tag predicted_rank
#1  1   1
#3  1   2
#5  1   3
#0  0   4
#9  1   5
#7  1   6
#2  0   7
#4  0   8
#6  0   9
#8  0   10

通过查看它们,我知道df1比 更好df2,因为在 中df2,负样本(零)被预测为排名 #4。所以我的问题是,这里可以使用什么度量标准,以便我可以(数学上)判断df1df2

1个回答

对于比较两个排名, Spearman 的排名相关性是一个很好的衡量标准。这可能值得一试,但由于您的黄金真理似乎是二元的,我认为前 N 精度(或它的某些变体)会更合适(优点:易于解释)。您还可以考虑使用曲线下面积 (AUC),使用预测排名作为变量阈值(不太直观,但不需要选择任何前 N)。