多标签排名指标-标签排名平均精度 |机器学习
标签排名平均精度 (LRAP) 测量预测模型的平均精度,但使用的是精确召回。它测量每个样本的标签排名。它的值总是大于0 。该指标的最佳值为1 。该指标与平均精度有关,但使用标签排名而不是精度和召回率
LRAP 基本上会问一个问题,即对于每个给定的样本,哪些百分比较高的标签是真正的标签。
给定一个真实标签的二进制指示矩阵
与每个标签相关的分数表示为在哪里,
然后我们可以使用以下公式计算LRAP:
在哪里,
和
代码:实现 LRAP 的Python代码
# import numpy and scikit-learn libraries
import numpy as np
from sklearn.metrics import label_ranking_average_precision_score
# take sample datasets
y_true = np.array([[1, 0, 0],
[1, 0, 1],
[1, 1, 0]])
y_score = np.array([[0.75, 0.5, 1],
[1, 0.2, 0.1],
[0.9, 0.7, 0.6]])
# print the output
print(label_ranking_average_precision_score(
y_true, y_score))
输出 :
0.777
为了理解上面的例子,让我们以人类(由[1, 0, 0]表示),猫(由[0, 1, 0]表示),狗(由[0, 0, 1]表示)三个类别。我们提供了三个样本,例如[1, 0, 0], [1, 0, 1], [1, 1, 0] 。这意味着我们总共有5 个真实标签(3 个人类,1 个猫和 1 个狗)。例如,在第一个样本中,只有真正的标签人在预测标签中排名第二。所以,rank = 2。接下来我们需要找出沿途有多少正确的标签。只有一个正确的标签是人类,因此分子值为 1。因此分数变为 1/2 = 0.5。
因此,第 1 个样本的 LRAP 值为:
在第二个样本中,排名第一的是人类,其次是猫和狗。人类的分数是 1/1 = 1,狗是 2/3 = 0.66(沿途真实标签排名的数量/预测标签中狗类别的排名)。
第二个样本的 LRAP 值为:
同样,对于第三个样本,人类类的分数值是 1/1 = 1,猫类是 2/2 = 1。第三个样本的 LRAP 值为:
因此,总 LRAP 是每个样本上的 LRAP 之和除以样本数。