类别不平衡问题

news/2024/7/3 10:51:23

详解类别不平衡问题

卢总-类别不平衡问题的方法汇总

文章目录

  • 从多数类别中删除数据(ENN、Tomeklink、NearMiss)
    • ENN
    • NearMiss
  • 为少数类生成新样本(SMOTE、Borderline-SMOTE、ADASYN)
  • 集成方法
    • EasyEnsemble算法
    • BalanceCascade算法
  • 算法层面
    • 在线困难样本挖掘 OHEM
    • Focal Loss 损失函数的权重调整
  • 阈值移动
  • 评价指标

从多数类别中删除数据(ENN、Tomeklink、NearMiss)

ENN

NearMiss

非均衡数据处理–如何学习?

为少数类生成新样本(SMOTE、Borderline-SMOTE、ADASYN)

  • Borderline-SMOTE

在这里插入图片描述

集成方法

随机降采样 + Bagging是万金油。

EasyEnsemble算法

属于bagging

在这里插入图片描述
在这里插入图片描述

BalanceCascade算法

  • 使用之前已经形成的集成分类器为下次寻来呢选择多类样本

假阳性率是auc的横轴

在这里插入图片描述

算法层面

目标检测小tricks–样本不均衡处理

Focal Loss — 从直觉到实现

对于不平衡样本导致样本数目较少的类别”欠学习“这一现象,一个很自然的解决办法是增加小样本错分的惩罚代价,并将此代价直接体现在目标函数里。这就是代价敏感的方法,这样就可以通过优化目标函数调整模型在小样本上的注意力。算法层面处理不平衡样本问题的方法也多从代价敏感的角度出发。

在线困难样本挖掘 OHEM

pass

Focal Loss 损失函数的权重调整

Focal Loss — 从直觉到实现

  • 类别权重:少数类获得更大的权重
  • 难度权重:更专注于比较困难的样本

在这里插入图片描述

在这里插入图片描述

阈值移动

阈值移动主要是用到“再缩放”的思想,以线性模型为例介绍“再缩放”。

我们把大于0.5判为正类,小于0.5判为负类,即若 y 1 − y > 1 \frac{y}{1-y}>1 1yy>1则预测为正例。

在这里插入图片描述

可令 y 1 − y = y 1 − y × m − m + \frac{y}{1-y}=\frac{y}{1-y}\times \frac{m^-}{m^+} 1yy=1yy×m+m然后带入上式。这就是再缩放

阈值移动方法是使用原始训练集训练好分类器,而在预测时加入再缩放的思想,用来缓解类别不平衡的方法。

评价指标

如果采用ROC曲线来作为评价指标,很容易因为AUC值高,而忽略了少数类样本的实际分类效果其实并不理想的情况。

可以使用聚焦于正例的PR曲线、F1值等;

precision的假设是分类器的阈值是0.5,因此如果使用precision,请注意调整分类阈值。相比之下,precision@n更有意义。


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

相关文章

ORACLE函数大全(CSDN)

SQL中的单记录函数1.ASCII返回与指定的字符对应的十进制数;SQL> select ascii(A) A,ascii(a) a,ascii(0) zero,ascii( ) space from dual; A A ZERO SPACE--------- --------- --------- --------- 65 97 48 32 2.CHR给出整数,…

特征选择方法汇总

卢总 - 特征选择方法汇总 特征选择三种方法: Filter(过滤法) Wrapper(包装法) Embedded(嵌入法) 过滤法 卡方检验 直接看sklearn代码: 首先做OHE Y LabelBinarizer().fit_transform(y)做完之后YYY的shape是NKN\times KNK observed safe_spar…

[linux]cp和mv对文件和链接影响的区别

好久不写blog了。。。加油,继续写blog。今天和同事讨论到一个问题,问题描述: 有文件a,a1为其硬链接,即: ln a a1 现在有文件b,对其进行以下两种操作: 1. mv b a 2. cp b a 问这两种操…

【机器学习】【操作系统】【网络】【算法与数据结构】知识汇总

机器学习 L1不可导的时候该怎么办 操作系统 堆栈区别 堆和栈的区别: 一、堆栈空间分配区别: 1)、栈(操作系统):由操作系统自动分配释放 ,存放函数的参数值,局部变量的值等。其…

记录tomcat服务器开启关闭时间

1、IO流 package com.zy.exercise; import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; import javax.servl…

graph embedding源码阅读

文章目录LINEstruc2vec计算结构距离计算每个结点的有序度序列遍历边表的顶点,每个都计算有序度序列LINE 看到 ge.models.line.LINE#_gen_sampling_table node_degree 表示出度 归一化后,得到顶点的分布norm_prob,然后算alias_table 构建al…

ORM到底如何使用了?

公司最近一个项目用到了实体类,借助其他成熟的框架实现了orm,可是在使用过程中却对于多表查询支持并不好。nbear看上去orm挺不错的,有空得研究下看看代码转载于:https://www.cnblogs.com/ocean2000/archive/2007/06/13/781755.html

Kubeflow调研

文章目录Kubeflow基本概念创建Kubeflow的Component通过Yaml定义在代码中创建在Jupyter中创建Kubeflow的架构TensorFlow Training 的支持 (TFJob)与 Jupyter Notebook 的整合KFServing以解决一个分子属性预测问题为例,阐述如何用kubeflow实现Kubeflow 的总结Kubeflow…