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

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

我有一个巨大的“动态”数据集,我正在尝试在其中找到有趣的集群。

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

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

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

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

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

最佳答案

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

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

相关文章:

r - numInClass[i]%/%k : non-numeric argument to binary operator 中出现错误

python - 从 Scikit Learn 中保存的训练分类器做出预测

python - 寻找数字编码分类变量之间的相关性?

machine-learning - 如何防止caffe中的权重更新

python - 为什么在 python 中获取 sklearn 中的顶级预测结果不同?

machine-learning - 如何使用SVM求精确率、召回率、准确率?

python - Python 中的逻辑回归和交叉验证(使用 sklearn)

parsing - 如何获得粗粒度的词性标签?

python - 在预测期间,数据规范化如何在 keras 中工作?

python - sklearn Python 和逻辑回归