Shortcuts

torcheval.metrics.functional.multiclass_auprc

torcheval.metrics.functional.multiclass_auprc(input: Tensor, target: Tensor, num_classes: int | None = None, *, average: str | None = 'macro') Tensor

计算AUPRC,也称为平均精度,它是多类分类中精确率-召回率曲线下的面积。 其类版本是torcheval.metrics.MulticlassAUPRC

精确率定义为 \(\frac{T_p}{T_p+F_p}\),它是模型预测为正例的样本中真正为正例的概率。 召回率定义为 \(\frac{T_p}{T_p+F_n}\),它是真正为正例的样本被模型预测为正例的概率。

精确率-召回率曲线在x轴上绘制召回率,在y轴上绘制精确率,两者都在0和1之间。此函数返回该曲线下的面积。如果面积接近1,模型支持一个阈值,该阈值能够正确识别高比例的真阳性,同时拒绝足够的假例,使得大多数真实预测都是真阳性。

在多类版本的auprc中,目标张量是一维的,并且包含一个整数条目,表示输入张量中每个示例的类别。每个类别都以一对多的方式独立考虑,该类别的示例被标记为条件真,所有其他类别被视为条件假。

如果不进行平均,N类多类auprc的结果等同于具有N个任务的二元auprc,如果:

  1. 输入被转置,在二分类中样本与列相关联,而在多分类中样本与行相关联。

  2. 目标 target 从形式 [1,0,1] 转换为形式 [[0,1,0], [1,0,1]]

Parameters:
  • input (Tensor) – 标签预测的二维张量 它应该是形状为 (n_sample, n_class) 的概率或对数几率。

  • target (Tensor) – 形状为 (n_samples, ) 的真实标签的一维张量。

  • num_classes (int) – 类别数量。

  • average (str, optional) –

    • 'macro' [默认]:

      分别计算每个类别的指标,并返回它们的未加权平均值。

    • None'none':

      分别计算每个类别的指标,并返回每个类别的指标。

Examples::
>>> import torch
>>> from torcheval.metrics.functional import multiclass_auprc
>>> input = tensor([[0.5647, 0.2726],
                    [0.9143, 0.1895],
                    [0.7782, 0.3082]])
>>> target = tensor([0, 1, 0])
>>> multiclass_auprc(input, target, average=None)
tensor([0.5833, 0.3333])
>>> multiclass_auprc(input, target)
tensor(0.4583)
>>> input = torch.tensor([[0.1, 1],
                          [0.5, 1],
                          [0.7, 1],
                          [0.8, 0]])
>>> target = torch.tensor([1, 0, 0, 1])
>>> multiclass_auprc(input, target, 2, average=None)
tensor([0.5833, 0.4167])

与二进制的连接 >>> from torcheval.metrics.functional import binary_auprc >>> input = torch.tensor([[0.1, 0.5, 0.7, 0.8], >>> [1, 1, 1, 0]]) >>> target = torch.tensor([[0, 1, 1, 0], >>> [1, 0, 0, 1]]) >>> binary_auprc(input, target, num_tasks=2) tensor([0.5833, 0.4167])