相关疑难解决方法(0)

在 GPU 支持下对高维数据进行更快的 Kmeans 聚类

我们一直在使用 Kmeans 来对日志进行聚类。典型的数据集有 10 mill。具有 100k+ 特征的样本。

为了找到最佳 k - 我们并行运行多个 Kmeans,并选择轮廓得分最佳的一个。在 90% 的情况下,我们最终得到的 k 介于 2 到 100 之间。目前,我们使用 scikit-learn Kmeans。对于这样的数据集,在具有 32 个内核和 244 RAM 的 ec2 实例上进行集群大约需要 24 小时。

我目前一直在研究更快的解决方案。

我已经测试过的:

  1. Kmeans + Mean Shift组合- 好一点(对于 k=1024 --> ~13h),但仍然很慢。

  2. Kmcuda库 - 不支持稀疏矩阵表示。需要约 3TB RAM 才能将该数据集表示为内存中的密集矩阵。

  3. Tensorflow ( tf.contrib.factorization.python.ops.KmeansClustering() ) - 今天才开始调查,但要么我做错了什么,要么我不知道如何烹饪它。在我使用 20k 样本和 500 个特征进行的第一次测试中,单个 GPU 上的集群比单线程 CPU 上的集群慢。

  4. Facebook FAISS - 不支持稀疏表示。

我的列表中的下一个是 PySpark MlLib Kmeans。但它在 1 个节点上有意义吗?

在多个 GPU 上更快地训练我的用例吗?例如,带有 8 个 Tesla …

cluster-analysis machine-learning k-means pyspark tensorflow

5
推荐指数
2
解决办法
4639
查看次数