machine-learning - 用于聚类任务的多标签分类 "weighted labels"

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

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

Multiclass classification means a classification task with more than two classes; e.g., classify a set of images of fruits which may be oranges, apples, or pears. Multiclass classification makes the assumption that each sample is assigned to one and only one label: a fruit can be either an apple or a pear but not both at the same time.

Multilabel classification assigns to each sample a set of target labels. This can be thought as predicting properties of a data-point that are not mutually exclusive, such as topics that are relevant for a document. A text might be about any of religion, politics, finance or education at the same time or none of these.

根据多标签分类的定义,我们可以理解一个样本可能有多个真正的二元标签,因此有关宗教和政治的样本文本将具有如下所示的目标:y = [1,1,0,0]

如果我们没有二进制标签,而是概率或分数怎么办?因此,我们的目标现在看起来像这样:y = [0.5, 0.4, 0.0, 0.1],例如,概率之和为 1。该文件的内容是 50% 宗教、40% 政治和 10% 教育。当然,像这样标记数据集实际上并不可行,因此让我们看看另一组任务,更准确地说是聚类任务,以了解这是如何发生的。

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

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

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

最佳答案

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

加权图方法与您的问题有些相关 - 因为标签的关系是根据它们出现的文档数量来加权的。

我还提供了我的实现作为 python scikit-multilearn 的一部分包 - 您可以尝试使用它 - 实现新的集群方法很容易,并且documented here 。如果你带了什么东西请告诉我,希望我能帮上一点忙。

关于machine-learning - 用于聚类任务的多标签分类 "weighted labels",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42050107/

相关文章:

r - R 中漂亮的树状图?

machine-learning - 如何在 Pytorch 上加载 Omniglot

python - 使用 sci-kit 中的训练/测试数据而不是交叉验证来学习曲线

python - 使用 sklearn 包的吉布斯采样

python-3.x - bert层中的池化输出和序列输出有什么区别?

artificial-intelligence - 神经网络项目思路

machine-learning - Google Vision api 与构建您自己的 API

python - 在管道 sklearn 中包含特征提取

Matlab:如何将聚类代码自定义为多级聚类?

r - 如何关联回自组织 map 中的原始数据点