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

4
我有一个庞大的“动态”数据集,正在尝试找到其中有趣的聚类。
经过运行许多不同的无监督聚类算法,我发现了一种DBSCAN的配置,可以给出连贯的结果。
我想推断出DBSCAN根据我的测试数据创建的模型,以将其应用于其他数据集,但是不重新运行算法。我不能在整个数据集上运行算法,因为它会耗尽内存,并且模型在不同时间的数据动态性可能对我没有意义。
使用sklearn,我发现其他聚类算法(如MiniBatchKMeans)具有predict方法,但DBSCAN没有。
我理解对于MiniBatchKMeans,质心唯一地定义了模型。但是对于DBSCAN,这样的东西可能不存在。
我的问题是:如何正确地推广DBSCAN模型?我应该使用DBSCAN在测试数据集上的输出来训练监督学习算法吗?还是有一些内在于DBSCAN模型的东西可以用来对新数据进行分类,而无需重新运行算法?
2个回答

4
DBSCAN和其他“无监督”聚类方法可用于自动传播分类器使用的标签(一种“监督式”机器学习任务),这被称为“半监督式”机器学习。我将分解执行此操作的一般步骤,并引用一系列激发这种方法的半监督论文。
  1. 通过某种手段为数据的一小部分打上标签。
  2. 使用DBSCAN或其他聚类方法(例如k最近邻)对已标记和未标记的数据进行聚类。
  3. 对于每个簇,确定成员的最常见标签(如果有的话)。重新标记簇中的所有成员以该标签。这有效地增加了标记训练数据的数量。
  4. 使用步骤3中的数据集训练监督分类器。
以下论文提出了一些扩展来改善分类性能。需要注意的是,所有以下论文都发现相对于其他大约十几种聚类方法,k-means是一种始终如一、高效且有效的半监督学习聚类方法。然后使用具有大K值的k最近邻进行分类。其中一个专门涵盖基于DBSCAN的聚类的论文是:
- Erman,J.和Arlitt,M.(2006)。使用聚类算法进行流量分类。在Proceedings of the 2006 SIGCOMM workshop on Mining network data(pp.281-286)中。https://doi.org/http://doi.acm.org/10.1145/1162678.1162679 注意:这些论文按时间顺序列出,并相互补充。如果您只想查看最成功/先进的迭代,则应阅读2016年的Glennan论文。
  • Erman, J.,& Arlitt, M.(2006)。使用聚类算法进行流量分类。在Proceedings of the 2006 SIGCOMM workshop on Mining network data(pp.281-286)。https://doi.org/http://doi.acm.org/10.1145/1162678.1162679

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

  • Zhang, J.,Chen, C.,Xiang, Y.和Zhou, W.(2012)。网络流量的半监督和复合分类。在Proceedings - 32nd IEEE International Conference on Distributed Computing Systems Workshops,ICDCSW 2012(pp.617-621)。https://doi.org/10.1109/ICDCSW.2012.12

  • Glennan, T.,Leckie, C.和Erfani, S.M.(2016)。使用半监督机器学习改进已知和未知网络流量流的分类。在J.K. Liu和R. Steinfeld(Eds.),Information Security and Privacy:21st Australasian Conference(Vol.2,pp.493-501)。墨尔本:Springer International Publishing。https://doi.org/10.1007/978-3-319-40367-0_33


3

基于您的模型训练分类器。

DBSCAN 不易适应新对象,因为您最终需要调整 minPts。向 DBSCAN 添加点可能会导致聚类合并,这可能不是您想要的。

如果您认为 DBSCAN 找到的聚类很有用,请训练一个分类器将新实例放入相同的类别中。现在您想执行分类,而不是重新发现结构。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接