聚类算法分析——Kmeans算法

Kmeans算法的基本思想是初始随机给定K个簇中心,按照最邻近原则把待分类样本点分到各个簇。然后通过计算各个簇中数据点的平均值,更新簇中心,迭代至满足收敛条件。
Kmeans的目标函数:(这里以欧式距离作为衡量近邻标准进行分析)

《聚类算法分析——Kmeans算法》
其中,N是数据数目,C是划分簇的数目,rc 是一个0 1变量,当数据点xn被归类到c簇时为1,否则为0。
Kmeans 算法就是最小化这个目标函数,可采取迭代的方法:先固定uc,选择最优的簇,即将数据归类到离它最近的中心;下一步固定簇,选取最优的uc。这里可通过M对uc求导求得最优值,如步骤(2)公式所示,也就是对应簇中数据的平均值。
kmeans算法可分为两步骤进行:
(1) 根据C个簇的uc将每个数据点归类到离它最近的簇;

《聚类算法分析——Kmeans算法》

(2) 计算每个簇新的中心点。
《聚类算法分析——Kmeans算法》
不断迭代这两个步骤,直至每个簇的中心不再变化或者变化很小。

*备注:*uc的初始化问题。Matlab默认的是随机从样本中抽取C个数据点,并另外提供了三种方法,包括均匀抽取;抽取10%的子样本先使用聚类进行uc估计;构建C*P矩阵(P指样本数据的维度)。

(最近在研究图像分割,今天把Kmeans翻出来,实现的效果不是很好,基于像素值考虑的东西可能不全面,还在继续探索)

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