0

我想在Azure ML中做一些基本的多标签分类。我有以下格式的一些基本数据:Azure机器学习偶数采样

value_x value_y label 
x1  y1  label1 
x2  y2  label1 
x3  y3  label2 
..... 

我的问题是,在我的数据中的某些标签(在总共五个)的比例过高,因为数据的约40%是LABEL1,约20%是标签2,其余10%左右。

我想从这些中抽取一些样本来训练我的模型,以便每个标签都以相同的数量表示。

尝试标签列上采样模块中的分层选项,但这只是为我提供了与初始数据集中标签分布相同的采样。

任何想法如何我可以做到这一点与模块?

+1

编写一个R模块来处理数据?不知道它是否是最佳做法。 – misha130

+0

最后我为它编写了一个Python脚本,但我想知道是否有一些已经内置的东西,我失踪了。 – tamasgobesz

回答

3

我能够使用Split Data,Partition and SampleAdd Rows模块的组合来完成此操作。可能有一个更简单的方法来做到这一点,但我确实证实了它的作用。 :)我在http://gallery.azureml.net/Details/1245147fd7004e91bc7a3683cda19cc7发表了我的作品,所以你可以直接从那里抓住它,然后运行以确认它符合你的期望。

既然你说你想要一个数据的样本,我只是将每个标签减少到10%,以使所有标签均等地表示。由于您对数据集中的分布有很好的理解,因此将标签3,4和5全部保留约10%,并将标签1减少1/4并将标签2减少1/2,以获得其中约10%好。

要解释一下我在上面链接的工作区所做的:

  • 我使用了一些“分割数据”模块,以滤除label1和label2数据。在分割数据模块中,将分割模式更改为“正则表达式”,并将正则表达式设置为\“标签”^ label1(例如,获取label1数据)。
  • 然后我使用了一些“分区和样本”模块来适当减少label1和label2数据的大小。
  • 最后,我使用了一些“添加行”模块将所有数据重新连接在一起。

最后,我没有在我的工作中包括这个,但你也可以看看SMOTE模块。它将增加使用合成少数过采样的低发生样本的数量。

+0

啊,我甚至没想到用这种方式思考,非常感谢! :) – tamasgobesz