我正在阅读一些关于均值移位聚类算法(http://en.wikipedia.org/wiki/Mean_shift),这是我到目前为止得到的。对于数据集中的每个点:选择与其一定距离内的所有点(包括原始点),计算所有这些点的平均值,重复直到这些平均值稳定。
我困惑的是如何从这里开始决定最终的簇是什么,以及在什么条件下这些意味着合并。另外,用于选择点的距离在迭代过程中是波动还是保持不变?
Thanks in advance
均值漂移聚类查找是一个简单的迭代过程,实际上保证收敛。迭代从起始点x开始,迭代步骤是(注意x可能有几个组件,因为算法也将在高维中工作):
-
计算x周围所有点x'的加权平均位置 -也许最简单的形式是计算距离xd内所有点位置的平均值,但高斯函数也是常用的并且在数学上是有益的。
-
<设置em> x & lt;—— x ' 设置em>
- 重复,直到x和x'之间的差非常小
这可以在聚类分析中使用,从x的不同值开始。最终值将在不同的集群中心结束。群集的数量是未知的(除了它是<=点的数量)。
上层算法为:
- 查看起始值的选择
- 对每个值计算收敛值,如上图 所示。
- 如果该值不在收敛值列表中,则将其添加到列表中(允许对数值不精确的合理容忍)
然后你有一个簇的列表。唯一困难的事情是找到一个合理的初始值选择。对于一维或二维很容易,但是对于更高维度的穷举搜索就不太可能了。
所有进入相同模式(收敛点)的起始点属于同一簇。
如果你在2D图像上这样做,它应该足以计算每个像素的梯度(即第一次迭代),这可能是有趣的。这是一种使用普通卷积技术的快速操作,然后相对容易将像素分组成簇。