Azure机器学习甚至采样

时间:2016-02-25 12:53:43

标签: machine-learning classification sampling multilabel-classification azure-machine-learning-studio

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

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

我的问题是,在我的数据中,某些标签(总共五个)过多,因为大约40%的数据是label1,大约20%是标签2,其余大约是10%。

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

在标签栏的“采样”模块中尝试了分层选项,但这只是给我一个采样,其标签分布与初始数据集中的相同。

知道如何用模块做到这一点吗?

1 个答案:

答案 0 :(得分:3)

我可以使用tutorial pageSplit DataPartition and Sample模块的组合来完成此操作。可能有一种更简单的方法,但我确认它有效。 :)我在Add Rows发布了我的作品,因此您可以直接从那里抓取它,并运行以确认它符合您的期望。

由于您说您想要对数据进行抽样,我只是将每个标签减少到10%,以使所有标签均等。由于您对数据集中的分布有很好的理解,因此将标签3,4和5全部保留在10%左右,并将标签1减少1/4,将标签2减少1/2,使其中约10%为好。

解释我在上面链接的工作区中所做的事情:

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

最后,我没有将这个包含在我的工作中,但您也可以查看http://gallery.azureml.net/Details/1245147fd7004e91bc7a3683cda19cc7模块。它将使用合成少数过采样来增加低发生样本的数量。