532
windows
七招教你处理非平衡数据——避免得到一个“假”模型
首发地址:https://yq.aliyun.com/articles/93547
这篇博客主要介绍处理不平衡数据的技巧,那么什么是不平衡数据呢?比如说一位医生做了一个病例对照研究,数据集由病例10
不平衡数据广泛存在于各个领域,但在二分类问题中尤其常见,表现为其中的一个类别所占的比例远远高于另外的一个类。比如:银行欺诈检测、市场营销、网络入侵检测等领域。
这些领域中的数据集有哪些共同点呢?可以发现1一旦发生就是一件“的违规交易,用户点击广告或原本已损坏的服务器在扫描其网络)。然而,大多数机器学习算法对于不平衡数据集都不能很好地工作。以下七种技术可以帮助我们训练分类器来检测异常类。
1.
“0”
在这种情况下,可以应用其他评估指标替代精度指标,例如:
-
/
-
/
- F1
- Matthews
- ROC
2.
——
2.1.
欠采样是通过减少丰富类的大小来平衡数据集,当数据量足够时就该使用此方法。通过保存所有稀有类样本,并在丰富类别中随机选择与稀有类别样本相等数量的样本,可以检索平衡的新数据集以进一步建模。
2.2.
相反,当数据量不足时就应该使用过采样,它尝试通过增加稀有样本的数量来平衡数据集,而不是去除丰富类别SMOTE[1]来生成新的稀有样品。
注意到欠采样和过采样这两种方法相比而言,都没有绝对的优势。这两种方法的应用取决于它适用的用例和数据集本身。另外将过采样和欠采样结合起来使用也是成功的。
3.
值得注意的是,使用过采样方法来解决不平衡问题时应适当地应用交叉验证。这是因为过采样会观察到罕见的样本,并根据分布函数应用自举生成新的随机数据,如果在过采样之后应用交叉验证,那么我们所做的就是将我们的模型过拟合于一个特定的人工引导结果。这就是为什么在过度采样数据之前应该始终进行交叉验证,就像实现特征选择一样。只有重复采样数据可以将随机性引入到数据集中,以确保不会出现过拟合问题。
K-fold
4.
成功泛化模型的最简单方法是使用更多的数据,问题是像逻辑回归或随机森林这样开箱即用的分类器,倾向于通过舍去稀有类来泛化模型。一个简单的最佳实践是建立n个模型,每个模型使用稀有类别的所有样本和丰富类别的n个不同样本。假设想要合并10那么1000类别类别。然后,10000训练10
如果拥有大量数据,这种方法是简单并且是可横向扩展的,这是因为可以在不同的集群节点上训练和运行模型。集合模型也趋于泛化,这使得该方法易于处理。
之前的方法可以很好地将稀有类别和丰富类别之间的比例进行微调,10都是有意义的。一个类别获得的权重依赖于使用的模型。
6.
Sergey Quora[2],他建议不要依赖随机样本来覆盖训练r类别。然后,基于稀有类和仅保留的类别对该模型进行训练。
7.
所有之前的方法都集中在数据上,并将模型保持为固定的组件。但事实上,如果设计的模型适用于不平衡数据,则不需要重新采样数据,着名XGBoost,因此设计一个适用于不平衡数据集的模型也是很有意义的。
通过设计一个代价函数来惩罚稀有类别的错误分类而不是分类丰富类别,可以设计出许多自然泛化为稀有类别的模型。例如,SVM惩罚稀有类别的错误分类。
本文不是一个排外的技术列表,而是处理不平衡数据的一些建议。没有适合所有问题的最佳方法或模型,强烈建议尝试不同的技术和模型来评估哪些方法最有效并尝试创造性地结合不同的方法。同样值得注意的是,在不平衡类别发生的许多领域中,随着“的不断变化,需要检查过去的数据是否过时。
Ye Wu在营销和销售预测方面具有会计和实践经验的背景IE
Rick Radewagen是一位有抱负的数据科学家,拥有计算机科学的背景IE
7 Techniques to Handle Imbalanced Data
最后更新:2017-07-12 22:11:56