如何总结和理解 DBSCAN 聚类在大数据上的成果?

机器算法验证 聚类 数据挖掘 解释 大数据
2022-03-26 11:40:23

许多聚类算法可用于大数据,例如。KMeans 版本、基于 Hadoop 的 DBSCAN 等。但是,使用 k 意味着我们将获得 k 个集群的 k 个质心,我们可以将它们映射到空间并以某种方式理解结果。但是像 DBSCAN 这样的基于密度的算法呢?在 DBSCAN 中,如果是大数据,我们将获得 m 个包含数百万和数十亿数据点的集群。

我们如何尝试理解这种聚类的结果?

如果我们不了解每个集群,则对更多数据进行集群是昂贵且毫无意义的。

2个回答

您确定集群大数据实际上在任何地方都可以使用吗?

据我所知,它没有被使用。每个人都使用分类,没有人使用聚类。因为聚类问题要困难得多,并且需要对结果进行手动分析

K-means:通常的 Lloyd 算法是幼稚的并行算法,因此在 Hadoop 上实现起来很简单。但同时,在大数据上使用 k-means 也没有任何意义原因很简单:没有密集向量大数据K-means 适用于多达 10 个维度。使用双精度,我需要每条记录 80 个字节。一台具有 1 GB RAM 的普通计算机已经可以将大约 1300 万个向量装入主存储器。我有 128 GB RAM 的机器...

因此,您将很难找到一个真实的数据集,其中:

  • 我在一台计算机上用完了内存。
  • k-means 产生显着的结果。(在高维数据上,k-means 通常只与随机 voronoi 分区一样有效!)
  • 结果比样本有所改善。

最后一点很重要:k-means 计算均值当您添加更多数据时,平均值的质量不会无限提高。您只会得到边际变化(如果结果稳定,即 k-means 有效)。最有可能的是,您的分布式计算在途中已经失去了比最终获得的更多的精度......

现在对于 DBSCAN:我不知道流行的分布式实现。时不时地提出一个新的并行 DBSCAN,通常使用网格,但我从未见过在实践中使用或公开可用的。同样,使用 DBSCAN有意义的有趣数据的可用性存在问题。

  • 对于大数据,如何设置minPtsepsilon参数?如果你弄错了,你将不会有任何集群;否则一切都将是一个大的 custer。
  • 如果您的数据是低维的,请参阅上文的 k-means。使用 R*-trees 和网格等技术,一台计算机已经可以使用 DBSCAN 对具有数十亿个点的低维数据进行聚类。
  • 如果您有复杂的数据,索引不再起作用,DBSCAN 将二次扩展,因此不适合大数据。

许多平台/公司喜欢假装他们可以在他们的集群上合理地运行 k-means。但事实是,这种方式没有意义,它只是制作和技术演示。这就是为什么他们通常使用随机数据来炫耀,或者可怕的损坏的 KDDCup1999 数据集(我仍然可以在单台计算机上比在任何 Hadoop 集群上更快地集群!)。

那么在实践中真正做了什么

  • Hadoop 集群是您的数据仓库(更名为花哨的新大数据)。
  • 您对原始数据运行分布式预处理,以将其按摩成形。
  • 预处理后的数据足够小,可以在一台计算机上进行集群,并使用更高级的算法(甚至可以二次缩放,并且不必是幼稚的并行)
  • 你把它卖给你的营销部门
  • 您的营销部门将其出售给 CSomethingO。
  • 每个人都很高兴,因为他们现在是大数据专家。

我们不需要了解每个应用程序中的集群是不正确的。实际上,如果您几乎没有建立良好的集群,那么您可能很快就会进行一些监督学习而不是聚类:进行选择的聚类,检查结果,为集群成员分配标签,使用基于分配标签的监督方法进行训练。

我可以给你一个简单的例子,其中集群的数量可能很大并且仍然有用:对相似的新闻故事或推文进行分组。例如,在一个网站中,我们希望提供从新闻故事到其他类似故事的链接。这需要找到相似的新闻,即每个新闻故事所属的集群,而不必为每个集群分配“标签”。