多标签分类的评价指标

多标签图像分类 (Multi-label Image Classification)
HCP: A Flexible CNN Framework for Multi-Label Image Classification

https://blog.youkuaiyun.com/zhangjunhit/article/details/72818610
https://111qqz.com/2018/02/多标签图像分类任务的评价方法-map/
Keras 实现
https://blog.youkuaiyun.com/sinat_26917383/article/details/72861152

多标签文本分类

https://blog.youkuaiyun.com/wjj5881005/article/details/53389833
macro-averaged and micro-averaged
https://sanmisanfan.github.io/2017/08/16/mulitlable-classification/

多标签的多分类区别

多类分类问题:有多个类别,但每个实例只分配一个类别。
多标签分类问题:有多个类别,且每个实例可以使用多个类别。比如,一部电影被归类为喜剧和浪漫类型。每部电影都有可能被分成一个或多个不同的类别,这些类型的问题被称为多标签分类问题。

简而言之,通过单个实例所能使用的类别数(标签数)来区分这两个问题。

http://www.atyun.com/5376.html

### 多标签分类中的常用评估指标 多标签分类是一种机器学习任务,在这种任务中,每个样本可以被分配多个类别。为了衡量模型性能的好坏,通常会采用一系列专门设计的评估指标。 #### 精确率 (Precision) 精确率表示预测为正类别的样本中有多少比例实际上是正类别。对于多标签分类问题,可以通过计算所有标签上的平均值来得到总体的精确率[^1]。 \[ \text{Precision} = \frac{\sum_{i=1}^{n} TP_i}{\sum_{i=1}^{n}(TP_i + FP_i)} \] 其中 \(TP_i\) 和 \(FP_i\) 分别代表第 i 个标签的真实正例数和假正例数。 #### 召回率 (Recall) 召回率是指实际为正类别的样本中有多少比例被成功识别出来。同样地,也可以通过求取各个标签上召回率的均值得到整体表现[^2]。 \[ \text{Recall} = \frac{\sum_{i=1}^{n} TP_i}{\sum_{i=1}^{n}(TP_i + FN_i)} \] 这里 \(FN_i\) 表示第 i 个标签的假负例数量。 #### F1分数 (F1-Score) 由于精确率和召回率之间可能存在权衡关系,因此引入了综合考虑两者平衡性的度量标准——F1分数[^3]。 \[ F_1 = 2 * \frac{\text{Precision} * \text{Recall}}{\text{Precision} + \text{Recall}} \] 此公式适用于二元情况;而对于多标签场景,则需分别针对每一个可能的目标变量单独计算后再加以汇总处理。 #### Hamming损失 (Hamming Loss) 这是一种特别适合用来评判多标记数据集预测效果好坏的方法之一。它定义为错误标注的比例,即在整个测试集中误判次数占总实例-标签对总数之百分比[^4]。 \[ HL(Y, Z) = \frac{1}{m}\Sigma^m_{j=1}\frac{|y_j \oplus z_j|}{l} \] 在此表达式里,\(Y=\{y_1,..., y_m\},Z=\{z_1,... ,z_m\}\),分别对应真实值矩阵与估计值矩阵;而符号"\(\oplus\)"意味着逐位异或运算操作符。 ```python from sklearn.metrics import hamming_loss, precision_score, recall_score, f1_score # Example usage of metrics functions with true and predicted labels. true_labels = [[0, 1], [1, 1]] predicted_labels = [[0, 1], [1, 0]] hl = hamming_loss(true_labels, predicted_labels) ps = precision_score(true_labels, predicted_labels, average='samples') rs = recall_score(true_labels, predicted_labels, average='samples') fs = f1_score(true_labels, predicted_labels, average='samples') print(f'Hamming Loss: {hl}') print(f'Precision Score: {ps}') print(f'Recall Score: {rs}') print(f'F1 Score: {fs}') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值