通过数据集的随机子样本初始化 K-means 中心?

机器算法验证 聚类 k-均值 无监督学习
2022-02-27 01:33:17

如果我有某个数据集,那么使用该数据集的随机样本初始化集群中心有多聪明?

例如,假设我想要5 clusters. 5 random samplessize=20%的是原始数据集。然后我可以取这 5 个随机样本中的每一个的平均值并将这些平均值用作我的 5 个初始聚类中心吗?我不知道我在哪里读到的,但我想知道你们对这个想法的看法。


更新:请参阅此线程Initializing K-means clustering: what are the existing methods?有关各种初始化方法的一般性讨论。

4个回答

如果您将样本随机分成 5 个子样本,您的 5 个均值几乎会重合。将如此接近的点作为初始集群中心有什么意义?

在许多 K-means 实现中,初始聚类中心的默认选择是基于相反的想法:找到相距最远的 5 个点并将它们作为初始中心。您可能会问,找到那些相距甚远的点的方法可能是什么?以下是 SPSS 的 K-means 正在为此做的事情:

取数据集中任意k个事例(点)作为初始中心。正在检查所有其余案例是否有能力通过以下条件替代初始中心:

  • a) 如果箱子离最靠近它的中心的距离比两个最接近的中心之间的距离更远,则箱子用它更接近的后两个中心代替。
  • b) 如果案例离第二个最近的中心比离它最近的中心和最靠近后一个中心的中心之间的距离更远,则案例替换离它最近的中心。

如果条件(a)不满足,则检查条件(b);如果不满足,则案件不会成为中心。作为这种遍历案例的结果,我们在云中获得了k个最大案例,这些案例成为初始中心。该算法的结果虽然足够稳健,但对“任意k个案例”的起始选择和数据集中案例的排序顺序并非完全不敏感;因此,仍然欢迎进行几次随机启动尝试,就像K-means 一样

请参阅我的答案以及 k-means 的流行初始化方法列表。拆分成随机子样本的方法(我和其他人在这里批评)以及 SPSS 使用的描述的方法 - 也在列表中。

手段太相似了。您也可以找到数据集的均值,然后将初始质心放置在该均值周围的小圆圈/球体中。

如果您想了解更多关于 k-means 的初始化方案,请查看 k-means++。他们设计了一种非常聪明的方法来播种 k-means。

  • Arthur, D. 和 Vassilvitskii, S. (2007)。
    k-means++:仔细播种的优势”。
    第十八届 ACM-SIAM 离散算法年度研讨会论文集

作者幻灯片: http ://www.ima.umn.edu/~iwen/REU/BATS-Means.pdf

正如 ttnphns 在他的评论中指出的那样,使用随机样本的方法将为您提供与您所需要的相反的结果。我们需要的是一种找到彼此相距相当远的数据点的方法。

理想情况下,您可以遍历所有点,找到它们之间的距离,确定距离最大的位置......

不要回避 OP 的意图,但我认为“解决方案”内置于 k-means 算法中。我们执行多次迭代并根据之前的迭代重新计算集群质心。我们通常也会多次运行 kmeans 算法(使用随机初始值),然后比较结果。

如果一个人有先验知识、领域知识,那么这可能会导致一种更好的方法来确定初始集群中心应该在哪里。否则,可能需要选择随机数据点作为初始值,然后使用多次运行和每次运行的多次迭代。

提出的答案都是有效的,但比您最初的建议更难实施。一个非常简单的初始化方法是采取k随机观察作为原始点。使两个初始点接近的概率非常低,除了最极端的情况外,该算法的执行速度很快。