在线 k-means 聚类

Posted

技术标签:

【中文标题】在线 k-means 聚类【英文标题】:Online k-means clustering 【发布时间】:2011-04-11 13:02:01 【问题描述】:

k-Means clustering算法有在线版本吗?

在线我的意思是每个数据点都是串行处理的,当它们进入系统时一次一个,因此在实时使用时可以节省计算时间。

我自己写了一篇效果不错的文章,但我真的更希望有一些“标准化”的东西可以参考,因为它会在我的硕士论文中使用。

另外,有人对其他在线聚类算法有什么建议吗? (lmgtfy 失败 ;))

【问题讨论】:

【参考方案1】:

是的,有。 Google 没能找到它,因为它通常被称为“序列 k 均值”。

您可以在this section of some Princeton CS class notes by Richard Duda 中找到两个顺序 K-means 的伪代码实现。我已经复制了以下两种实现之一:

Make initial guesses for the means m1, m2, ..., mk
Set the counts n1, n2, ..., nk to zero
Until interrupted
    Acquire the next example, x
    If mi is closest to x
        Increment ni
        Replace mi by mi + (1/ni)*( x - mi)
    end_if
end_until

关于它的美妙之处在于,您只需要记住每个集群的平均值和分配给集群的数据点的数量。更新这两个变量后,您可以丢弃数据点。

我不确定在哪里可以找到它的引文。我会开始查看 Duda 的经典文本 Pattern Classification and Scene Analysis 或更新版本的 Pattern Classification。如果没有,您可以尝试 Chris Bishop 的最新著作或 Daphne Koller 和 Nir ​​Friedman 最近的文本。

【讨论】:

谢谢。这一切都不同了。 适当的引用实际上可能是 MacQueen 出版物。他肯定包括这个平均更新规则,据我所知,他只通过了一次。那么你就有了这个算法。 我建议用 替换 "( x - mi)" 以明确它是一个距离度量。 @HasQUIT--Anony-Mousse MacQueen 的哪个出版物? @RylanSchaeffer 第一个使用kmeans这个名字,cf (ref)

以上是关于在线 k-means 聚类的主要内容,如果未能解决你的问题,请参考以下文章

机器学习——K-means(聚类)与人脸识别

Mini Batch K-Means 和 Sequential/online K-Means 的区别

K-Means算法的Python实现

K-Means聚类算法原理

4.K-MEANS聚类算法

K-Means聚类算法原理