【机器学习】k均值聚类算法
聚类问题不存在标签,是非监督学习问题。算法如下:
通俗来说,先随机生成个聚类中心,然后a.固定聚类中心,把训练集的每个元素分配给离得最近的聚类中心;b.固定簇,把聚类中心移动到分配给他的的均值位置。反复以上a,b步骤,直到算法收敛。整个过程可以借助下图进行理解:
下面讨论关于k均值算法是否能够收敛的问题。定义distortion function如下:
根据上述对算法的解释不难看出,k均值算法实际上是在上进行坐标下降,J的值一直在单纯地减小,因此算法是可以收敛的。理论上簇和聚类中心可能会在相同的J下发生微小的振荡,但实际上并未发生。
上面的distortion function是非凸函数,所以坐标下降并不能保证能达到全剧最小。因此,k均值算法有易受局部最优影响的缺点。为了避免这种情况,可以随机设定不同的初值,多运行几次程序,在其中选择最好的一种聚类结果。