【漫话机器学习系列】070.汉明损失(Hamming Loss)

news/2025/2/1 3:44:27 标签: 机器学习, 人工智能

汉明损失(Hamming Loss)

汉明损失是多标签分类问题中的一种评价指标,用于衡量预测结果与实际标签之间的差异。它定义为预测错误的标签比例,即错误标签的个数占总标签数量的比值。

在多标签分类中,每个样本可以属于多个类别,因此汉明损失对每个样本的每个类别进行独立评估,而不关心类别之间的相关性。


公式

假设:

  • n 是样本总数。
  • L 是类别总数。
  • 是第 i 个样本的真实标签向量。
  • 是第 i 个样本的预测标签向量。

汉明损失的定义为:

其中:

  • 是指示函数,当真实标签 与预测标签 不相等时,取值为 1,否则为 0。

汉明损失的取值范围为 [0, 1],值越小表示预测越准确。


解释

  • 全对:如果预测完全正确(每个样本的每个标签都正确),汉明损失为 0。
  • 全错:如果预测完全错误(所有标签都被错误预测),汉明损失为 1。

示例

假设有 3 个样本和 4 个类别(标签):

真实标签矩阵 Y:

预测标签矩阵

逐元素比较错误标签数:

错误标签总数为 3,总标签数为

汉明损失:


代码实现

以下是 Python 中的实现代码:

import numpy as np
from sklearn.metrics import hamming_loss

# 定义真实标签矩阵和预测标签矩阵
Y = np.array([
    [1, 0, 1, 0],
    [0, 1, 1, 0],
    [1, 1, 0, 0]
])

Y_pred = np.array([
    [1, 0, 0, 0],
    [0, 1, 0, 0],
    [1, 0, 0, 0]
])

# 计算汉明损失
hamming_loss_value = hamming_loss(Y, Y_pred)
print("汉明损失:", hamming_loss_value)

 

运行结果:

汉明损失: 0.25

 


优点

  1. 适用于多标签分类:汉明损失能够很好地处理多标签分类任务中的标签不平衡问题。
  2. 直观:它计算错误标签的比例,容易理解和解释。

缺点

  1. 忽略标签相关性:汉明损失将每个标签独立处理,无法捕捉类别之间的关系。
  2. 对类别数敏感:类别数多时,错误标签可能占比更高。

应用场景

  1. 多标签分类问题:如文本分类(一个文本可能属于多个类别)。
  2. 多目标预测问题:如图像标注(图像可能含有多种物体标签)。

汉明损失是多标签分类中一种重要的评价指标,通常与其他指标(如准确率、宏平均 F1 值等)结合使用,以全面评估模型性能。

 


http://www.niftyadmin.cn/n/5838991.html

相关文章

基于springboot+vue的扶贫助农系统的设计与实现

开发语言:Java框架:springbootJDK版本:JDK1.8服务器:tomcat7数据库:mysql 5.7(一定要5.7版本)数据库工具:Navicat11开发软件:eclipse/myeclipse/ideaMaven包:…

在彼此的根系里呼吸

爱如草木,需以晨露滋养,而非绳索捆缚。一段健康的亲密关系,恰似两株根系相连却各自向阳的树——风起时枝叶相触,晴空下共享光影,却始终保有向地心深处生长的自由。那些纠缠的根须是信任编织的网,容得下沉默…

CNN的各种知识点(一):卷积神经网络CNN通道数的理解!

卷积神经网络CNN通道数的理解! 通道数的核心概念解析1. 通道数的本质 2. 单张灰度图的处理示例: 3. 批量输入的处理通道与批次的关系: 4. RGB三通道输入的处理计算过程:示例: 5. 通道数的实际意义6. 可视化理解(1) 单通…

一文读懂fgc之cms

一文读懂 fgc之cms-实战篇 1. 前言 线上应用运行过程中可能会出现内存使用率较高,甚至达到95仍然不触发fgc的情况,存在内存打满风险,持续触发fgc回收;或者内存占用率较低时触发了fgc,导致某些接口tp99,tp…

SQL99之内连接查询

SQL99是SQL语言的一个标准,于1999年发布。内连接查询是SQL中非常常用的一种查询方式,用于根据指定的条件从两个或多个表中获取相关联的数据。下面将详细介绍SQL99中的内连接查询,并以通熟易懂的语言进行讲解,同时给出代码例子、注…

(java) IO流

学习IO流之前,我们需要先认识file对象,帮助我们更好的使用IO流 1.1 file 作用:关联硬盘上的文件 写法: File(String path); (推荐)File(String parent, String child); //由父级路径,再子级路径拼接而成File(File p…

QEMU 和 GDB 调试 Linux 内核

使用 QEMU 和 GDB 调试 Linux 内核是一种非常强大的方法,可以帮助开发人员调试和分析内核的行为。下面将详细介绍如何设置和使用 QEMU 和 GDB 来调试 Linux 内核。 环境准备 ::: tip 系统环境 22.04.3-Ubuntugcc (Ubuntu 11.4.0-1ubuntu1~22.04) 11.4.0GNU gdb (U…

数学建模算法汇总(全网最全,含matlab案例代码)

数学建模常用的算法分类 全国大学生数学建模竞赛中,常见的算法模型有以下30种: 最小二乘法数值分析方法图论算法线性规划整数规划动态规划贪心算法分支定界法蒙特卡洛方法随机游走算法遗传算法粒子群算法神经网络算法人工智能算法模糊数学时间序列分析马…