K-means++算法
Posted
技术标签:
【中文标题】K-means++算法【英文标题】:K-means++ algorithm 【发布时间】:2013-07-03 00:44:30 【问题描述】:我阅读了k-means++: The Advantages of Careful Seeding 的论文,并不太明白提供的算法是:
“令 D(x) 表示从数据点 x 到我们已经选择的最近中心的最短距离。
1a。随机均匀地选择一个初始中心c1 来自 X。
1b。选择下一个中心 ci,选择 ci = x' ∈ X 概率为 (D(x')^2) / Sum_of(D(x)^2)
1c。重复步骤 1b,直到我们总共选择了 k 个中心。
2-4。继续使用标准的 k-means 算法"
(最好看上面链接中的算法)
尤其是步骤 1b。 “以概率 (D(x')^2) / Sumof(D(x)^2) 选择 ci = x' ∈ X”是什么意思。他们的意思是选择比例最大的元素吗?以及如何执行这样的计算才能导致选择最佳质心?
【问题讨论】:
不确定为什么会收到 -1。 【参考方案1】:http://en.wikipedia.org/wiki/K-means%2B%2B
1. Choose one center uniformly at random from among the data points.
2. For each data point x, compute D(x), the distance between x and the nearest center that has already been chosen.
3. Choose one new data point at random as a new center, using a weighted probability distribution where a point x is chosen with probability proportional to D(x)2.
4. Repeat Steps 2 and 3 until k centers have been chosen.
5. Now that the initial centers have been chosen, proceed using standard k-means clustering.
【讨论】:
【参考方案2】:函数D(x)是为所有点x ∈ X定义的。
在步骤 1b 中,我们必须选择某个点作为新中心。我们将在所有点(还不是中心)之间随机选择。但我们不会对每一点都给予平等的机会;在我们选择之前,我们会为不同的点分配不同的概率。这些概率加起来必须为 1。
考虑 D(x)^2。我们可以在每一点上评估它,并将这些值相加:Sum_of(D(x)^2)。
然后我们可以为每个点 x' 分配一个等于 D(x')^2 / Sum_of(D(x)^2) 的概率。这些概率加起来为 1,并提供了一个更好的机会点远离所有现有中心。
【讨论】:
为什么我们不选择概率最高的点而不是随机选择一个? @LongPhan:我怀疑这根本不像随机选择中心那样有效。请记住,选择中心只是第一步;然后必须对其进行调整和调整,直到系统稳定为止。这篇论文的重点是加权概率比均匀概率更有效。也许如果按照您的建议选择初始中心,他们将有更远的路要走。经验性的答案需要数小时的实验工作;一个准确的答案可能需要数周(或更多)的工作来证明。 你认为论文[Single Pass Seed Selection Algorithm for k-Means][thescipub.com/pdf/10.3844/jcssp.2010.60.66]的算法比K-Means++更好吗? @LongPhan:该文档似乎是空的。 抱歉,链接末尾不应该有括号:thescipub.com/pdf/10.3844/jcssp.2010.60.66【参考方案3】:K-Means 和 K-Means++ 最大的区别在于初始中心的选择方式。 K-means 随机选择初始中心。在选择初始中心之前,K-Menas++会计算所有点到第一个中心的距离,使所有中心 这将被选择远离彼此。如果选择一个中心靠近其他中心,则分配给相应中心的点需要迭代多次以分离集群。但是,如果两个中心的距离足够远,它们属于一个簇的概率很小,并且很容易将簇分开。
【讨论】:
以上是关于K-means++算法的主要内容,如果未能解决你的问题,请参考以下文章