vlambda博客
学习文章列表

人工智能算法之聚类算法

聚类算法

 


聚类,就像回归一样,有时候人们描述的是一类问题,有时候描述的是一类算法。聚类算法通常按照中心点或者分层的方式对输入数据进行归并。所以的聚类算法都试图找到数据的内在结构,以便按照最大的共同点将数据进行归类。常见的聚类算法包括 k-Means算法以及期望最大化算法(Expectation Maximization, EM)。

下面我们来简单刨析一下

K-均值聚类(k-means)

1. 选择 K 个初始质心,初始质心随机选择即可,每一个质心为一个类
2. 把每个观测指派到离它最近的质心,与质心形成新的类
3. 重新计算每个类的质心,所谓质心就是一个类中的所有观测的平均向量(这里称为向量,是因为每一个观测都包含很多变量,所以我们把一个观测视为一个多维向量,维数由变量数决定)。
4. 重复2. 和 3.
5. 直到质心不在发生变化时或者到达最大迭代次数时

2.1.2例子

有一个二维空间的一些点,我们要将它们分成3个类,即K=3。

我们首先随机选择3个初始质心,每一个质心为一类:

人工智能算法之聚类算法

然后我们计算每一个不是质心的点到这三个质心的距离:

人工智能算法之聚类算法

将这些点归类于距离最近的那个质心的一类:

人工智能算法之聚类算法

重新计算这三个分类的质心:

人工智能算法之聚类算法

不断重复上述两步,更新三个类:

当稳定以后,迭代停止,这时候的三个类就是我们得到的最后的三个:

内容来源于网络