cluster-analysis - Mahout 二进制数据聚类

标签 cluster-analysis binary-data mahout k-means dimension-reduction

我有具有二进制特征的点:

id, feature 1, feature 2, ....
1, 0, 1, 0, 1, ...
2, 1, 1, 0, 1, ...

矩阵的大小约为20k * 200k,但很稀疏。我正在使用 Mahout 通过 kmeans 算法对数据进行聚类,并有以下问题:

  1. kmeans 是二元特征的良好候选者吗?
  2. 有没有办法在保持曼哈顿距离度量概念的同时减少维度(我需要曼哈顿而不是 Cosine 或 Tanimoto)
  3. kmeans 的内存使用率很高,每个 Map/Reduce 任务需要 4GB 内存(3k 集群的 400Mb 向量文件上有 4Mb block )。考虑到 Mahout 中的 Vector 对象使用双项,有没有办法只对点使用 bool 项,而对中心使用双项?

最佳答案

如果您有良好的距离度量,k-means 是一个不错的选择。曼哈顿距离还可以;我喜欢对数似然。

您可以使用任何您喜欢的降维技术。我喜欢交替最小二乘法; SVD 也运行良好。对于这个大小的矩阵,您可以使用 Commons Math 在内存中轻松完成,而不必费心使用 Hadoop —— 这太过分了。

(另请参见http://myrrix.com——我有一个非常快的ALS实现,您可以在核心/在线模块中重用。它可以在几秒钟内将其处理成数十MB的堆。)

特征矩阵中不再有二进制 0/1 值。在特征空间中,余弦距离应该效果很好(1 - 余弦相似度)。谷本/杰卡德不合适。

关于cluster-analysis - Mahout 二进制数据聚类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11428156/

相关文章:

android - 在 Parse (Android) 中保存和检索照片和视频

Python 中 Java 的 Mahout 等价物

Mahout bool 型基于用户的推荐器的相似度函数

cluster-analysis - 如何基于主题对短消息 [Tweets] 进行聚类? [基于主题的聚类]

python - 测量集群内的差异 - Kmodes

ios - 如何将 NSData 转换回 NSArray

mysql - Mahout 解决推荐性能问题

algorithm - k-means++ vs 初始​​中心随机

c++ - 从 Kmeans 中找到每个集群的分布

ruby-on-rails - 无法使用 Rails 中的 redis gem 在 Redis 中正确保存图像