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

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

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