多标签排名指标 - 排名损失 |机器学习
Ranking Loss 定义为相对于正确排序的标签数量的错误排序标签的数量。排名损失的最佳值可以为零
给定一个真实标签的二进制指示矩阵
与每个标签相关的分数表示为在哪里,
排名损失可以计算为:
在哪里表示集合中非零元素的数量,并且表示向量中元素的数量(集合的基数)。最小排名损失可以为 0。这是当所有标签在预测标签中正确排序时。
代码:使用 scikit-learn 库实现排名损失的Python代码。
# import sklearn and numpy libraries
import numpy as np
from sklearn.metrics import label_ranking_loss
# take sample dataset
y_true = np.array([[1, 0, 0], [0, 1, 0], [0, 0, 1]])
y_pred_score = np.array([[0.75, 0.5, 1], [1, 0.2, 0.1], [0.1, 1, 0.9]])
# calculate and print label ranking loss
print(label_ranking_loss(y_true, y_pred_score ))
# this will give minimum ranking loss
y_pred_score = np.array([[0.75, 0.5, 0.1], [0.1, 0.6, 0.1], [0.3, 0.3, 0.4]])
print(label_ranking_loss(y_true, y_pred_score ))
输出:
0.5
0
在第一个预测的第一个样本中,唯一的非零标签已排在前 2 个值中。第二个和第三个样本类似。所有人都在基本事实标签中只有一个非标签。
通过将这些值放入我们得到的公式中,
在第二个打印语句中,所有真实标签对应于预测标签中的最大值。因此,ranking loss 为 0。当我们将这些值放入公式时,我们也可以得到相同的答案,因为每个样本的最右边的项是0 。
参考:
- Tsoumakas, G., Katakis, I., & Vlahavas, I. (2010)。挖掘多标签数据。在数据挖掘和知识发现手册(第 667-685 页)中。美国施普林格。