在Spark MLlib中处理不平衡的数据集

dbakr

我工作在一个特定的二元分类问题具有高度不平衡的数据集,我想知道是否有人试图实现特定的技术来处理数据集不平衡(如SMOTE)的分类问题,用放电的MLlib。

我正在使用MLLib的Random Forest实现,并且已经尝试了对较大的类进行随机欠采样的最简单方法,但是效果并不理想。

对于您在类似问题上的经历,我们将不胜感激。

谢谢,

机缘巧合

Spark ML的班级重量

到目前为止,Random Forest算法的类加权仍在开发中(请参阅此处

但是,如果您愿意尝试其他分类器,则此功能已添加到Logistic回归中

考虑一种情况,我们在数据集中有80%的阳性(标签== 1),因此从理论上讲,我们想“欠采样”阳性类别。逻辑损失目标函数应以较高的权重对待负类(标签== 0)。

这是Scala中生成此权重的示例,我们为数据集中的每个记录在数据框中添加一个新列:

def balanceDataset(dataset: DataFrame): DataFrame = {

    // Re-balancing (weighting) of records to be used in the logistic loss objective function
    val numNegatives = dataset.filter(dataset("label") === 0).count
    val datasetSize = dataset.count
    val balancingRatio = (datasetSize - numNegatives).toDouble / datasetSize

    val calculateWeights = udf { d: Double =>
      if (d == 0.0) {
        1 * balancingRatio
      }
      else {
        (1 * (1.0 - balancingRatio))
      }
    }

    val weightedDataset = dataset.withColumn("classWeightCol", calculateWeights(dataset("label")))
    weightedDataset
  }

然后,我们创建一个分类器,如下所示:

new LogisticRegression().setWeightCol("classWeightCol").setLabelCol("label").setFeaturesCol("features")

有关更多详细信息,请在此处观看:https : //issues.apache.org/jira/browse/SPARK-9610

-预测力

您应该检查的另一个问题-您的功能是否对您要预测的标签具有“预测能力”在欠采样后您仍然具有较低的精度的情况下,可能与您的数据集天生不平衡这一事实无关。


我将进行探索性的数据分析-如果分类器的性能不比随机选择好,则存在要素与类之间根本没有联系的风险。

  • 对带有标签的每个功能执行相关性分析
  • 为特征生成类的特定直方图(即,在同一轴上为给定特征绘制每个类的数据直方图)也是一种很好的方法,可以显示特征在两个类之间是否能很好地区分。

过度拟合-训练集上的错误率低而测试集上的错误率高则可能表明您使用了过于灵活的功能集而过度拟合。


偏差偏差-检查您的分类器是否存在高偏差或高偏差问题。

  • 训练误差与验证误差-根据训练示例绘制验证误差和训练集误差(进行增量学习)
    • 如果这些线似乎收敛到相同的值并在末尾接近,则您的分类器具有较高的偏差。在这种情况下,添加更多数据将无济于事。将分类器更改为方差较大的分类器,或仅降低当前分类器的正则化参数。
    • 另一方面,如果线条相距很远,并且训练集误差小而验证误差大,则分类器的方差太大。在这种情况下,获取更多数据很有可能会有所帮助。如果获取更多数据后方差仍然太大,则可以增加正则化参数。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何处理R中不平衡的数据集?

来自分类Dev

SAS中不平衡数据集的滚动窗口模型

来自分类Dev

如何通过svmlight中可用的不平衡训练数据集来提供平衡训练的成本?

来自分类Dev

如何通过svmlight中可用的不平衡训练数据集来提供平衡训练的成本?

来自分类Dev

重新采样不平衡数据集的数据框

来自分类Dev

不平衡训练数据集和回归模型

来自分类Dev

如何确定不平衡数据集的class_weights

来自分类Dev

数据集不平衡时的连接优化

来自分类Dev

如何在sklearn中对不平衡数据集执行交叉验证

来自分类Dev

如何平衡不平衡的面板数据?

来自分类Dev

使用libSVM的SVM中的数据不平衡

来自分类Dev

根据不平衡数据在ggplot中创建重叠直方图

来自分类Dev

Spark mllib改组数据

来自分类Dev

子集不平衡的面板数据集以在R中至少具有2个连续观察值

来自分类Dev

如何将缺失的NA包括在不平衡面板数据集的R data.frame中?

来自分类Dev

使用TensorFlow训练不平衡数据

来自分类Dev

从长到宽的不平衡数据帧

来自分类Dev

Spark MLlib 中的 StringIndexer

来自分类Dev

如何通过训练和交叉验证集正确地分割不平衡数据集

来自分类Dev

iOS 8中的通话不平衡

来自分类Dev

Chrome中不平衡的CSS列

来自分类Dev

Matlab中不平衡的Anova

来自分类Dev

DEoptim中的堆栈不平衡

来自分类Dev

无法在Spark 2.0中的数据集[(scala.Long,org.apache.spark.mllib.linalg.Vector)]上运行LDA

来自分类Dev

朴素贝叶斯:不平衡的测试数据集

来自分类Dev

不平衡的数据集-如何通过网格搜索优化超参数?

来自分类Dev

二进制分类情况下数据集不平衡的问题

来自分类Dev

将不整洁和不平衡的数据集从宽范围重塑到长范围

来自分类Dev

初始训练是否适用于不平衡的数据集?(Tensorflow)

Related 相关文章

  1. 1

    如何处理R中不平衡的数据集?

  2. 2

    SAS中不平衡数据集的滚动窗口模型

  3. 3

    如何通过svmlight中可用的不平衡训练数据集来提供平衡训练的成本?

  4. 4

    如何通过svmlight中可用的不平衡训练数据集来提供平衡训练的成本?

  5. 5

    重新采样不平衡数据集的数据框

  6. 6

    不平衡训练数据集和回归模型

  7. 7

    如何确定不平衡数据集的class_weights

  8. 8

    数据集不平衡时的连接优化

  9. 9

    如何在sklearn中对不平衡数据集执行交叉验证

  10. 10

    如何平衡不平衡的面板数据?

  11. 11

    使用libSVM的SVM中的数据不平衡

  12. 12

    根据不平衡数据在ggplot中创建重叠直方图

  13. 13

    Spark mllib改组数据

  14. 14

    子集不平衡的面板数据集以在R中至少具有2个连续观察值

  15. 15

    如何将缺失的NA包括在不平衡面板数据集的R data.frame中?

  16. 16

    使用TensorFlow训练不平衡数据

  17. 17

    从长到宽的不平衡数据帧

  18. 18

    Spark MLlib 中的 StringIndexer

  19. 19

    如何通过训练和交叉验证集正确地分割不平衡数据集

  20. 20

    iOS 8中的通话不平衡

  21. 21

    Chrome中不平衡的CSS列

  22. 22

    Matlab中不平衡的Anova

  23. 23

    DEoptim中的堆栈不平衡

  24. 24

    无法在Spark 2.0中的数据集[(scala.Long,org.apache.spark.mllib.linalg.Vector)]上运行LDA

  25. 25

    朴素贝叶斯:不平衡的测试数据集

  26. 26

    不平衡的数据集-如何通过网格搜索优化超参数?

  27. 27

    二进制分类情况下数据集不平衡的问题

  28. 28

    将不整洁和不平衡的数据集从宽范围重塑到长范围

  29. 29

    初始训练是否适用于不平衡的数据集?(Tensorflow)

热门标签

归档