根据统计测量,我们可以决定 K。如标准偏差、均值、方差等,或者
有没有简单的方法来选择 K-means 算法中的 K?
提前感谢纳文
根据统计测量,我们可以决定 K。如标准偏差、均值、方差等,或者
有没有简单的方法来选择 K-means 算法中的 K?
提前感谢纳文
如果您明确想要使用 k-means ,您可以研究描述x-means的文章。当使用 x-means 的实现时,与 k-means 相比的唯一区别是,您无需指定单个 k,而是指定 k 的范围。“最佳”选择,wrt。一些措施,在范围内将是 x-means 输出的一部分。您还可以查看 Mean Shift聚类算法。
如果您的给定数据在计算上是可行的(可能按照 yura 的建议使用抽样),您可以使用各种 k 进行聚类,并使用一些标准集群有效性度量来评估生成的集群的质量。这里描述了一些经典的度量:measures。
@doug 在集群分配开始之前,k-means++ 确定集群数量的最佳 k 是不正确的。k-means++ 与 k-means 的不同之处仅在于它不是随机选择初始 k 个质心,而是随机选择一个初始质心并连续选择中心直到 k 被选择。在初始完全随机选择之后,数据点被选择为新质心,其概率由取决于数据点到已选择中心的距离的势函数确定。k-means++ 的标准参考是k-means++: Arthur 和 Vassilvitskii 所著的小心播种的优势。
另外,我认为通常选择 k 作为主成分的数量不会改善您的聚类。想象一下 3D 空间中的数据点都位于穿过 origo 的平面上。然后,您将获得 2 个主成分,但点的“自然”聚类可以有任意数量的聚类。
不幸的是没有。没有一种简单或复杂的有原则的统计方法可以设置“正确的 K”。有一些启发式的经验法则有时有效,有时无效。
这种情况更为普遍,因为许多聚类方法都具有这些类型的参数。
好吧,对于常用的质心数(k)的智能选择问题,有两种实用的解决方案。
首先是对您的数据进行PCA 分析,而 PCA 的输出——主要成分(特征向量)及其对数据中观察到的变化的累积贡献——显然表明了质心的最佳数量。(例如,如果您的数据中 95% 的可变性由前三个主成分解释,那么 k=3 是 k-means 的明智选择。)
第二种常用的智能估计 k 的实用解决方案是 k-means 算法的修订实现,称为k-means++。本质上,k-means++ 与原始 k-means 的区别只是增加了一个预处理步骤。在此步骤中,估计质心的数量和初始位置。
k-means++ 所依赖的算法很容易理解并在代码中实现。两者的一个很好的来源是 2007 年LingPipe博客中的一篇文章,它提供了对 k-means++ 的出色解释,并引用了首次介绍该技术的原始论文。
除了为 k 提供最佳选择之外,k-means++ 在性能(与已发表的比较中的 k-means 相比大约 1/2 的处理时间)和准确性(在同一比较研究中的错误)。
当您不知道集群的数量时,贝叶斯 k-means可能是一种解决方案。网站上有一篇相关的论文,也给出了相应的MATLAB代码。
未知(通过统计参数模型等)ML 问题的最佳解决方案是对数据进行采样并找到最适合子问题的参数,然后将它们用于完整问题。在这种情况下,为 5% 的数据选择最佳 K。