龙空技术网

机器学习:聊聊数据不均衡的处理方法

你看我独角兽吗 447

前言:

眼前小伙伴们对“smote算法全称”大体比较着重,你们都需要知道一些“smote算法全称”的相关内容。那么小编同时在网摘上汇集了一些关于“smote算法全称””的相关内容,希望大家能喜欢,各位老铁们快快来学习一下吧!

数据不平衡?

什么是不平衡数据?简单来说就是待分类的数据分布很不平衡,例如10w条需要分是否喜欢运动的数据集中,只有200条是喜欢运动,而且特征很不明显,需要大量喜欢运动和不喜欢运动的数据才能区分出来。这时候就属于数据不平衡的范畴了。

可解决方法

1.过抽样(Oversampling)

通过改变训练数据的分布来消除或减小数据的不平衡,最简单的办法就是随机复制少数类样本,缺点是可能导致过拟合,没有给少数类增加任何新的信息。改进的过抽样方法通过在少数类中加入随机高斯噪声或产生新的合成样本等方法。

2.欠抽样(Undersampling)

通过减少多数类样本来提高少数类的分类性能,最简单的方法是通过随机地去掉一些多数类样本来减小多数类的规模,缺点是会丢失多数类的一些重要信息,会缩小数据集的信息量,降低模型对数据集的学习。

3.数据合成

数据合成方法是利用已有样本生成更多样本,这类方法在小数据集很常见,而且效果还不错,比较常用的是SMOTE算法。SMOTE全称是Synthetic Minority Oversampling Technique,即合成少数类过采样技术。它是基于随机过采样算法的一种改进方案,由于随机过采样很容易发生过拟合,所以SMOTE算法的基本思想是对少数类样本进行分析并根据少数类样本人工合成新样本添加到数据集中,具体算法内容可以到下次写文章的时候详细讲述。

4.加权

加权实际上是一种人为设置判错惩罚项的方法,即对不同类别分错的代价不同来使得分类器更倾向分对少数类别。举个简单的例子就是当你这一次迭代分错少数类时会受到大的惩罚,当下一次迭代时会对这个样本分到少数类的概率增加,保证分对类别。

5.一分类

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

如何选择

根据网上博主们的经验和自己工作的经验,总结如下:

1.在数据极为不平衡的情况下,建议使用一分类来做处理;

2.在正负样本都比较少的情况下,数据合成的效果比较好;

3.在数据集足够数量和正负样本一般不平衡的情况下,建议采取抽样和加权的方式处理。在不考虑计算机资源情况下,如果数据量比较少,那么并行进行下采样方式效果较好,如果数据集较大且一般不平衡情况,也使用过采样进行处理。

标签: #smote算法全称