我正在嘗試使用MiniBatchKMeans將NLP數據進行流式處理並對其進行羣集處理,但無法確定需要多少個羣集。我想要做的是定期拍攝輪廓分數,如果它低於某個閾值,則增加質心的數量。但據我所知,n_clusters
在初始化羣集器時設置,不能在不重新啓動的情況下進行更改。我錯了嗎?有沒有解決這個問題的另一種方法可以避免這個問題?在擬合過程中是否可以增加KMeans中的質心數?
回答
在優化過程中這樣做並不是一個好主意,因爲它會大大改變優化過程。它將基本上重置整個優化。有一些策略,比如平分k-均值,試圖在聚類過程中學習k的值,但它們比將k增加1更棘手 - 他們決定要分割一個特定的聚類,並嘗試選擇好的初始質心這個集羣保持一定的穩定性。
此外,增加k並不一定會改善Silhouette。它會平均改善SSQ,所以你也不能用SSQ作爲選擇k的啓發。
最後但並非最不重要的是,計算Silhouette是O(n^2)。經常運行太昂貴了。如果您有足夠大的數據量來要求MiniBatchKMeans(其中確實是僅用於海量數據),那麼您顯然不能計算出Silhouette。
好的,謝謝,我不知道,它大於50GB的元數據,所以是的,它很大 –
然後讓我給你一個重要的建議:**先使用樣本**,測試你的方法。只對您的完整數據進行縮放*。因爲根據我的經驗,k-means會令你失望(請讓我知道它是否給你帶來了好的結果!) - 我一直在考慮做一些關於k-means的工作(並且我有一些很好的想法),但是它在我的問題上從未效果良好。 –
我在樣本上使用過它,它工作得很好 –
- 1. 在Matlab中kmeans的質心
- 2. 不含kmeans的質心matlab
- 3. 平方和中的Kmeans總數是否隨羣集數量增加而增加?
- 4. scikit-learn中的minibatch kmeans是否使用部分擬合增量式學習?
- 5. 是否可以模擬Android中增加的時間流逝率?
- 6. 基於質心擬合羣集數
- 7. kmeans分類到預定的質心
- 8. matlab中kmeans的質心計算中的錯誤
- 9. 是否可以在C++中的for循環中動態增加?
- 10. 如何在python中找到Kmeans ++聚類的擬合程度
- 11. 當arangodb集合增長時,是否可以增加分片的數量?
- 12. kmeans是否可重複?
- 13. 是否可以在IE8中模擬Object.getOwnPropertyNames
- 14. TensorFlow:是否適合以相當於擬合1大增量的小步增量?
- 15. 在MySQL中是否可以成對自動增加?
- 16. 是否可以在Dynamo DB中增加項目大小
- 17. 是否可以在Perl中增加標量引用?
- 18. 是否可以在C++中增加變量作用域?
- 19. 是否可以在ModelSim中的模擬上編寫驗證過程?
- 20. R:是否可以在擬合模型上繪製數據?
- 21. MySql 5.0.x中的存儲過程是否可以加密?
- 22. 是否可以在CSS中組合類?
- 23. 是否可以在ILE COBOL過程中使用abitrary-length參數?
- 24. 在通話過程中是否可以攔截語音數據?
- 25. 是否可以在Android中有一個ZipOutputstream或GZIPOutputStream,可以增量添加到?
- 26. 我們是否可以增加WP7中Toast通知的高度
- 27. 是否可以增加Java中的字符串或字符?
- 28. 是否可以增加Xamarin.iOS中UITabBarItem的寬度?
- 29. NavigationDrawer - 是否可以在程序中模擬(執行)點擊
- 30. 是否有可能在Python中使用KMeans中的非浮點數據(Scikit-Learn)?
儘管事實證明,k-means是啓發式的,我敢肯定,運行期間聚類數量的變化會對交替最小化類型的算法產生極其負面的影響(你會陷入由於現在已經過時的參數,因此只有當地的最小值並且只有那裏)。至少,這是我的想法!只需對n_cluster的不同值進行優化並比較你的分數(如果你信任它們的話)。 k-means應該足夠快來做這種驗證策略。這種方法會更穩定! – sascha