是否有任何监督的聚类算法或将先验知识应用于聚类的方法?

时间:2019-11-28 16:34:22

标签: python machine-learning cluster-analysis unsupervised-learning supervised-learning

就我而言,我有一个图像中检测到的字母和符号数据集。 检测到的项目由它们的坐标,类型(字母,数字等),值,方向而不是图像的实际边界框表示。我的目标是使用此数据集将它们分组为不同的一般是“单词”或上下文组。

到目前为止,我使用DBSCAN算法通过应用经典的无监督聚类获得了不错的结果,但这仍然限制了样本的几何距离,因此生成的组不能类似于我想要的“单词” 。 因此,我正在寻找一种方法,以利用我对所需聚类的“类单词”性质的了解来影响聚类算法的结果。

我认为我可能的方法是创建一个真实和错误集群的数据集,并训练一个SVM模型(或任何分类器)来检测一个提议的集群是否正确。但是,尽管如此,我仍然没有确凿的证据证明我可以很好地训练模型以区分好集群和坏集群,而且我发现很难根据其成员的特征有效且一致地表示集群。而且,由于我的“测试数据”将是我所拥有的字母和符号的所有可能组合的很大一部分,因此整个方法似乎有点复杂,以致于无法在没有任何证据或迹象表明最终可以使用的情况下尝试实施它

总而言之,我的问题是,是否有人曾经有过类似的工作经验(在我看来听起来很简单,但显然没有)。 您是否知道任何监督的聚类算法?如果是,那么这是表示数据聚类的正确方法,以便您可以有效地用它们训练模型?

任何想法/建议,甚至暗示我可以对其进行研究的地方,都将不胜感激。

2 个答案:

答案 0 :(得分:0)

一种标准方法是使用树状图。

然后合并分支只有在它们同意您的正面示例并且不违反任何负面示例的情况下才会出现。

答案 1 :(得分:0)

有关于监督聚类的论文。 Eick et al. 是一个很好的、清晰的,它是免费的。不幸的是,我认为 python 中没有任何现成的库支持这一点。在文本的特定领域也有 this,但与 Eick 相比,它是一种更特定于领域的方法。

但是有一个非常简单的解决方案,它实际上是一种监督聚类。决策树本质上是将特征空间切割成高纯度区域,或者至少尝试这样做。因此,您可以将其作为一种快速的监督聚类来执行:

  1. 使用标签数据创建决策树。
  2. 把每一片叶子想象成一个“簇”。

在 sklearn 中,您可以使用 apply() 方法检索决策树的叶子。