【Astronomy and Astrophysics】上2014年的一篇文章,题目是:
A fast version of the k-means classification algorithm for astronomical applications
K-means分类算法的快速版本在天文上的应用
文章称改进的为 single-pass K-means。
传统 K-means 步骤是:
- 初始化簇心
- 根据离簇心的距离,给每一个样本分类
- 根据分类重新计算簇心
- 重复2、3,知道样本类别不发生改变时终止
快速的 single-pass K-means 思想是不在所有样本都分类完后才计算簇心,给一个样本重新分类后随即计算出新的簇心。步骤是:
- 初始化簇心
- 根据簇心计算样本分类
- 根据样本分类重新计算簇心
- 遍历所有样本,对每一个样本重新分类,分类后随即更新中心点位置
- 重复4,直到样本类别不改变为止
算法关键步骤是在给一个样本分完类后随即更新中心点。这里并不需要重新计算所有同类样本的和然后求平均来计算中心点位置,而是用了一个简单的方法:
μ 是中心点位置,xi是一个样本,此样本原来是k类,然后被分到m类,N 是k或m类的样本个数。
文章实验显示 快速K-means比其他两种方法要快。
代码实现: