用于聚类任务的“加权标签”的多标签分类

时间:2017-02-05 08:46:44

标签: machine-learning neural-network cluster-analysis multilabel-classification

这个问题是关于聚类任务的Multilabel多类分类。 Here是两者的一个很好的定义,以确保没有人混淆两者:

  

多类分类表示具有两个以上类的分类任务;例如,对可以是橙子,苹果或梨的水果图像进行分类。多类分类假设每个样本被分配给一个且只有一个标签:水果可以是苹果或梨,但不能同时进行。

     

多标签分类为每个样本分配一组目标标签。这可以被认为是预测不相互排斥的数据点的属性,例如与文档相关的主题。文本可能同时涉及任何宗教,政治,金融或教育,也可能不属于任何一种。

根据多标签分类的定义,我们可以理解样本可能有多个真正的二进制标签,因此关于宗教和政治的示例文本将具有如下目标:{{ 1}}。

如果不是使用二进制标签,我们有概率或分数。所以我们的目标现在看起来像这样:y = [1,1,0,0]其中概率总和为1。该文件是50%的宗教信仰,40%的政治信息和10%的教育。当然,像这样标记数据集并不是真的可行,所以让我们看一下另一组任务,更确切地说是聚类任务,以便了解它是如何发生的。

对于群集任务,我们有一个数据集y = [0.5, 0.4, 0.0, 0.1]及其真集群[a,b,c,d,e]。可以将聚类视为一种分类任务,其中类是一组操作:与活动集群合并或启动新集群。想象一个逐步构建这些集群的系统。它当然会犯错误,从而在过程中产生不连贯的聚类[abce,d]。在查看下一个样本[ab,c,d]时,现在无法确切地确定应该添加哪个集群,因为它的真集群现在被分成两部分。由于我们知道一组正确的聚类,我们可以为每个动作(或潜在的合并)分配一个基于精确或回忆的分数e(这些数字是我想象的结果,而不是精确或回忆)。那么我们的标签在这里是什么?我们是否应该与这些集群中的任何集群合并,还是应该启动仅包含y = [0.5, 0.3, 0, 0.2]的新集群?

一个简单的解决方案是将最高分作为我们的真实标签或潜在行动,因为缺乏更好的术语并使用正常的分类成本函数。这意味着我们的潜在行动e是唯一真正的答案,其他一切都同样糟糕。在我看来,这似乎是错误的,因为即使前者不一定是错误的,merge e->abmerge e->c行为都会受到同样的惩罚。

回到多标签分类,是否有任何成本函数允许这样的“加权标签”而不是1和0。或者我是以错误的角度看待它?

1 个答案:

答案 0 :(得分:5)

我实际上正在接近这个主题的博士学位,试图为输出空间提出一种合理的聚类方法。目前我已尝试使用网络科学的社区检测方法来聚类空间 - 您可以在多标签分类中查看我的paper about data-driven label space division以获取一些提示。我正在根据训练数据中的标签共现构建一个加权和未加权的图形,并使用各种社区检测算法来得出一个区域 - 然后在每个聚类中进行分类并合并结果。

加权图表方法与您的问题有些相关 - 作为标签'关系按照它们出现的文件数量进行加权。

我也将我的实现作为python scikit-multilearn包的一部分提供 - 您可以尝试使用它 - 实现新的聚类方法很简单并且documented here。告诉我,如果你带来了什么,我希望我能帮助一点。