0%

机器学习算法(四):K均值(K-means)

TODO

K-均值(K-means)算法是无监督算法,也是聚类(clustering)算法。

算法步骤

  1. 随机初始化几个点作为簇的质心,初始化方式有多种,可以自行选择。已知两种:
  • 随机选择K个样本作为簇的质心。来源于吴恩达机器学习视频
  • min + (max - min) * (0到1之间的小数),其中最大值最小值均代表。来源于《机器学习实战》
  1. 计算某个样本到每个簇的质心之间的代价(距离),代价函数有多种可自行选择。比如:
  • 均方误差(mse) 选出其中最小的代价,并求出簇的索引,然后将该样本划分给该质心所属的簇。每个样本都执行这步直到样本遍历完毕。
  1. 经过步骤2,每个样本都归属于一个簇。然后遍历每一个簇,将簇中的数据求均值,将该均值作为簇的新质心。
  2. 重复以上步骤,直到发现每个样本都归属于某个簇,并且样本归属不会再发生变化。 简化如下:
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    随机初始化质心
    while true
    for 每个样本
    for 每个质心
    计算每个样本到质心的代价
    选出最小的代价
    将样本分配给这个簇

    for 每个质心
    求出该簇所属的样本的均值
    将该均值设置为簇的新质点

    if 样本归属不再发生变化
    break

举一个简单的例子

这里有一个简单例子