如果我有某个数据集,那么使用该数据集的随机样本来初始化聚类中心有多么聪明?
例如,假设我要5 clusters
。我可以5 random samples
说size=20%
是原始数据集。然后,我可以对这5个随机样本中的每个样本取平均值,然后将这些均值用作我的5个初始聚类中心吗?我不知道我在哪里读这本书,但我想知道你们对这个想法的看法。
更新:请参阅此线程初始化K-means聚类:现有的方法有哪些?有关各种初始化方法的一般讨论。
如果我有某个数据集,那么使用该数据集的随机样本来初始化聚类中心有多么聪明?
例如,假设我要5 clusters
。我可以5 random samples
说size=20%
是原始数据集。然后,我可以对这5个随机样本中的每个样本取平均值,然后将这些均值用作我的5个初始聚类中心吗?我不知道我在哪里读这本书,但我想知道你们对这个想法的看法。
更新:请参阅此线程初始化K-means聚类:现有的方法有哪些?有关各种初始化方法的一般讨论。
Answers:
如果将样本随机分为5个子样本,则5个均值几乎会重合。将这样的近点作为初始聚类中心有什么意义?
在许多K均值实现中,初始聚类中心的默认选择是基于相反的想法:找到相距最远的5个点,并将它们作为初始中心。您可能会问,找到那些遥远的点的方式可能是什么?这是SPSS的K-means为此所做的:
将数据集的任何k个案例(点)作为初始中心。正在通过以下条件检查所有其余案例是否有能力替代它们作为初始中心:
如果不满足条件(a),则检查条件(b)。如果不满意,则案件也不会成为中心。这样运行的通过情况下,结果我们得到ķ在云计算最大的案件成为了最初的中心。这种算法的结果尽管足够健壮,但对“任何k个案例” 的开始选择和数据集中案例的排序顺序并不完全不敏感。所以,几个随机启动尝试仍然欢迎,因为它总是与K-手段的情况下。
请参阅我的答案,并列出一些流行的k均值初始化方法。分裂为随机子样本的方法(我和其他人在这里也批评过)以及SPSS使用的描述方法-也在列表中。
手段太相似了。您也可以找到数据集平均值,然后将初始质心放在该平均值周围的小圆圈/球体中。
如果您想了解k-means的更多声音初始化方案,请查看k-means ++。他们设计了一种相当聪明的k均值播种方法。
ttnphns在其评论中指出,使用随机样本的方法将使您获得所需的相反结果。我们需要的是一种找到彼此相距很远的数据点的方法。
理想情况下,您可以遍历所有点,找到它们之间的距离,确定距离最大的位置...
不要回避OP的意图,但我认为“解决方案”已内置在k-means算法中。我们执行多次迭代,并根据之前的迭代重新计算聚类质心。我们通常还会多次运行kmeans算法(使用随机初始值),然后比较结果。
如果一个人具有先验知识,领域知识,那么这可能会导致一种更好的方法来识别初始聚类中心应该在哪里。否则,可能需要选择随机数据点作为初始值,然后每次运行利用多次运行和多次迭代。