K-Means 是一种基于距离的无监督聚类算法,其算法思想较为简单,如下所示:
目标:将数据聚成K个簇,并找到这K个簇的簇心
步骤:
- 1. 随机选择K个点作为初始簇心
- 2. 计算每个数据点到各个簇心的距离,将每个数据点归属到最近的那个簇
- 3. 重新计算簇心:为簇内所有点的均值
- 4. 重复2~3,直至簇心不再变化或达到最大迭代次数。
步骤2中的距离一般为欧式距离;
最关键的步骤在于步骤3,即如何计算簇心。使用误差平方和(Sum of the Squared Error,SSE)作为聚类的目标函数,来指导如何计算簇心,即找到K个簇心使得SSE最小;SSE的表达式如下:
其中,表示第k个簇,表示第k个簇的簇心。
要找到一组簇心