我一直试图理解主要stats
在R
语言包中实现的不同的k均值聚类算法。
我了解劳埃德(Lloyd)算法和麦昆(MacQueen)的在线算法。我对它们的理解如下:
劳埃德算法:
最初选择“ k”个随机观测值作为“ k”簇的质心。然后,以下步骤迭代进行,直到质心收敛。
- 计算每个观测值与所选质心之间的欧几里得距离。
- 最接近每个质心的观测值标记在“ k”桶中。
- 每个存储桶中所有观测值的平均值用作新的质心。
- 新的质心取代了旧的质心,如果旧的和新的质心尚未收敛,则迭代返回到步骤1。
收敛的条件如下:旧质心和新质心完全相同,质心之间的差异很小(约为10 ^ -3)或达到最大迭代次数(10或100)。
麦昆的算法:
这是一个在线版本,其中第一个“ k”实例被选为质心。
然后,根据哪个质心最接近该实例,将每个实例放置在存储桶中。重新计算各个质心。
重复此步骤,直到将每个实例放置在适当的存储桶中。
此算法只有一次迭代,并且循环针对“ x”个实例进行
Hartigan-Wong算法:
- 将所有点/实例分配给随机存储桶并计算相应的质心。
- 从第一个实例开始,找到最近的质心并装配该铲斗。如果存储桶已更改,则重新计算新质心,即新分配的存储区的质心和旧存储区分配的质心,因为这是受更改影响的两个质心
- 遍历所有点并获得新的质心。
- 对点2和3进行第二次迭代,这将执行某种清理操作并将杂散点重新分配给正确的存储桶。
因此,该算法执行2次迭代,然后才能看到收敛结果。
现在,我不确定在Hartigan-Wong算法的第4点中我认为的方法是否正确。我的问题是,Hartigan-Wong的以下方法是否是实现k-means的正确方法?此方法只有两次迭代吗?如果不是,收敛的条件是什么(何时停止)?
我了解的另一个可能的实现说明是。
- 将所有点/实例分配给随机存储桶并计算相应的质心。
- 从第一个实例开始,找到最近的质心并分配该存储桶。如果存储桶已更改,则重新计算新质心,即新分配的存储区的质心和旧存储区分配的质心,因为这是受更改影响的两个质心。
- 一旦存储桶中的任何点发生更改,请回到第一实例并再次重复这些步骤。
- 当所有实例都被迭代且所有点均未更改存储桶时,迭代结束。
这样,每次实例更改存储桶时,都会从数据集的开头一次又一次地进行很多迭代。
任何说明都将有所帮助,如果我对这些方法中的任何一种理解有误,请告诉我。