我正在測試一些文本文檔數據集上的聚類算法(詞頻作爲特徵)。依次運行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