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

时间:2015-04-14 10:55:08

标签: machine-learning scikit-learn classification cluster-analysis dbscan

我有一个巨大的动态"数据集,我试图在其上找到有趣的集群。

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

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

使用 sklearn ,我发现其他群集算法(如MiniBatchKMeans)采用predict方法,但DBSCAN没有。

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

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

2 个答案:

答案 0 :(得分:2)

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

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

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

答案 1 :(得分:1)

DBSCAN和其他无监督的'聚类方法可以用于自动传播分类器使用的标签(一种受监督的机器学习任务),这就是所谓的半监督'机器学习。我打破了这样做的一般步骤,并引用了一系列半监督的论文,推动了这种方法的发展。

  1. 通过某种方式,标记一小部分数据。
  2. 使用DBSCAN或其他聚类方法(例如k-最近邻居)来聚类标记和未标记的数据。
  3. 对于每个群集,确定群集成员的最常见标签(如果有)。将群集中的所有成员重新标记为该标签。这有效地增加了标记的训练数据的数量。
  4. 使用步骤3中的数据集训练有监督的分类器。
  5. 以下文章提出了对此一般过程的一些扩展,以提高分类性能。值得注意的是,以下所有论文都发现,与其他十几种聚类方法相比,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年格伦南论文。

    • 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)。网络流量的半监督和复合分类。在Proceedings - 第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