首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Spark MLlib中不平衡数据集的处理

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

Stack Overflow用户
提问于 2015-10-28 00:04:17
回答 1查看 26.4K关注 0票数 34

我正在研究一个高度不平衡的数据集的二进制分类问题,我想知道是否有人尝试过使用Spark的MLlib实现特定的技术来处理分类问题中的不平衡数据集(例如SMOTE)。

我正在使用MLLib的随机森林实现,并且已经尝试了对较大的类进行随机欠采样的最简单方法,但它的效果并不像我预期的那样好。

如果您对类似问题的经验有任何反馈,我将不胜感激。

谢谢,

EN

回答 1

Stack Overflow用户

发布于 2017-04-07 21:02:18

我使用了@Serendipity的解决方案,但我们可以优化balanceDataset函数以避免使用自定义函数。我还添加了更改正在使用的标签列的功能。这是我最终使用的函数版本:

代码语言:javascript
复制
def balanceDataset(dataset: DataFrame, label: String = "label"): DataFrame = {
  // Re-balancing (weighting) of records to be used in the logistic loss objective function
  val (datasetSize, positives) = dataset.select(count("*"), sum(dataset(label))).as[(Long, Double)].collect.head
  val balancingRatio = positives / datasetSize

  val weightedDataset = {
    dataset.withColumn("classWeightCol", when(dataset(label) === 0.0, balancingRatio).otherwise(1.0 - balancingRatio))
  }
  weightedDataset
}

我们创建分类器,就像他说的那样:

代码语言:javascript
复制
new LogisticRegression().setWeightCol("classWeightCol").setLabelCol("label").setFeaturesCol("features")
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33372838

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档