K-Means的三种迭代算法

K-Means是机器学习算法中一个比较经典的聚类算法

具体的实现方式主要有三种:Lloyd(Forgy)Hartigan-WongMacQueen

 

Lloyd算法

Lloyd算法也可以称作Forgy或者Lloyd-Forgy,是最为经典简单的K-means迭代算法,其步骤如下:

1. 随机选取K个点作为初始的中心点

2. 计算每个点与K个中心点的K个距离(假如有N个点,就有N*K个距离值)

3. 分配剩下的点到距离其最近的中心点的类中

4. 重复步骤2和步骤3

5. 直到达到收敛或者达到某个停止阈值(如最大计算时间)

用公式解释如下:

1. 把所有的点分配到K个类的系数r,属于第k个类的记为1,否则为0

《K-Means的三种迭代算法》

2. 由上可知第k个类中的样本数量

《K-Means的三种迭代算法》

3. 目标是最小化损失函数J

《K-Means的三种迭代算法》

4. 计算每个点到中心点的距离,分配r的系数

《K-Means的三种迭代算法》

5. 重新计算每个类的中心点

《K-Means的三种迭代算法》

重复4和5指导收敛或者达到某个阈值

Lloyd算法的缺点是,聚类产生的类别经常是不平衡的,就是说不同类中样本的数量差异很大。这点会经常被忽略到,然而很多时候需要我们聚类出来是平衡的,例如对手写数字图像进行聚类的时候,我们有理由相信10个数字出现的频率是一样的,所以希望聚类后每个类中含有样本数量是相同的。像上述的手写数字图像聚类这个例子中 ,为获得更高的分类准确率,则需要平衡的聚类结果。另外,Lloyd算法是一个批量更新算法,因此会学习速度会相对较快。

 

MacQueen算法

MacQueen是一种在线更新的算法,只需要一次迭代,具体步骤如下:

1. 选取头K个点作为K个类的中心点

2. 选取下一个点计算与K个中心点的距离,选取距离最小的分配到该类中

3. 更新该类的中心点

4. 重复2,3直到所有的点分配完毕,达到收敛

MacQueen相对于Lloyd而言,总体的训练时间需要更久。

 

Hartigan-Wong算法

为了改进上述算法的不平衡问题,我们可以考虑用Hartigan-Wong算法,它也是一种在线更新的算法,具体如下:

1. 随机分配所有的点到K个类上,计算K个类的中心

2. 随机选择一个点,把它移出所属类

3. 重新计算有变化的类的中心

4. 把移出的点重新分配到其距离最近的中心点的类上

5. 循环所有的点,重复2,3,4

6. 进行第二次循环,重复2,3,4,5

7. 直到达到收敛或者某个停止阈值

其主要的不同点是在分配到K个类别的过程中,公式如下:

《K-Means的三种迭代算法》

值得注意的是因为Hartigan-Wong算法多加了一个乘法项

《K-Means的三种迭代算法》

因此算法更倾向于把样本分配给样本数量较少的类。但是这个乘法项并不是为了平衡而设计的,而是在把移除的点加入合适的类中而发生的类大小变化。

Hartigan-Wong算法相对于Lloyd来说是一种在线更新的算法,一般来讲可以获得更低的代价函数值,但是同样地会更慢。Lloyd的批量更新算法速度更快,效率更高。

 

参考文献:

1. 周旺,张晨麟,吴建鑫 “一种基于Hartigan-Wong和Lloyd的定性平衡聚类算法”山东大学学报(工学版)  第46卷第5期

2.https://datascience.stackexchange.com/questions/9858/convergence-in-hartigan-wong-k-means-method-and-other-algorithms

    原文作者:常用算法
    原文地址: https://blog.csdn.net/joeland209/article/details/72147763
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞