K-means经典算法:
- 从数据集中随机选择K个样本作为初始聚类中心C = {c 1 _1 1, c 2 _2 2, …, c k _k k}。
- 对于数据集中的每个样本x i _i i,计算其到每个聚类中心的距离,并将其分配给距离最小的聚类中心所对应的类中。
- 重新计算每个类的聚类中心,
- 重复2、3步直到聚类中心的位置不再变化
k值如何决定:
- 肘部法则(elbow method)
绘制代价函数和k值的关系图,选取拐点处的k值作为最佳的数目。但一般拐点是很少出现的 - 轮廓系数
计算每个样本点和同类的类间距离,取平均作为簇内不相似度a i _i i。到其他每个簇的平均距离,最近的作为簇间不相似度b i _i i。b i _i i越大,a i _i i则轮廓系数越大, 聚类效果越好。取值为-1到1。用所有样本的轮廓系数的均值进行评判
k-means++:
k-means++是改进了初始聚类中心的选取,首先随机选取一个样本作为聚类中心,之后其他的样本点距离已存在的中心的距离越远,被选为新的聚类中心的概率越大。
ISODATA迭代自组织数据分析法:
同样是k-means方法的改进,一般k值选取后整个过程中就不再变了,ISODATA对于样本过少的类别会出去,对于样本数过多、分散程度大的类别会分为两类
Kernel K-means:
核函数,所有样本映射到高维空间再进行聚类。