UAR (Unweighted Average Recall) 指标

UAR (Unweighted Average Recall) 指标详解

UAR(Unweighted Average Recall) 是一种评估多分类或不平衡分类任务中模型性能的重要指标,特别是在类别分布不均匀时,用于弥补传统分类指标(如 Accuracy)的不足。


1. 什么是 UAR?

UAR 是各类别召回率(Recall)的算术平均值,不考虑每个类别的样本数量。相比于加权指标(如 Weighted Average Recall),UAR 更关注模型在小样本类别上的表现。

  • 公式
    UAR = 1 C ∑ c = 1 C Recall c \text{UAR} = \frac{1}{C} \sum_{c=1}^C \text{Recall}_c UAR=C1c=1CRecallc
    C C C:类别总数。
    Recall c \text{Recall}_c Recallc:第 c c c类的召回率,计算方式为:
    Recall c = True Positives for class c Total samples of class c \text{Recall}_c = \frac{\text{True Positives for class c}}{\text{Total samples of class c}} Recallc=Total samples of class cTrue Positives for class c

2. 与 Recall 的区别

普通的 Recall 关注每个类别的召回率,但在计算时会根据类别的样本数量加权。这在类别分布不平衡的情况下会导致大类别主导整体指标。

  • Weighted Recall
    Weighted Recall = 1 N ∑ c = 1 C n c ⋅ Recall c \text{Weighted Recall} = \frac{1}{N} \sum_{c=1}^C n_c \cdot \text{Recall}_c Weighted Recall=N1c=1CncRecallc
    其中 n c n_c nc是类别 c c c的样本数量, N N N是总样本数。

  • UAR 则直接取所有类别召回率的平均值,无论样本数量多少。因此,它对小样本类别的性能更加敏感。


3. 为什么使用 UAR?

  • 类别不平衡问题
    在数据集中,某些类别的样本可能占绝大多数(如分类中有 90% 的样本属于一个类别)。传统的准确率或加权指标可能被大类别的表现主导,忽略了小类别的性能。

  • 更公平的衡量标准
    UAR 通过对每个类别的召回率进行简单平均,确保所有类别都得到平等的关注,适用于以下场景:

    • 数据分布高度不均衡。
    • 小类别的重要性与大类别相当(如医疗诊断中罕见疾病的识别)。

4. 计算过程

以一个三分类任务为例,类别分别为 A, B, C,样本分布如下:

  • A:100 个样本
  • B:30 个样本
  • C:20 个样本

预测结果的召回率为:
Recall A = 90 / 100 = 0.9 \text{Recall}_A = 90/100 = 0.9 RecallA=90/100=0.9
Recall B = 20 / 30 = 0.6667 \text{Recall}_B = 20/30 = 0.6667 RecallB=20/30=0.6667
Recall C = 10 / 20 = 0.5 \text{Recall}_C = 10/20 = 0.5 RecallC=10/20=0.5

计算 UAR:
UAR = 1 3 ( Recall A + Recall B + Recall C ) \text{UAR} = \frac{1}{3} \left( \text{Recall}_A + \text{Recall}_B + \text{Recall}_C \right) UAR=31(RecallA+RecallB+RecallC)
UAR = 1 3 ( 0.9 + 0.6667 + 0.5 ) = 0.6889 \text{UAR} = \frac{1}{3} (0.9 + 0.6667 + 0.5) = 0.6889 UAR=31(0.9+0.6667+0.5)=0.6889

即使类别 C 样本数较少,其召回率仍对最终结果产生了同等影响。


5. 实现 UAR 的方法

scikit-learn 中,可以通过手动计算每个类别的召回率,然后取其平均值来实现 UAR:

from sklearn.metrics import recall_score
import numpy as np

# 假设真实标签和预测结果如下:
y_true = [0, 0, 1, 1, 1, 2, 2, 2, 2, 2]  # 真实类别
y_pred = [0, 1, 1, 1, 1, 2, 2, 0, 2, 1]  # 预测类别

# 计算每个类别的召回率
recalls = recall_score(y_true, y_pred, average=None)  # 输出每个类别的召回率

# 计算 UAR
uar = np.mean(recalls)
print(f"UAR: {uar}")

6. UAR 的优势和局限性

优势
  • 对类别不平衡问题敏感。
  • 强调所有类别的表现,尤其是小类别。
局限性
  • 在类别分布相对平衡的情况下,与 Weighted Recall 或 Accuracy 差别不大。
  • 忽略了类别的重要性权重(某些任务可能需要对某些类别赋予更高权重)。

7. 应用场景

  • 医疗诊断:少数类别可能是罕见疾病,UAR 可评估对这些类别的识别能力。
  • 异常检测:异常样本(小类别)的识别往往比正常样本更重要。
  • 语音识别、多模态学习:如对话情绪分类中的小类别情绪识别。

最后

UAR 是一个公平、类别无关的评估指标,适用于类别不平衡问题。它通过对每个类别的召回率简单平均,确保模型在所有类别上的性能被同等对待,非常适合需要平衡各类别表现的场景。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值