Mahout 上的 K-means 返回非独占集群
Posted
技术标签:
【中文标题】Mahout 上的 K-means 返回非独占集群【英文标题】:K-means on Mahout returning non-exclusive clusters 【发布时间】:2011-08-25 15:27:42 【问题描述】:在我的数据中,我的用户有一个喜欢列表,我已将这些喜欢转储到每个用户的单独文件中,并希望将它们聚集在一起。一切正常,除了输出在多个集群中具有相同的喜好。我的理解是k-means应该是排他的。我认为问题可能在于我如何转储数据。在我可以编写自定义标记器之前,我也暂时放弃了所有没有空格的喜欢。这是我正在运行的内容(来自 ruby 脚本)。
system("#MAHOUT_CMD seqdirectory -c UTF-8 -i data/users -o data/kmeans/converted")
system("#MAHOUT_CMD seq2sparse -i data/kmeans/converted -o data/kmeans/vectors")
system("#MAHOUT_CMD kmeans -i data/kmeans/vectors/tfidf-vectors -c data/kmeans/initial_clusters -o data/kmeans/kmeans_clusters -dm org.apache.mahout.common.distance.EuclideanDistanceMeasure -cd 0.1 -k 20 -x 20")
last_cluster_folder = Dir["data/kmeans/kmeans_clusters/*"].last.gsub("data/kmeans/kmeans_clusters/", "")
system("#MAHOUT_CMD clusterdump -s data/kmeans/kmeans_clusters/#last_cluster_folder/ -d data/kmeans/vectors/dictionary.file-0 -dt sequencefile -o data/kmeans/clusters.txt -n 1000")
输出列出了每个集群中的“热门词条”,但是每个集群中都会出现许多类似的词(尽管权重不同)。是clusterdumper的正常输出吗,是否需要通过权重找出每个单词属于哪个簇?
谢谢
【问题讨论】:
这在 user@mahout.apache.org 上可能会更成功 【参考方案1】:Mahout 可能只是在做近似 k-means。此外,可能存在与多个集群具有相同距离的对象。
但是,您应该能够只采用 k
方法,然后执行 1-最近邻分类以获得每个对象的唯一结果(这对于并行化很简单并且非常快)。
【讨论】:
以上是关于Mahout 上的 K-means 返回非独占集群的主要内容,如果未能解决你的问题,请参考以下文章
Mahout Java API 用于查找使用 k-means 生成的集群的质心