有时我们会遇到类不平衡的数据集。例如,A 类可能有 2000 个实例,但 B 类只有 200 个。我们如何为此类数据集训练分类器?
平衡机器学习数据集的基本方法是什么?
数据挖掘
机器学习
数据集
2021-09-17 10:30:11
3个回答
好吧,你只是在不平衡的数据集上训练它,这不是问题。我认为你不需要应用一些特殊的技术。
您可能想要做一些特别的事情的唯一情况是您的类是否因其性质而倾斜(如果偏度是类本身的属性,而不仅仅是您的特定数据集)。例如,如果您构建一个分类器,该分类器将在 X 射线图像中判断某人是否患有恶性肿瘤。从任务性质来看,绝大多数患者不会患上恶性肿瘤。在这种情况下,您可能需要稍微调整您的分类器算法,例如将权重引入您的 SVM 或类似的东西。
一个特殊情况是,如果您的课程非常不平衡。例如 100000 个正例和 20 个负例。在这种情况下,您将希望从分类任务转向称为“异常检测”的方法。
常规选项:
通过生成代表多个功能的新标签将您的功能分组
使用降维,例如 PCA、Autoencoder等。其中很多都是在 Sklearn 中实现的,缺点是一旦将特征转换为纯数学表示,就会变得难以分析,这些表示可能具有算法“学习”的关系
算法相关选项:
归一化,在神经网络中定义了特定层中每个特征对最终分类、回归等的贡献
辍学,这类似于我的评论,告诉你的模型随机忽略你的神经网络层之间的一定百分比的输入
观察:我为最后两个选项描述了神经网络,但你也可以将它们应用到一些不同的算法中,举个例子,我研究了很多树,我发现你可以将它应用到决策树、随机森林和在极端梯度增强版本的树中,如 Ada Boost、Cat Boost 等
一般来说,我会看到数据信息,如果您使用的是 pandas
info
、describe
、plot
(适用于数据集的每个特征)isnull().values.any()
、 等;主要是视觉情节,以查看其平衡。在一些问题中,我对这些了解不多,这对后来的决策起到了巨大的作用!
其它你可能感兴趣的问题