交叉熵相关知识

形象理解AUC计算公式 形象理解AUC计算公式 AUC是评价一个二分类器性能的主流数值指标,定义为ROC曲线下方的面积,但这个算起来比较复杂,需要统计假阳性。另一个定义更直观,随机给一个正样本和一个负样本,多大概率正样本的score更高。 换一种说法,假设正样本有MMM个,负样本有NNN个,在所有M∗NM*NM∗N个正负样本对中,有多少正样本比负样本分高。提高AUC意味着,将所有样本按score排序,正样本要尽量排在负样... 阅读详情

交叉熵

最近在使用lightGBM做二分类的一些工作,用到了交叉熵,发现了使用sklearn当中的库和自己计算的结果并不相同的情况,分析记录如下

交叉熵公式
bce=−1N∑i(yilogpi+(1−yi)log(1−pi)) bce = - \frac{1}{N} \sum_i (y_i log p_i + (1-y_i)log(1-p_i)) bce=−N1​i∑​(yi​logpi​+(1−yi​)log(1−pi​))

  1. 自定义交叉熵
def logloss_z(trues, preds, sample_weight=1, eps=1e-7):
    """自定义交叉熵"""
    preds = np.clip(preds, eps, 1-eps)    # 防止log0出现
    loss = np.where(trues, -np.log(preds), -np.log(1-preds))
    return np.mean(loss * sample_weight)

  1. sklearn.metrics.log_loss
from sklearn.metrics import log_loss
  1. tf.losses.BinaryCrossentropy()
import tensorflow as tf
bce = tf.losses.BinaryCrossentropy()
bce(trues, preds)

交叉熵的一阶,二阶倒数

在用到lightGBM的时候,想自定义交叉熵损失函数,对交叉熵损失函数做一些改动,就需要指明损失函数的一阶二阶导数

一阶导数:
p=sigmoid(x)=11+e−x∂p∂x=p(1−p) p = sigmoid(x) = \frac{1}{1 + e^{-x}} \\ \frac{\partial{p}}{\partial{x}} = p ( 1 - p ) p=sigmoid(x)=1+e−x1​∂x∂p​=p(1−p)

grad=∂loss∂x=∂[−ylogp−(1−y)log(1−p)]∂x=∂loss∂p∗∂p∂x=p−y grad= \frac{\partial{loss}}{\partial{x}} = \frac{\partial{[-ylogp - (1-y)log(1-p)}]}{\partial{x}} \\ = \frac{\partial{loss}}{\partial{p}} * \frac{\partial{p}}{\partial{x}} = p - y grad=∂x∂loss​=∂x∂[−ylogp−(1−y)log(1−p)]​=∂p∂loss​∗∂x∂p​=p−y

二阶导数:
hess=∂2loss∂x2=p(1−p) hess = \frac{\partial^2loss}{\partial{x^2}} = p(1-p) hess=∂x2∂2loss​=p(1−p)

FP(假阳性):无病 -> 有病
FN(假阴性):有病 -> 无病,这种情况通常是比较严重的,耽误治疗的时机

−yilogpi-y_ilogp_i−yi​logpi​:表示所有正样本的预测情况,正->负:FN, 正->正:TP,这一项的值越小说明pip_ipi​的值越大,预测的FN越小,所以可以通过增加这一项的权重来减少FN

另外在lightGBM当中使用cross_entropy_lambda计算所得的交叉熵和自定义的交叉熵结果相同

注意

  • sklearn.metrics.log_loss 与 我自定义交叉熵的一点区别
import numpy as np
from sklearn.metrics import log_loss
from scipy.special import softmax, expit
import tensorflow as tf
bce = tf.losses.BinaryCrossentropy()

def logloss_z(trues, preds, sample_weight=1, eps=1e-7):
    """自定义损失函数"""
    #preds = np.clip(preds, eps, 1-eps)
    loss = np.where(trues, -np.log(preds), -np.log(1-preds))
    #return np.mean(loss * sample_weight)
    return np.average(loss, weights=sample_weight)


trues = np.array([1, 0])
preds = np.array([0.8, 0.1])
w = np.array([0.1, 0.6])

print(
    log_loss(trues, preds, normalize=True,sample_weight=w), 
    logloss_z(trues, preds, sample_weight=w),
    bce(tf.expand_dims(trues, axis=-1), tf.expand_dims(preds, axis=-1), sample_weight=w)
)
  • 通过上面的结果可以看到sklearn.metrics.log_loss使用的是np.average加权平均
  • tf.bce 使用的是np.mean(loss*sample_weight)

参考文章

  • 非常不错的一篇树模型自定义损失函数的介绍:https://www.zhangqibot.com/post/ml-custom-loss-lgbm-xgb/
  • lightGBM官方教程:https://github.com/microsoft/LightGBM/blob/master/examples/python-guide/advanced_example.py
  • sklearn.metrics.log_loss: https://github.com/scikit-learn/scikit-learn/blob/fd237278e/sklearn/metrics/_classification.py#L2118
交叉熵cross_entropy的python实现 代码实现 import math # Write a function that takes as input two lists Y, P, # and returns the float corresponding to their cross-entropy. def cross_entropy(Y, P): sum=0.0 for x in map(lambda y,p:(... 阅读详情

相关推荐

带隙基准电路设计实战:从HSPICE仿真到Virtuoso版图全流程解析

在模拟集成电路设计中,基准电压源是确保系统精度与稳定性的核心模块。其基本原理在于巧妙结合具有正、负温度系数的电压,通过加权求和实现近似零温度系数的稳定输出,这一特性对于高精度数据转换器、电源管理芯片等至关重要。从工程实践角度,利用HSPICE进行深入的直流工作点、温度扫描和工艺角仿真,是验证电路性能、优化温度系数和电源抑制比的关键步骤。而借助Cadence Virtuoso进行版图实现时,必须重点关注电阻与BJT的匹配布局、敏感节点的保护以及电源完整性设计,以确保设计意图在硅片上得以准确呈现。通过完整的从前

weixin_29181861的博客 285

auc计算公式_auc的理解

AUC的概率意义:  AUC是衡量二分类模型优劣的一种评价指标,表示预测的正例排在负例前面的概率。计算方法:计算ROC曲线下面的面积计算模型将正样本排在负样本前面的概率。计算假设总共有(m+n)个样本,其中正样本m个,负样本n个,总共有m*n个样本对,计数,正样本预测为正样本的概率值大于负样本预测为正样本的概率值记为1,累加计数,然后除以(m*n)就是AUC的值。计算公式   为了求的组合中...

weixin_39622562的博客 1503

AB SCIEX质谱数据分析实战:从PeakView入门到精通

质谱分析是现代生命科学和药物研发中不可或缺的核心技术,它通过测量离子的质荷比来鉴定和定量化合物。其基本原理是将样品离子化后,在电场和磁场中按质荷比分离,最终形成质谱图。这项技术的核心价值在于能够从复杂混合物中高灵敏度、高特异性地获取化合物的定性和定量信息,广泛应用于代谢组学、蛋白质组学、环境监测和药物分析等领域。在实际工作中,高效的数据处理平台至关重要。以AB SCIEX质谱仪生成的.wiff文件为例,其原始数据需要专业软件进行解析。PeakView软件正是这样一个综合平台,它集成了高级数据处理、谱图解析和

weixin_29053577的博客 306

【深度学习】日常笔记4

softmax(o)给出的分布⽅差,并与softmax交叉熵损失l(y, yˆ)的⼆阶导数匹配。Softmax函数可以将一组任意实数值转换为一个概率分布,它的输出值是各个类别的概率估计。如果我们用softmax函数得到的概率分布与真实分布非常相似,那么交叉熵损失函数就会趋近于0,表示模型的预测结果和真实结果非常接近。而关于softmax函数的方差,它可以衡量这个概率分布的分散程度,也就是模型对不同类别的预测置信度的稳定性。

努力学习的DS 1888

YOLO26 旋转框检测 OBB 技术:角度预测与解码优化

YOLO26旋转框检测技术通过CSL角度编码有效解决了OBB检测中的周期性问题。该技术采用5参数表示法(cx,cy,w,h,θ),在检测头中分别处理分类、回归和角度预测。核心创新点包括:1)使用高斯或三角窗口的CSL编码对角度进行平滑表示;2)通过加权平均解码角度,避免边界不连续问题。该方法在遥感、文本检测等需要精确方向信息的场景中表现优异,相比传统HBB框可提升定位精度30%以上,同时保持了YOLO系列的高效特性。

一键难忘的博客 521

学Simulink——十二脉波整流电路(移相变压器)谐波抵消仿真

Y:Δ = 1:√3(若 DC 同压)— 此处同相电压故 220V(Y)=220V(Δ phase)Y(相电压=220V)、Δ(线电压=380V ⇒ 相=220V,30° 移相)可经 Lbal​=0.5mH(平衡电抗)或直接短(大 L_dc 下均流尚可)✅ 直流输出纹波频率 = 12·f_line(vs 6·f_line)直流输出 → Ldc​=50mH→Cdc​=2200µF→R=30Ω。Line‑Line RMS = 380 V(⇒ 相=220V)Vdc​≈1.35⋅380≈513V(同 6‑脉波)

xiaoheshang_123的博客 59

李沐动手学习深度学习——3.4练习

softmax回归

weixin_45496725的博客 1126

基于综合阻抗特征的配电架空线路单相断线故障区段定位研究

本文提出了一种基于综合阻抗特征的配电架空线路单相断线故障区段定位方法。通过分析故障后正序、负序阻抗变化,构造综合阻抗判据实现精准定位。仿真结果表明:该方法能有效识别故障区段,差异度判据显著(故障区段达0.508,非故障区段<0.016);对过渡电阻(1-200Ω)和负荷变化具有强鲁棒性,定位准确率不受影响。相比传统方法,综合阻抗法放大了断线故障特征,解决了弱故障信号检测难题,为配电网安全运行提供了可靠的技术手段。

AI的内部世界的博客 78

auc vs logloss

auc 更多的关注的是排序的结果。logloss 则是越小越好。 auc 与 logloss 关系比如 1 1 0 1 预测值 为 0.5 0.5 0.3 0.5 那么 auc 是 1 我们提升预测值到 0.7 0.7 0.4 0.7那么 auc 依然是1 但是 logloss 有了很大的提升。 ...

weixin_34023863的博客 1505

YOLO11涨点优化:原创自研 | 魔改Bottleneck,具备多尺度和特征通道融合的结构

可以将C3k2_MSAMCS放在neck,或者backbone和neck同时修改,具体看自己数据集的涨点情况决定

①答疑群聊服务;②YOLO大模型知识问答系统;③计算机视觉论文生成智能体; 1648

《YOLOv8:从入门到实战》专栏介绍 & 专栏目录

本专栏涵盖了丰富的YOLOv8算法从入门到实战系列教程,专为学习YOLOv8的同学而设计,堪称全网最详细的教程!🌈🌈🌈

小哥谈 6488

信息熵、交叉熵等相关基础知识

信息熵、交叉熵等基本概念

weixin_45653897的博客 1361

YOLOv11的物理信息神经网络(PINN):引入物理规律约束目标运动预测

本文介绍了YOLOv11目标检测与PINN物理信息神经网络的融合技术。YOLOv11采用增强特征提取和参数优化架构,在保持实时性的同时提升检测精度。PINN通过将物理方程嵌入损失函数,实现数据高效学习。两者的结合可显著提升运动预测准确性和遮挡处理鲁棒性。文章详细阐述了环境配置、YOLOv11模型验证方法,并提供了基础PINN框架代码实现,展示了物理约束如何通过自动微分整合到神经网络中。该融合技术适用于自动驾驶、无人机导航等需要物理规律建模的视觉感知场景。

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 422

【损失函数01】交叉熵

信息量是对事件的不确定性的度量。假设有两个事件:显而易见地,事件A发生的概率为1,是一种必然事件。事件B发生的概率为0.5,不确定性很大,因此事件B的信息量要远远大于事件A。那么如何用数字直观地表达这种信息量大小呢?如下公式就可以: l(x)=−log(p(x))l(x) = -log(p(x))l(x)=−log(p(x))其中: l(x)l(x)l(x) 是信息量 p(x)p(x)p(x) 是事件xxx发生的概率。熵是指对信息量求期望。具体来说就是,给定一个系统,求出所有可能发生的事件的信息量,然后和事

老王的博客 1262

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

零碎知识点——交叉熵

详见收藏列表

温瞳 151

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

softmax中交叉熵的求导法则

交叉熵求导

weixin_45718987的博客 295

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

pytorch之交叉熵损失函数

交叉熵损失函数:https://blog.youkuaiyun.com/weixin_37567451/article/details/80895309 pytorch中实现的交叉熵损失函数:https://blog.youkuaiyun.com/geter_CS/article/details/84857220

innocent_cat的博客 1万+

交叉熵损失函数好文推荐

点击打开链接 点击打开链接

qq_36273293的博客 1152

交叉熵代价函数(损失函数)及其求导推导

前言交叉熵损失函数交叉熵损失函数的求导 前言

liuheng0111的博客 2265

跟着StatQuest学知识04-ArgMax、SoftMax和交叉熵

ArgMax、SoftMax和交叉熵

m0_74803856的博客 692

cross_entropy 交叉熵

https://www.jianshu.com/p/47172eb86b39

MrQueens的博客 250

二分类多分类交叉熵

链接

ZHUYOUKANG的博客 679

均方误差和交叉熵代价函数

均方误差函数: 交叉熵代价函数: 参考: 交叉熵代价函数(损失函数)及其求导推导

qq_34809033的博客 838

交叉熵、信息熵、KL散度、互信息与Information Bottleneck【信息瓶颈IB】之间的关系

信息熵,相对熵(KL),交叉熵、互信息和信息瓶颈

qq_45249273的博客 5299

交叉熵代价函数解释

https://blog.youkuaiyun.com/u012162613/article/details/44239919 https://blog.youkuaiyun.com/xg123321123/article/details/52864830

邹小驴 504

交叉熵损失函数原理详解(转发)

交叉熵损失函数原理详解 (自己收藏使用)

weixin_40264772的博客 686
上一篇: 【安装教程】mac安装thrift0.9.2
下一篇: 【C++】GTEST && google/benchmark工具安装
GodsLeft
博客等级 码龄13年 53粉丝 82原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值