K-means算法整体的思想比较简单。
给定一个数据集,有特征,无标签,可以用K-means算法对数据集分k类。
算法首先随机初始化k个中心点,然后重复更新中心点的位置直到收敛;
中心点位置的更新过程是:首先找到与每个点距离最近的中心点,构成每个中心点划分的k个点集,然后对于每个点集,计算点的均值代替中心点。
算法复杂度为 O(ckn) ,c为收敛常数。
Choose the value of k
首先的问题就是如何选取k值,即给定的特征数据集能划分为几类如何判断。除了实际经验判断外,还可以使用“肘部法则”来判断。
对任意的k,K-means算法的代价函数为:
J(c(1),...,c(m),