本文重点
聚类算法k-means的第一步的是初始化k个聚簇中心,那么现在的问题是如何初始化不同的聚簇中心
具体做法如下:
1. 我们应该选择 K<m,即聚类中心点的个数要小于所有训练集实例的数量
2. 随机选择 K 个训练实例,然后这 K 个训练实例就是这K个聚类中心
k-means的意义
K-均值的一个问题在于,因为随机聚类中心的不同,我们在最小化代价函数J的时候,它有可能会停留在一个局部最小值处,而这取决于初始化的情况。随机初始化聚类中心的不同,我们最终得到的簇也有可能不一样,有时候聚类的效果特别好,但有些时候聚类效果不是很好。
局部最小值
全局最小值
解决局部最优问题
如果我们担心K均值算法可能遇到的局部最优问题,如果你想要让我们们k均值算法找到最好的聚类效果,我们能做的就是:
我们通常需要多次运行 K-均值算法,每一次都重新进行随机初始化,最后再比较多次运行 K-均值的结果,选择代价函数最小的结果。这种方法在 k 较小的时候(k<10)还是可行的,但是如果 k 较大,这么做也可能不会有明显地改善。 最终保证我们得到一个最优的结果,一个尽可能局部或者全局最优的结果。