参考自:
简介
K-均值是最普及的聚类算法,算法接受一个未标记的数据集,然后将数据集聚类成不同的组。
K-均值是一个迭代算法,假设我们想要将数据聚类成n个组,其方法为:
- 首先选择K个随机的点,称其为聚类中心
- 对于数据集中的每一个数据,按照距离K个中心点的距离,将其与距离最近的中心点关联起来,与同一个中心点关联的所有点聚成一个类
- 计算每一个组的平均值,将该组所关联的中心点移动到平均值的位置
- 重复步骤2-3,直到中心点不再变化
这个过程中分两个主要步骤,第一个就是第二步,将训练集中的样本点根据其与聚类中心的距离,分配到距离最近的聚类中心处,接着第二个就是第三步,更新类中心,做法是计算每个类的所有样本的平均值,然后将这个平均值作为新的类中心值,接着继续这两个步骤,直到达到终止条件,一般是指达到设定好的迭代次数。
当然在这个过程中可能遇到有聚类中心是没有分配数据点给它的,通常的一个做法是删除这种聚类中心,或者是重新选择聚类中心,保证聚类中心数还是初始设定的K个。
优化目标
K-均值最小化问题,就是最小化所有的数据点与其所关联的聚类中心之间的距离之和,因此K-均值的代价函数(又称为畸变函数)为:
J(c(1),c(2),…,c(m),μ1,μ2,…,μm)=1m∑mi=1||x(i)−