我正在测试一些文本文档数据集上的聚类算法(词频作为特征)。依次运行Scikit Learn Clustering的一些方法,下面是它们花费多长时间~5万个文件,每个文件有26个特征。每次融合所花费的时间有很大的差异,我输入的数据越多,越极端,其中一些(例如MeanShift)在数据集增长到一定大小后才停止工作。集群计算
(下面给出的时刻是从剧本开始的总数,即KMEANS了0.004分,均值漂移(2.56 - 0.004)分钟等)
shape of input: (4957, 26)
KMeans: 0.00491824944814
MeanShift: 2.56759268443
AffinityPropagation: 4.04678163528
SpectralClustering: 4.1573699673
DBSCAN: 4.16347868443
Gaussian: 4.16394021908
AgglomerativeClustering: 5.52318491936
Birch: 5.52657626867
我知道有些聚类算法在本质上更计算密集型(例如,章节here概述了Kmeans的需求与数据点的数量呈线性关系,而层次模型为O(m logm))。 所以我想知道
- 我怎么能确定有多少个数据点每一种算法可以 手柄;并且是等于输入文件/输入特征的数量 与此等式相关吗?
- 计算强度取决于集群 设置的数量 - 例如, Kmeans中的距离度量或DBSCAN中的距离度量?
- 聚类成功是否影响计算时间?一些诸如DBSCAN等算法很快完成 - mabe,因为他们没有在数据中发现任何聚类; Meanshift找不到集群 ,并且仍然需要永远。 (我在这里使用默认设置)。可能 一旦他们发现数据中的结构会发生剧烈变化?
- 原始计算能力是多少这些算法的限制因素?我能在每台普通桌面计算机上使用〜30个 功能集群〜300,000个文件吗?或者是否有意义 使用计算机群集来处理这些事情?
任何帮助,非常感谢!测试是在一台Mac mini上运行的,2.6 Ghz,8 GB。数据输入是numpy array。
谢谢,这是非常有帮助!如果我正确地理解了你,那么继续试验和错误是我能做的最好的。关于你提到的“好基准”,在哪里可以找到类似的东西?谢谢! – patrick
首先,你应该关心获得有用的结果。很可能只有一个(或没有)通过仔细选择参数产生有用的结果。那么如果你是超级幸运的,相同的参数适用于多个文件... –
好听起来不错/令人鼓舞。 – patrick