算法流程:
选取K个点作为初始类中心
将每个点指派到最近的类中心,形成k个簇
重新计算每个簇的类中心
直到簇不发生变化或达到最大迭代次数
时间复杂度:O(tkmn) --- t为迭代次数,k为簇的数目,m为样本数,n为维数
问题:
K如何确定:
1、与层次聚类的结合
首先采用层次聚类算法决定结果中簇大概的数目,并找到一个初始聚类,然后用迭代重定位来改进该聚类
2、结果稳定性
对数据集进行2次重采样产生2个数据子集,再用相同的聚类算法对2个子集进行聚类,产生2个具有k个聚类的聚类结果,计算2个聚类结果的相似度分布情况(如何计算聚类结果相似度),2个聚类结果具有高的相似度说明k个聚类反应了稳定的聚类结构,其相似度可以用来估计聚类个数。
可以采用次方法试探多个k,找到合适的k值
3、使用canopy算法进行初始划分
两个阶段
stage1:
聚类最好时的地方在于计算相似性的时候canopy在第一阶段选择简单、计算代价较低的方法计算相似性(什么方法)
将相似的
摘自