1

我有其中一个类表示的所有观测(210 000)的99.1%的二元分类问题。作为处理不平衡数据的策略,我选择抽样技术。但我不知道该怎么做:对我的大多数班级进行抽样抽样或对较少代表的班级进行抽样。 如果有人有建议?不平衡数据:欠采样或过采样?

谢谢。

P.s. 我使用sklearn的随机森林算法。

+1

如果210000点意见0.9%是不够贴合,然后undersample主要类。如果不是,则过度抽样代表性较低的班级。当然,你也可以做到这一点。 – frankyjuang

回答

1
  • 过采样或
  • 下采样或
  • 下采样少数和过采样多数

是一个超参数。交叉验证哪些工作最好。 但使用培训/测试/验证集。

+0

谢谢@CAFEBABE! –

0

我认为有上面的接受的答案一个错字。你不应该“少数少数”和“过度抽样”。相反,你应该对大多数人进行低估并对少数人进行过度抽样。

如果你熟悉Weka中,你可以尝试使用不同的数据不平衡的技术和不同的分类容易调查哪些方法效果最佳。对于Weka中的欠采样,请参阅此帖:combination of smote and undersampling on weka

对于Weka的过采样,你可以尝试SMOTE算法(某些信息,请访问:http://weka.sourceforge.net/doc.packages/SMOTE/weka/filters/supervised/instance/SMOTE.html)。当然,创建20811个合成少数数据(即,如果你正在寻找平衡的数据),比欠因为越来越多的计算成本:(1)有与创建合成数据相关联的计算成本; (2)对42,000个样本(包括为少数群体创建的20,811个合成样本)进行培训相比,21,000个样本的计算成本更高。

以我的经验,这两个数据接近失衡你所提到的工作很好,但我通常首先尝试与欠,因为我觉得这是从资源角度看便宜一点。

有Python包的欠和过采样的位置:

  1. 欠:http://glemaitre.github.io/imbalanced-learn/auto_examples/ensemble/plot_easy_ensemble.html
  2. 过采样:http://contrib.scikit-learn.org/imbalanced-learn/stable/auto_examples/over-sampling/plot_smote.html

您也可以调查成本敏感的分类技术惩罚少数类的分类错误通过成本矩阵。

  1. 这里是一个不错的Weka包的链接:https://weka.wikispaces.com/CostSensitiveClassifier
  2. 下面是一个Python包的链接:https://wwwen.uni.lu/snt/research/sigcom/computer_vision_lab/costcla_a_cost_sensitive_classification_library_in_python