使用GPU支持的高维数据更快的Kmeans聚类

我们一直在使用Kmeans来对我们的日志进行聚类。一个典型的数据集有1000万个样本和10万多个特征。

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

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

我已经测试过的方案包括:

  1. Kmeans + Mean Shift 组合 – 稍微好一些(对于k=1024时,约13小时),但仍然很慢。

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

  3. Tensorflow (tf.contrib.factorization.python.ops.KmeansClustering()) – 今天刚开始调查,但要么是我做错了什么,要么是我不知道如何正确使用。在第一次测试中,使用2万个样本和500个特征,单个GPU上的聚类比单线程CPU上的速度还要慢。

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

接下来我计划尝试PySpark MlLib的Kmeans。但在一个节点上使用它是否有意义呢?

对于我的用例,使用多个GPU进行训练会更快吗?例如,使用8个Tesla V-100的TensorFlow?

有没有我没听说过的神奇库?

还是简单地垂直扩展?


回答:

感谢@*** 对RAPIDS cuml库的建议。

后续内容可在此处找到这里

Related Posts

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注