k-means:
输入:数据集、聚类个数k,聚类中心初值
输出:聚好类的数据集
功能:将数据集根据聚类个数进行聚类,使得样本到聚类中心的距离平方最小。其实并没有全局最小化,而是一个局部最小化算法。
伪代码:
1. 获得聚类个数k及聚类中心c_1,c_2...c_k.
2. 重复步骤3和4直到算法收敛或者到指定的迭代次数。
3. 对于每一个数据点d_i:
4. 计算d_i到每一个中心点(c_1, c_2 .. c_k)的距离,并从中找到距离最近的中心点c_nearest。
5. 将数据点d_i的类别赋予为c_nearest。
6. 根据属于相同类别的数据集重新计算中心点,更新(c_1, c_2 .. c_k)
7. 完成
参考资料:
应用:
1、视觉特征定位中,构建词袋模型(FAB-MAP: Probabilistic Localization and Mapping in the Space of Appearance)
可以改进的点:
1、K如何确定
2、如何避免局部最优。
3、k-means是“硬分类”,每个数据只属于一个类别,如何实现软分类,或者获得每个数据属于特定类别的概率。
4、当聚类分布的协方差矩阵已知时,欧氏距离可以扩展为马氏距离。