确定k个划分达到平方误差最小。适用于发现凸面形状的簇,簇与簇之间区别较明显,且簇大小相近。
【优点】
算法快速,简单;对大数据集有较高的效率并且可伸缩;时间复杂度为O(n*k*t), 其中t是迭代次数,接近于线性,并且适合挖掘大规模数据集。
【缺点】
k值的选定难以估计,初始类聚类中心点的选取对聚类结果有较大的影响。经常以局部最优结束,对噪声和孤立点敏感。
【算法过程】
输入:k,data
1) 选取k个点作为质心;
2) 计算剩余的点到质心的距离并将点归到最近的质心所在的类;
3) 重新计算各类的质心;
4) 重复进行2~3步直至新质心与原质心的距离小于指定阈值或达到迭代上限
【优化目标】
聚类的基本假设:对于每一个簇,可以选出一个中心点,使得该簇中的所有的点到该中心点的距离小于到其他簇的中心的距离。虽然实际情况中得到的数据并不能保证总是满足这样的约束,但这通常已经是我们所能达到的最好的结果,而那些误差通常是固有存在的或者问题本身的不可分性造成的。
基于以上假设,N个数据点需要分为K个簇时,k-means要优化的目标函数:
其中,在数据点n被归类到簇k的时候为1,否则为0。
为第k个簇的中心。
直接寻找和