我正在做一些测试,聚集大量的表示各种超文本文档的词频 - 逆文档频率的非常大的稀疏向量。考虑到数据集的比例,你建议用什么算法对数据进行聚类?矢量的维度将是> 3,并且矢量的数量可以是大约10 。我看了一下dbscan和光学算法。集群的数目并不是先验的。一个具有如此高维度的空间索引似乎很复杂。聚类巨大的向量空间
回答
我几乎和其他任何东西一样,使用简单的K均值聚类方法得到了几乎同样好的结果,而且它绝对比大多数替代方法快。我在成对集聚方面也取得了不错的成绩,但速度相对较慢。对于K均值,您不得不从一些估计数量的簇开始,但您可以随着算法对其进行调整。如果发现两个集群的距离太近,则可以减少集群的数量。如果您发现变化范围过大的群集,则尝试更多群集。我发现sqrt(N)是一个合理的起点 - 但我通常以10^7以上的文档而非10^9开头。对于10^9,可能会有所减少。
但是,如果这取决于我,那么我会非常努力地开始降低像Landmark MDS,然后这样的维度进行聚类。
决策树在高维空间有效地工作是很受欢迎的。检查出Clustering Via Decision Tree Construction。
另外,Randomized Forests是非常高效的学习者,如果你想玩它,可以使用OpenCV implementation exists。
我听说semantic hashing取得了优异的成绩。然而,深层次的信念网络很难实现。你可能想尝试min哈希(虽然这是一种概率方法)或locality sensistive hashing for euclidean spaces。
一般来说,由于维度的诅咒和大多数项目彼此具有类似距离的事实,在这样的高维空间中聚类很困难。如果您事先通过SOM或PCA降低维度,则可以使用像K-Means这样的标准方法。
感谢您的有趣链接。 – piotr 2009-10-11 12:22:34
如果分组数据我总是尝试至少这两种算法顺序如下:
K-方式:试着调整的结果尽可能地。如果你能让K-Means为你工作,并提供可观的结果,那么当其他算法的时候几乎肯定不会做得更好。
期望值最大化:K-means算法实际上被开发成为EM算法的一种廉价且很好的替代方案。 EM算法的理解更复杂,计算成本更高,但EM的结果非常好。你可以了解更多关于EM http://en.wikipedia.org/wiki/Expectation-maximization_algorithm。有一个OpenCV的实现EM的:http://opencv.willowgarage.com/documentation/expectation-maximization.html
如果既没有这两者的结果是令人满意的,我会跳槽,但不,直到两者都已尝试过。
- 1. 聚类巨大的高维向量
- 2. div和iframe之间的巨大空间
- 3. 在一个巨大的存储空间
- 4. SQL Server 2008空间聚类
- 5. 用于巨大顺序计算的java聚类
- 6. 聚类K均值聚类的最佳色彩空间
- 7. 砌体放置块之间有巨大的空间
- 8. 无法删除结果之间的巨大空间
- 9. 在度量空间中有聚类的方法吗?
- 10. 没有巨大的“常量”类存储游戏对象常量
- 11. R,按值进行空间聚类
- 12. 清除向量空间
- 13. 为矢量分配大量的空间
- 14. 支持巨大磁盘空间的滑轨
- 15. 内容和页脚之间的巨大空白
- 16. 使用巨大的ArrayLists,Java OutOfMemoryError:Java堆空间...使用db?
- 17. R.巨大的两个字符串向量
- 18. KafkaSpout(空闲)会产生巨大的网络流量
- 19. 页面底部巨大的空白处
- 20. SSRS 2008 R2 DynamicHeight巨大的空白
- 21. HTML&CSS中的巨大白色空白
- 22. 表头中巨大的空白位置
- 23. 聚类间隔
- 24. Netlogo - 有效更新大型GIS景观中空间聚集变量的颜色
- 25. imageview和textview之间的巨大差距
- 26. 两个类似SQL查询之间的巨大性能差异
- 27. 芹菜任务之间共享巨大的分类器对象
- 28. 批量更新巨大的表
- 29. 分组数量巨大的行
- 30. 我有两行代码之间的巨大空间,我该如何删除?
K-Means应该**总是**尝试群集*任何*时尝试的第一种分割技术。简单,高效并且大部分时间都能提供出色的结果。唯一的缺点是必须选择一个合适的K值。您可以随时尝试增加一系列K的计算集群间方差作为聚类质量的标准。然而,这在实践中并不适用。 – ldog 2009-10-08 22:06:31