样本不均衡 Weighted cross entropy and Focal loss
@创建于:2022.03.30
@修改于:2022.03.30
文章目录
- 1、样本不均衡解决办法
- 1.1 数据样本
- 1.1.1 欠采样、过采样
- 1.1.2 数据增强
- 1.2 目标(损失)函数
- 1.2.1 class weight
- 1.2.2 OHEM
- 1.2.3 Focal loss
- 1.3 模型算法
- 1.3.1 采样+集成学习
- 1.3.2 异常检测
- 1.4 决策及评估指标
- 2、Weighted cross entropy and Focal loss
1、样本不均衡解决办法
样本(类别)样本不平衡(class-imbalance)指的是分类任务中不同类别的训练样例数目差别很大的情况,一般地,样本类别比例(Imbalance Ratio)(多数类vs少数类)明显大于1:1(如4:1)就可以归为样本不均衡的问题。现实中,样本不平衡是一种常见的现象,如:金融欺诈交易检测,欺诈交易的订单样本通常是占总交易数量的极少部分,而且对于有些任务而言少数样本更为重要。
不均衡解决方法可以归结为:通过某种方法使得不同类别的样本对于模型学习中的Loss(或梯度)贡献是比较均衡的。
1.1 数据样本
1.1.1 欠采样、过采样
最直接的处理方式就是样本数量的调整了,常用的可以:
- 欠采样:减少多数类的数量(如随机欠采样、NearMiss、ENN)。
- 过采样:尽量多地增加少数类的的样本数量(如随机过采样、以及1.1.2数据增强方法),以达到类别间数目均衡。
1.1.2 数据增强
单样本增强(主要用于图像)
主要有几何操作、颜色变换、随机擦除、添加噪声等方法产生新的样本,可参见imgaug开源库。多样本增强
是通过组合及转换多个样本,主要有Smote类(可见imbalanced-learn.org/stable/references/over_sampling.html)、SamplePairing、Mixup等方法在特征空间内构造已知样本的邻域值样本。基于深度学习的数据增强
生成模型如变分自编码网络(Variational Auto-Encoding network, VAE)和生成对抗网络(Generative Adversarial Network, GAN),其生成样本的方法也可以用于数据增强。这种基于网络合成的方法相比于传统的数据增强技术虽然过程更加复杂, 但是生成的样本更加多样。
1.2 目标(损失)函数
损失函数层面主流的方法也就是常用的代价敏感学习(cost-sensitive),为不同的分类错误给予不同惩罚力度(权重),在调节类别平衡的同时,也不会增加计算复杂度。
1.2.1 class weight
scikit模型的’class weight‘方法
clf2 = LogisticRegression(class_weight={0:1,1:10}) # 代价敏感学习
1.2.2 OHEM
OHEM(Online Hard Example Mining)算法的核心是选择一些hard examples(多样性和高损失的样本)作为训练的样本,针对性地改善模型学习效果。对于数据的类别不平衡问题,OHEM的针对性更强。
1.2.3 Focal loss
Focal loss的核心思想是在交叉熵损失函数(CE)的基础上增加了类别的不同权重以及困难(高损失)样本的权重(如下公式),以改善模型学习效果。
focal loss的两个重要性质:
1、当一个样本被分错的时候,pt是很小的,因此调制系数就趋于1,也就是说相比原来的loss是没有什么大的改变的。当pt趋于1的时候(此时分类正确而且是易分类样本),调制系数趋于0,也就是对于总的loss的贡献很小。
2、当γ=0的时候,focal loss就是传统的交叉熵损失,当γ增加的时候,调制系数也会增加。
focal loss的两个性质算是核心,其实就是用一个合适的函数去度量难分类和易分类样本对总损失的贡献。
1.3 模型算法
1.3.1 采样+集成学习
通过重复组合少数类样本与抽样的同样数量的多数类样本,训练若干的分类器进行集成学习。
1.3.2 异常检测
类别不平衡很极端的情况下(比如少数类只有几十个样本),将分类问题考虑成异常检测(anomaly detection)问题可能会更好。
1.4 决策及评估指标
对于类别不均衡下的模型评估,可以采用AUC、AUPRC(更优)评估模型表现。AUC的含义是ROC曲线的面积,其数值的物理意义是:随机给定一正一负两个样本,将正样本预测分值大于负样本的概率大小。AUC对样本的正负样本比例情况是不敏感,即使正例与负例的比例发生了很大变化,ROC曲线面积也不会产生大的变化。
详细介绍参见:一文解决样本不均衡(全)
一文归纳Ai数据增强之法
一文深度解读模型评估方法
2、Weighted cross entropy and Focal loss
- Weighted cross entropy
import numpy as npdef Wce(logits,label,weight):''':param logits: net's output, which has reshaped [batch size,num_class]:param label: Ground Truth which is ont hot encoing and has typr format of [batch size, num_class]:param weight: a vector that describes every catagory's coefficent whose shape is (num_class,):return: a scalar '''loss = np.dot(np.log2(logits)*label,np.expand_dims(weight,axis=1)) + \np.log2(logits) * (1-label)return loss.sum()
- Focal loss
import numpy as npdef focal_loss(logits, label, a, r):''':param logits: [batch size,num_classes] score value:param label: [batch size,num_classes] gt value:param a: generally be 0.5:param r: generally be 0.9:return: scalar loss value of a batch'''p_1 = - a*np.power(1-logits,r)*np.log2(logits)*labelp_0 = - (1-a)*np.power(logits,r)*np.log2(1-logits)*(1-label)return (p_1 + p_0).sum()
Focal Loss
Weighted cross entropy and Focal loss
样本不均衡 Weighted cross entropy and Focal loss相关推荐
- 目标检测分类损失函数——Cross entropy、Focal loss
一.Cross Entropy Loss 交叉熵是用来判定实际的输出与期望的输出的接近程度,刻画的是实际输出与期望输出的距离,也就是交叉熵的值越小,两个概率分布就越接近. 1. CE Loss的定义 ...
- Dice Loss,balanced cross entropy,Focal Loss
Dice Loss Dice系数是一种集合相似度度量函数,取值范围在[0,1]:s=2∣X∩Y∣∣X∣+∣Y∣s=\frac{2|X\cap Y|}{|X|+|Y|}s=∣X∣+∣Y∣2∣X∩Y∣其 ...
- 解决one-stage目标检测正负样本不均衡的另类方法--Gradient Harmonized
正负样本不均衡问题一直是One-stage目标检测中被大家所诟病的地方,He Keming等人提出了Focal Loss来解决这个问题.而AAAI2019上的一篇论文<Gradient Harm ...
- 一、Focal Loss理论及代码实现
文章目录 前言 一.基本理论 二.实现 1.公式 2.代码实现 1.基于二分类交叉熵实现. 2.知乎大佬的实现 前言 本文参考:几时见得清梦博主文章 参考原文:https://www.jianshu. ...
- 【翻译】Focal Loss for Dense Object Detection(RetinaNet)
[翻译]Focal Loss for Dense Object Detection(RetinaNet) 目录 摘要 1.介绍 2.相关工作 3.Focal Loss 3.1 平衡的交叉熵损失 3.2 ...
- Focal Loss损失函数(超级详细的解读)
什么是损失函数? 1.什么是损失呢? 在机器学习模型中,对于每一个样本的预测值与真实值的差称为损失. 2.什么是损失函数呢? 显而易见,是一个用来计算损失的函数.它是一个非负实值函数, ...
- 寻找解决样本不均衡方法之Focal Loss与GHM
寻找解决样本不均衡方法之Focal Loss与GHM 主要参考资料:5分钟理解Focal Loss与GHM--解决样本不平衡利器 - 知乎 (zhihu.com) Focal Loss的引入主要是为了 ...
- 样本不均衡问题 (OHEM, Focal loss)
目录 不均衡问题分析 正负样本不均衡 难易样本不均衡 类别间样本不均衡 常用的解决方法 在线难样本挖掘: OHEM 难负样本挖掘 (Hard Negative Mining, HNM) 在线难样本挖掘 ...
- TensorFlow学习笔记(二十三)四种Cross Entropy交叉熵算法实现和应用
交叉熵(Cross-Entropy) 交叉熵是一个在ML领域经常会被提到的名词.在这篇文章里将对这个概念进行详细的分析. 1.什么是信息量? 假设是一个离散型随机变量,其取值集合为,概率分布函数为 p ...
- TensorFlow四种Cross Entropy算法实现和应用
交叉熵介绍 交叉熵(Cross Entropy)是Loss函数的一种(也称为损失函数或代价函数),用于描述模型预测值与真实值的差距大小,常见的Loss函数就是均方平方差(Mean Squared Er ...
最新文章
- vue 模板_简化版的 vue 页面模板语法
- JS服务器端开发基础篇(Array.slice方法和splice方法)
- 百度智慧交通(东部赛区)比赛的通知
- OVS DPDK vhost-user详解(十三)
- Effective Java之静态工厂代替构造器(一)
- getchar(),putchar()用法
- tcpdump - 数据包进行截获的包分析工具
- 关于nginx rtmp的一点配置
- oem718d 基准站设置_华测口袋RTK正式发布!-华测导航
- 聊一聊字节跳动的面试
- Some Sites About .Net
- 验证码生成工具google authenticator
- 周期信号的傅里叶变换
- 酷软正在连接服务器,蜗牛星际:我的B款双网口机箱PVE+爱快+LEDE 双软路由 保姆级教程...
- 7个实用有效的shopify运营策略,跨境电商卖家必知
- HTML制作课表源代码
- Cannot connenct to relay host smtp.163.com (php邮件发送失败)
- 《打地鼠》游戏简单制作
- 静态生存期和动态生存期
- 刷爆网络的动态条形图,3行Python代码就能搞定
热门文章
- 如何实现验证码输入正确与否的判断?
- (P44)面向对象版表达式计算器:符号表SymbolTable的实现
- 网站添加Google翻译代码
- CS5801HDMI转EDP转换器芯片参考资料|CS5801HDMI转EDP转换方案说明
- How to craw the Info of BiliBIli with python
- 关于Spec的一些理解
- macbook更新系统服务器,为Mac新系统做准备 苹果更新OSX Server
- 游戏测试好还是软件测试好,浅学软件测试 软件测试和游戏测试哪个有前途?...
- 服务器起到的是什么作用是什么,服务器的作用是什么
- 人工智能驱动的智能制造(人工智能系列)