使用 sklearn DBSCAN 模型对新条目进行分类

Posted

技术标签:

【中文标题】使用 sklearn DBSCAN 模型对新条目进行分类【英文标题】:Use sklearn DBSCAN model to classify new entries 【发布时间】:2015-06-19 22:58:33 【问题描述】:

我有一个巨大的“动态”数据集,我正试图在上面找到有趣的集群。

在运行了许多不同的无监督聚类算法后,我发现了DBSCAN 的配置,它给出了一致的结果。

我想根据我的测试数据推断DBSCAN 创建的模型以将其应用于其他数据集,但无需重新运行算法。我无法在整个数据集上运行算法,因为它会耗尽内存,并且由于数据是动态的,因此模型在不同的时间对我来说可能没有意义。

使用 sklearn,我发现其他聚类算法 - 例如 MiniBatchKMeans - 有一个 predict 方法,但 DBSCAN 没有。

我知道对于MiniBatchKMeans,质心唯一地定义了模型。但DBSCAN 可能不存在这样的事情。

所以我的问题是:推断DBSCAN 模型的正确方法是什么?我应该使用DBSCAN 在我的测试数据集上给出的输出来训练监督学习算法吗?或者是否有本质上属于DBSCAN 模型的东西,可以用来对新数据进行分类而无需重新运行算法?

【问题讨论】:

【参考方案1】:

DBSCAN 和其他“无监督”聚类方法可用于在所谓的“半监督”机器学习中自动传播分类器(“监督”机器学习任务)使用的标签。我将分解执行此操作的一般步骤,并引用一系列激发此方法的半监督论文。

    通过某种方式,标记一小部分数据。 使用 DBSCAN 或其他聚类方法(例如 k-最近邻)对标记和未标记的数据进行聚类。 对于每个集群,确定集群成员的最常见标签(如果有)。将集群中的所有成员重新标记为该标签。这有效地增加了标记训练数据的数量。 使用第 3 步中的数据集训练监督分类器。

以下论文提出了对该一般过程的一些扩展,以提高分类性能。需要注意的是,与大约十几种其他聚类方法相比,以下所有论文都发现,k-means 是一种一致、高效且有效的半监督学习聚类方法。然后他们使用具有较大 K 值的 k 最近邻进行分类。一篇专门介绍基于 DBSCAN 的聚类的论文是: - Erman, J. 和 Arlitt, M. (2006)。使用聚类算法进行流量分类。在 2006 年 SIGCOMM 网络数据挖掘研讨会论文集上(第 281-286 页)。 https://doi.org/http://doi.acm.org/10.1145/1162678.1162679

注意:这些论文按时间顺序列出并相互依存。如果您只想看到最成功/最先进的迭代,您应该阅读 2016 年 Glennan 的论文。

Erman, J. 和 Arlitt, M. (2006)。使用聚类算法进行流量分类。在 2006 年 SIGCOMM 网络数据挖掘研讨会论文集上(第 281-286 页)。 https://doi.org/http://doi.acm.org/10.1145/1162678.1162679

Wang, Y., Xiang, Y., Zhang, J., & Yu, S. (2011)。一种用于网络流量聚类的新型半监督方法。在第五届网络和系统安全 (NSS) 国际会议上(第 169-175 页)。意大利米兰:IEEE。 https://doi.org/10.1109/ICNSS.2011.6059997

Zhang, J., Chen, C., Xiang, Y., & Zhou, W. (2012)。网络流量的半监督和复合分类。在会议记录中 - 第 32 届 IEEE 分布式计算系统研讨会国际会议,ICDCSW 2012(第 617-621 页)。 https://doi.org/10.1109/ICDCSW.2012.12

Glennan, T.、Leckie, C. 和 Erfani, S. M. (2016)。使用半监督机器学习改进了已知和未知网络流量的分类。在 J. K. Liu 和 R. Steinfeld(编辑)中,信息安全和隐私:第 21 届澳大利亚会议(第 2 卷,第 493-501 页)。墨尔本:施普林格国际出版社。 https://doi.org/10.1007/978-3-319-40367-0_33

【讨论】:

【参考方案2】:

根据您的模型训练分类器。

DBSCAN 不容易适应新对象,因为您最终需要调整 minPts。向 DBSCAN 添加点可能会导致集群合并,这可能是您不希望发生的。

如果您认为 DBSCAN 发现的集群很有用,请训练分类器以将新实例放入相同的类中。您现在想要执行分类,而不是重新发现结构。

【讨论】:

以上是关于使用 sklearn DBSCAN 模型对新条目进行分类的主要内容,如果未能解决你的问题,请参考以下文章

sklearn 的标准 DBSCAN 怎么跑得这么快?

如何在 DBSCAN sklearn 中获取质心?

如何在sklearn dbscan中使用多个内核?

sklearn DBSCAN用大epsilon聚类GPS位置

DBSCAN 集群甚至无法处理 40k 数据,但使用 python 和 sklearn 处理 10k 数据

DBSCAN sklearn 内存问题