Azure机器学习均衡抽样

我在Azure ML中尝试进行一些基本的多标签分类。我有一些基本数据,格式如下:

value_x value_y labelx1      y1      label1x2      y2      label1x3      y3      label2.....

我的问题是,在我的数据中,某些标签(总共有五个)出现频率过高,大约40%的数据属于标签1,大约20%属于标签2,其余的约10%。

我想从这些数据中抽样来训练我的模型,以便每个标签的数量均等。

我在抽样模块的标签列上尝试了分层选项,但这只会给我一个与初始数据集相同标签分布的抽样结果。

有什么办法可以用一个模块来实现这一点吗?


回答:

我通过结合使用拆分数据分区和抽样以及添加行模块实现了这一点。可能有更简单的方法,但我确认这种方法是有效的。:) 我已将我的工作发布在http://gallery.azureml.net/Details/1245147fd7004e91bc7a3683cda19cc7,你可以直接从那里获取,并运行以确认它是否符合你的预期。

由于你说你想要对数据进行抽样,我只是将每个标签的比例都调整到10%,以确保所有标签的代表性相同。由于你对数据集的分布有很好的了解,可以将标签3、4和5保持在约10%,并将标签1减少1/4,将标签2减少1/2,以使它们也达到约10%。

为了解释我在上面链接的工作空间中所做的工作:

  • 我使用了一些“拆分数据”模块来筛选出标签1和标签2的数据。在拆分数据模块中,将拆分模式更改为“正则表达式”,并将正则表达式设置为\”Label” ^label1(例如,用于获取标签1的数据)。
  • 然后我使用了一些“分区和抽样”模块来适当减少标签1和标签2数据的规模。
  • 最后,我使用了一些“添加行”模块将所有数据重新组合在一起。

最后,虽然我没有在我的工作中包含这一点,但你也可以查看SMOTE模块。它将通过合成少数类过采样来增加低频样本的数量。

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注