algorithm - 确定 k 最近邻的最佳 k

标签 algorithm language-agnostic artificial-intelligence cluster-analysis complexity-theory

我需要对一组二维数据进行一些聚类分析(我可能会在此过程中添加额外的维度)。

分析本身将构成输入可视化的数据的一部分,而不是输入到另一个过程(例如 Radial Basis Function Networks )。

为此,我想找到一组主要“看起来正确”的集群,而不是阐明一些隐藏的模式。

我的直觉是 k-means这将是一个很好的起点,但找到正确数量的集群来运行算法将是有问题的。

我要解决的问题是:

如何确定“最佳”值 k 这样形成的簇是稳定的并且可以通过视觉验证

问题:

  • 假设这不是 NP 完全问题,找到一个好的 k 的时间复杂度是多少。 (可能以运行 k-means 算法的次数报告)。
  • k-means 是解决此类问题的良好起点吗?如果是这样,您会推荐哪些其他方法。一个由轶事/经验支持的具体示例是 maxi-bon。
  • 您会推荐哪些捷径/近似值来提高性能。

最佳答案

对于聚类数量未知的问题,凝聚层次聚类通常是比 k-means 更好的方法。

Agglomerative clustering产生一个树结构,离树干越近,聚类的数量越少,所以很容易扫描所有数量的聚类。该算法首先将每个点分配给它自己的簇,然后重复将两个最接近的质心分组。跟踪分组顺序允许对任意数量的可能集群进行即时快照。因此,当您不知道需要多少组时,最好使用此技术而不是 k-means。

还有其他层次聚类方法(请参阅 Imran 评论中建议的论文)。聚合方法的主要优点是有许多现成的实现可供您使用。

关于algorithm - 确定 k 最近邻的最佳 k,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1701136/

相关文章:

algorithm - 马桶座算法

python - 构建贪心任务调度器——Python算法

language-agnostic - 将 [0,1] 区间扩展为 [a,b] 的正确方法是什么?

java - 如何有效地调整图像处理算法的参数?

machine-learning - 如何在机器学习中处理特定记录中的特征的多个值?

algorithm - 您将如何编写非递归算法来计算阶乘?

解析有语法错误的代码

language-agnostic - 看起来不错的随机非白色颜色作为黑色文本的背景

machine-learning - 在反向传播中使用激活导数

algorithm - 重组数等于数学公式