概述
随机选择K个聚类中心,在每一次迭代中,先为每个点确定其最近的聚类中心,这一步称为集群分配(cluster assignment),然后计算每个类中所有点的中心点,将该类的聚类中心移动到中心点,这一步称为中心移动(move centroid),得到这k个聚类中心的新位置,进行下一次迭代,直到每个聚类中心点正确分布在每个类的中心。
算法的输入有两个参数:聚类中心的数量K和一系列训练集X={x1,x2,…,xm},聚类过程如图所示:
伪代码如下:
K近邻聚类与K近邻分类
- KNN聚类是非监督学习,KNN分类是监督学习
- KNN聚类是迭代的过程,KNN分类不需要迭代
关于随机初始化
一个推荐的随机初始化的方法:
对于K比较小(2到10),进行多次随机初始化可能会很有用,但是对于K很大(如100),也许一次K聚类就能达到较好的效果。
关于选择聚类个数K
- 根据肘部法则(elbow method),将K/distortion函数画出来,图像会看上去像人的胳膊肘,选择肘部的地方所表示的K值会是很好的选择。
- 根据业务需要,这是很多情况下的方法,在运行KNN聚类之前心里就有了想要分成多少类的需求。