一、概述

1.处理方法总结

(1)不平衡数据集

通常情况下通常情况下把多数类样本的比例接近100:1这种情况下的数据称为不平衡数据。不平衡数据的学习即需要在分布不均匀的数据集中学习到有用的信息。

(2)不平衡数据集的处理方法主要分为两个方面

1、从数据的角度出发,主要方法为采样,分为欠采样和过采样以及对应的一些改进方法。

2、从算法的角度出发,考虑不同误分类情况代价的差异性对算法进行优化,主要是基于代价敏感学习算法(Cost-Sensitive Learning),代表的算法有adacost;

特殊情况,将不平衡数据集的问题考虑为一分类(One Class Learning)或者异常检测(Novelty Detection)问题,代表的算法有One-class SVM。

参考:https://www.cnblogs.com/kamekin/p/9824294.html【主要介绍从数据角度出发的不平衡数据集的处理方法以及对应的python库(imblearn)】

(3)解决方法分多种

1)采样,对小样本加噪声采样,对大样本进行下采样 

2)进行特殊的加权,如在Adaboost中或者SVM中 

3)采用对不平衡数据集不敏感的算法 

4)改变评价标准:用AUC/ROC来进行评价 

5)采用Bagging/Boosting/Ensemble等方法 

6)考虑数据的先验分布

参考:https://www.zhihu.com/question/40771695

(4)方法总结

参考:

https://blog.csdn.net/zk_ken/article/details/82013965

二、具体方法

1.一分类/异常检测——极端不平衡

 一分类(One Class Learning)或异常检测(Novelty Detection)。

对于正负样本极不平衡的场景,我们可以换一个完全不同的角度来看待问题:把它看做一分类(One Class Learning)或异常检测(Novelty Detection)问题。这类方法的重点不在于捕捉类间的差别,而是为其中一类进行建模,经典算法One-class SVM。调整SVM以惩罚稀有类别的错误分类。

3中,1000:1的比例,算不算极端不平衡?

2.有放回抽取

应该属于上采样(过采样)吧?

读:《深度学习用于天文图像空间碎片和恒星分类》

在本文所用的数据集中存在很严重的不平衡数据集现象,用于训练卷积神经网络的两类样本集分别是星象的样本和空间碎片的样本的比例大约是 1000:1。为了达到抑制不平衡数据集,本文采用的放回抽取的策略。
首先,两个样本池中分别放有所有的样本,然后从两个样本池分别有放回的抽取同样数量的样本,最后把所有样本打乱顺序放入训练集中。 

有放回的抽取不可避免的会造成弱势数据重复增多,但打乱所有数据顺序则可以抑制过拟合问题,目前机器学习大部分训练采用的也是打乱训练数据集的策略。

【没明白作者到底怎么操作?为什么分两个样本池?打乱顺序有意义吗?照样过拟合吧?】

 3.组合/集成方法

集成学习,经典算法XGBoot。

(1)XGBoot原理:

https://www.jianshu.com/p/a62f4dce3ce8

(2)XGBoost如何寻找最优特征?是有放回还是无放回的呢?

XGBoost在训练的过程中给出各个特征的评分,从而表明每个特征对模型训练的重要性.。XGBoost利用梯度优化模型算法, 样本是不放回的(想象一个样本连续重复抽出,梯度来回踏步会不会高兴)。但XGBoost支持子采样, 也就是每轮计算可以不使用全部样本。

posted on 2020-07-16 21:35  西伯尔  阅读(1850)  评论(0编辑  收藏  举报