MATLAB kMeans并不总是收敛于全局最小值

我在MATLAB中编写了一个 k-Means clustering算法,我想我会尝试使用内置kmeans(X,k)的MATLAB.

但是,对于非常简单的四簇设置(见图),MATLAB kMeans并不总是收敛到最佳解决方案(左),而是(右).

我写的那个并不总是这样做,但是内置函数不应该能够解决这么简单的问题,总能找到最佳解决方案吗?

正如 @Alexandre C.所解释的那样,K-means算法取决于初始的簇质心位置,并且不能保证它会收敛到最优解.

您可以做的最好的事情是使用随机起点重复实验几次.

MATLAB的实现提供了这样一个选项:复制重复N次聚类并选择具有最低总簇内点到质心距离的聚类.
您还可以使用start选项控制如何选择初始质心.

此外,MATLAB提供了多种距离测量(Euclidean,Manhattan,Cosine,……)的选择.一个简洁的选项emptyaction允许您控制在迭代期间集群丢失其所有已分配成员时发生的情况.

但真正的优势在于它采用了两阶段算法:通常的分配 – 重新计算迭代,然后是在线更新阶段.请务必阅读documentation page的算法部分以获取更多信息.

相关文章
相关标签/搜索