经验之谈|处理不平衡资料集的7个技巧
作者:Ye Wu & Rick Radewagen编译:ronghuaiyang
介绍
具体的领域中的资料集是什么样的,银行中的欺诈检测,市场中的实时投标,网络中的入侵检测,常见吗?这些领域中的资料,常常只有不到1%的少数,但是“有兴趣”的事件(如信用卡欺诈,使用者的广告点选或者扫描网络时的服务器的崩溃)。但是,大多数的机器学习的算法在非平衡资料集上表现的都不太好。下面的这些技巧可以帮助你,训练一个分类器来检测异常类。

1. 使用正确的度量方法来评估
在不均衡资料集上训练出来的模型,如果使用不合适的度量方法的话,是很危险的。想象一下,如果你的资料集是上面的图的情况,如果度量方法是准确率的话,那么一个模型如果对所有的样本预测都是0的话,准确率将达到非常好的99.8%,但是很显然,这种模型并没有什么鸟用。
这种情况下,可以使用一些替代的度量方法,例如:
精确度/特异性:正样本的预测准确率。召回率/敏感性:所有预测为正样本的资料的准确率。F1得分:精确率和召回率的调和平均MCC:真阳率(tpr)和假阳率(fpr)的关系。2. 对训练资料集重新取样
除了使用不同的评价方法外,还可以想办法得到不同的资料集。有两个方法来得到平衡的资料集,一个是欠取样,一个是过取样。
2.1. 欠取样
欠取样通过减小多数类别的样本数量来得到平衡的资料集。这种方法用在资料量足够的情况下。保留所有的少数类别的样本,随机的抽取同样数量的多数类别样本,可以得到一个均衡的新的资料集,用来建模。
2.2. 过取样
相反,过取样用在资料集不够的情况下。通过增加少数类的样本数量来得到平衡的资料集。这次我们不是丢掉多数类的样本,而是通过重复,自助抽样或者SMOTE (合成少数类过取样)来生成少数类的资料。
注意,这两种重新取样的方法并没有绝对的好坏之分。使用哪种方法取决于实际的资料集的情况。将两种方法组合使用也往往是可以的。
3. 正确使用K折交叉验证
需要注意一下,当使用过取样来解决不均衡资料集的问题的时候,需要适当的使用交叉验证。
需要记住,过取样使用少数类的样本,使用自助抽样(有放回的随机抽样)是基于分布函式来生成新的随机资料。如果在过取样之后使用了交叉验证,基本上,我们所做的事情就是将模型过拟合成一个特定的人工取样的结果。这就是为什么需要在过取样资料之前使用交叉验证,就像如何来进行特征选择一样。只有在对资料进行重复取样的时候,才可以对资料集引入随机性来确保不会有过拟合的问题。
4. 整合不同的重新取样的资料集
最简单的泛化模型的方法就是使用更多的资料。问题在于像逻辑回归和随机森林的分类器趋向于在泛化的时候忽略掉少数类。一个简单的最佳实践是使用所有的少数类和n个不同的多数类组成n个不同的资料集,构建模型。比如你要整合10个模型,你保留1000个少数类的样本,随机选取10000个多数类的样本,然后将这10000个多数类的样本分成10份,组成10个数据集,训练10个模型。

这个方法简单有效,适用于有很多资料,而且可以完美的横向扩充套件,因为你只需要在不同的丛集的节点上训练和执行模型就可以了。整合的模型的泛化能力也会更好,这个方法简单易用。
5. 使用不同的比例进行重新取样
前面的方法可以通过调整少数和多数类的比例来微调。最佳的比例依赖于资料和使用的模型。不要使用同样的比例训练模型来整合,可以试试整合不同的比例。所以,如果训练了10个模型,那么使用模型具有1:1,1:2,甚至2:1,取决于用的模型,这个可以影响到一个类别得到的权值。

6. 对多数类进行聚类
Sergey提出了一个优雅的方法。不是通过随机取样的方式来覆盖训练样本的多样性,他建议将多数类聚类成r个组,这个r是样本的数量。对于每一个组,样本中心保留下来,然后使用少数类和样本中心进行模型的训练。
7. 设计你自己的模型
以上所有的方法聚焦在资料上,将模型作为一个固定的部分。但是实际上,如果模型本身就是适用于非均衡资料的话,就不需要对资料进行重复的取样了。著名的XGBoost就是一个很好的尝试,如果类别不是非常的不均衡的话,因为这个算法内部本身就有在不均衡资料上整合学习的功能,当然,也会做重复取样,只不过是悄悄做的。
设计一个损失函式,对于错误分类的少数类的样本的惩罚要比多数类更大,设计许多的模型,自然的支援少数类别的泛化,也是可行的。例如,修改一下SVM中对少数类的错误分类的惩罚,设为多数样本数量和少数样本数量的比例。

最后要注意的地方
这个并不是所有的技巧,只是一个处理不均衡资料的开端。没有哪个方法或者模型可以解决所有的问题,建议尝试不同的方法和模型来对工作进行评估。试着去创造和组合不同的方法。还有一点很重要,在许多的场景中(欺诈检测,实时投标),但出现不均衡类别的时候,“市场规则”是不断在变的,看看之前的资料是不是已经失效了。原文连结:https://www.kdnuggets.com/2017/06/7-techniques-handle-imbalanced-data.html
更多文章,请关注微信公众号:AI公园