首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >关于不同k-means算法的质量

关于不同k-means算法的质量
EN

Stack Overflow用户
提问于 2012-12-13 14:47:09
回答 4查看 257关注 0票数 4

我看到对于k-means,我们有Lloyd算法,Elkan算法,我们还有k-means的分层版本。

对于所有这些算法,我看到Elkan的算法可以在速度方面提供提升。但我想知道的是,所有这些k-means算法的质量。由于它们的启发式和概率性质,每次我们运行这些算法时,结果都会不同。现在,我的问题是,当涉及到k-means这样的聚类算法时,如果我们想要有更好的质量结果(比如在较小的失真等方面)。在所有这些k-means算法中,哪种算法能为您提供更好的质量?有没有可能测量这样的东西?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2012-12-13 16:40:32

更好的解决方案通常是具有更好(较低) J(x,c)值的解决方案,其中:

代码语言:javascript
运行
复制
J(x,c) = 1/|x| * Sum(distance(x(i),c(centroid(i)))) for each i in [1,|x|]

,其中:

  • x是samples
  • |x|的列表是elements)
  • [1,|x|]的大小( (inclusive)
  • c是从1到x的所有数字|x|是集群的质心(或均值)列表(即,对于点聚类|c| = k)
  • distance(a,b) (有时表示为||a-b||是“点”a到“点”b之间的距离(在欧几里得2D空间中,它是sqrt((a.x-b.x)^2 + (a.y-b.y)^2))
  • centroid(i) -最接近x(i)

的质心/平均值

请注意,这种方法不需要切换到监督技术,并且可以完全自动化!

票数 4
EN

Stack Overflow用户

发布于 2012-12-13 15:39:23

据我所知,你需要一些带标签的数据来交叉验证你的聚类算法。

票数 1
EN

Stack Overflow用户

发布于 2012-12-13 17:55:55

两个月的数据集的病理情况如何?无监督的k-means算法将会严重失败。据我所知,一种高质量的方法使用了更多的概率方法,使用了互信息和组合优化。基本上,您可以将聚类问题转换为在两个集群的情况下找到全点集的最佳集群子集的问题。

您可以找到relevant paper here (第42页)和相应的Matlab code here来玩(查看两个月的情况)。如果你对它的C++高性能实现感兴趣,它的速度超过30倍,那么你可以找到here HPSFO

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13854492

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档