我正在尝试使用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