使用 Mahout 对一个点进行聚类

Posted

技术标签:

【中文标题】使用 Mahout 对一个点进行聚类【英文标题】:Using Mahout for clustering one point 【发布时间】:2014-11-01 14:43:08 【问题描述】:

我知道 Mahout 用于批处理,但我很感兴趣是否可以使用它的 KMeans 以及如何对单个点进行聚类?

假设我们有以下情况

全局聚类,对所有数据执行批处理并给出质心作为结果 一个点聚类,它使用来自全局聚类的质心,将该点分配给一个聚类 - 它不需要重新计算聚类质心 - 只需将该点分配给现有聚类

我可以使用 Mahout 执行此操作,还是必须自己实现它?我认为将迭代次数设置为 1,并以这种方式分配点,但问题是,KMeans 重新计算集群质心,如果该新点是异常值,它会从中创建一个新集群。我不想要那个,我实际上想要到最近质心的距离。

目前看来,用KMeans来做这个不是很合适,但应该单独实现……对吗?

谢谢

【问题讨论】:

【参考方案1】:

您不需要为此使用 Mahout。

K-means 将点分配给最近的中心。

所以只需获取所有中心(应该很容易放入 RAM),然后计算每个中心的最小二乘差。

这只是几个 CPU 周期,尝试在 Mahout 上执行此操作绝对没有任何好处 - 开销对于一些 k 距离计算来说太大了。

【讨论】:

以上是关于使用 Mahout 对一个点进行聚类的主要内容,如果未能解决你的问题,请参考以下文章

K 表示使用 Mahout 进行聚类

mahout kmeans 聚类:显示错误

使用 Clojure 使用 Mahout 进行聚类 (fkmeans)

如何使用存储为 CSV 的矢量数据在 mahout 中执行 k-means 聚类?

Mahout实践指南 pdf

Mahout 模糊kmeans