K-Means 聚类

预先选择聚集数量k。

  1. 初始化k个中心点
  2. 每一次迭代时:
    将每个数据点分配给与其“最近”的中心点
    对每一个中心点,更新其新的位置为所有属于其的节点的“平均位置"
  3. 重复1-2 直至收敛(一次迭代后,没有数据点被重新分配过)

仍旧是之前层次聚类时用到的例子数据:

得到2个聚集,聚集1为0,1,2三个数据点,聚集2为3,4,5三个数据,看下可视化结果,看看这个聚类是否有直觉上的意义。

红色点为聚集的中心位置

figure_1

用scikit learn的kmeans,对例子数据聚类:

结果是一致的。

如何选择k?

  • 尝试不同的k,看各个数据点到所属中心点的距离。
    如果k较少,则会有许多较大的距离
    如果k较大,则距离通常非常小

如何选择一开始的k个中心点?

  1. 抽样
    抽样一部分数据点,使用层次聚类,找出k的值
    从层次聚类的k个类中各取一个点作为中心点
  2. 先随机选一个点作为中心点
    再剩下点中,找到一个与已选点距离最远的点作为中心点
    反复上述过程直至获得k个点

Leave a Reply

Your email address will not be published. Required fields are marked *