我有一个巨大的“动态”数据集,我正在尝试在其中找到有趣的集群。
运行了很多不同的无监督聚类算法后,我发现了 DBSCAN 的配置。这给出了一致的结果。
我想推断 DBSCAN
根据我的测试数据创建的模型,将其应用到其他数据集,但无需重新运行算法。我无法在整个数据集上运行该算法,因为它会耗尽内存,并且由于数据是动态的,该模型在不同时间对我来说可能没有意义。
使用sklearn,我发现其他聚类算法 - 例如 MiniBatchKMeans - 有一个predict
方法,但DBSCAN
没有。
据我了解,对于 MiniBatchKMeans
来说,质心唯一地定义了模型。但对于 DBSCAN
来说,这样的事情可能不存在。
所以我的问题是:推断DBSCAN
模型的正确方法是什么?我应该使用 DBSCAN 在测试数据集上给出的输出来训练监督学习算法吗?或者是否存在本质上属于 DBSCAN
模型的东西,可用于对新数据进行分类而无需重新运行算法?
最佳答案
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
王 Y.、向 Y.、张 J. 和 Yu S. (2011)。一种新颖的网络流量聚类半监督方法。第五届网络与系统安全国际 session (NSS)(第 169-175 页)。意大利米兰:IEEE。 https://doi.org/10.1109/ICNSS.2011.6059997
张建、陈成、向勇和周伟 (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 届澳大利亚 session (第 2 卷,第 493-501 页)。墨尔本:施普林格国际出版社。 https://doi.org/10.1007/978-3-319-40367-0_33
关于machine-learning - 使用sklearn DBSCAN模型对新条目进行分类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29625550/