是否有任何监督聚类算法或将先验知识应用于聚类的方法?
Posted
技术标签:
【中文标题】是否有任何监督聚类算法或将先验知识应用于聚类的方法?【英文标题】:Is there any supervised clustering algorithm or a way to apply prior knowledge to your clustering? 【发布时间】:2020-03-24 08:45:39 【问题描述】:就我而言,我有一个在图像中检测到的字母和符号数据集。 检测到的项目由它们的坐标、类型(字母、数字等)、值、方向表示,而不是图像的实际边界框。我的目标是,使用这个数据集,将它们分组到不同的“词”或一般的上下文组。
到目前为止,我通过应用经典的无监督聚类,使用 DBSCAN 算法获得了不错的结果,但这仍然对样本的几何距离太有限,因此得到的组不能像我想要的“单词” . 因此,我正在寻找一种方法来利用我所掌握的关于所需集群的“类词”性质的知识来影响聚类算法的结果。
我认为可能的方法是创建一个包含真假集群的数据集,并训练一个 SVM 模型(或任何分类器)来检测提议的集群是否正确。但仍然为此,我没有确凿的证据证明我可以训练一个模型来区分好集群和坏集群,而且我发现很难根据集群成员的特征高效且一致地表示集群。此外,由于我的“测试数据”将是我拥有的所有可能的字母和符号组合的大量组合,因此整个方法似乎有点过于复杂,无法在没有任何证据或迹象表明它最终会起作用的情况下尝试实施它.
最后,我的问题是,如果有人以前有过这种任务的经验(在我看来,这听起来很简单,但显然不是)。 您知道任何有监督的聚类算法吗?如果知道,哪种方法是表示数据集群的正确方法,以便您可以使用它们有效地训练模型?
任何想法/建议甚至暗示我可以在哪里研究它都将不胜感激。
【问题讨论】:
【参考方案1】:标准方法是使用树状图。
只有当分支同意你的正面例子并且不违反你的任何负面例子时才合并分支。
【讨论】:
【参考方案2】:有关于监督聚类的论文。 Eick et al. 是一个很好、清晰的方法,它是免费提供的。不幸的是,我认为 python 中没有任何现成的库支持这一点。在文本的特定领域也有this,但与 Eick 相比,它是一种更特定于领域的方法。
但是有一个非常简单的解决方案,它实际上是一种监督聚类。决策树本质上将特征空间切割成高纯度区域,或者至少尝试这样做。因此,您可以将其作为一种快速类型的监督聚类:
-
使用标签数据创建决策树。
将每片叶子视为一个“簇”。
在 sklearn 中,您可以使用 apply() 方法检索决策树的叶子。
【讨论】:
以上是关于是否有任何监督聚类算法或将先验知识应用于聚类的方法?的主要内容,如果未能解决你的问题,请参考以下文章