● 每周一言

无法让明天不一样,可以避免和昨天一样。

导语

前面介绍了什么是聚类以及聚类的相似性度量方法,本节开始讲解最常用的聚类方法,划分聚类。那么,划分聚类的原理思想是什么?又有哪些常用的算法?

划分聚类

划分聚类顾名思义,基于划分的聚类方法,就是每一次基于某种算法规则将数据点划分到不同的类别当中。既然是划分,首先需要指定类别划分的数量,然后根据某种启发式算法迭代重置数据点所属的类别,最后达到“类内的数据点足够近,类间的数据点足够远”的效果。



试写出分裂聚类算法 划分式聚类_划分聚类



划分聚类的第一种算法,便是

k-means(k均值)算法。k-means算法的具体步骤如下:


1> 随机选择k个点作为初始的k个类别质心;


2> 将数据点逐一划分到与之度量距离最小的类别;


3> 将每个类别质心坐标更新成当前类别下所有数据点的坐标平均值;


4> 重复以上步骤2和3,直到类别质心不再发生变化或已满足迭代次数。

从上述算法流程中我们不难发现,k-means算法受到噪声和离群点的影响会非常大。因为质心坐标是根据度量距离的均值来更新的,一旦出现离群较远的点,质心的位置就会受到很大影响。



试写出分裂聚类算法 划分式聚类_机器学习_02



鉴于这个问题,

k-medoids(k中心点)算法

k-medians(k中值)算法应运而生,通过两种方式分别改进了k-means算法。

k-medoids算法在每次更新质心坐标的时候,通过枚举每个类别下的数据点,计算当前类别下其他数据点到该点距离之和,最小的那个点即为新的类别质心。即k-medoids算法的质心一定会是某一些数据点,而不是计算出来的均值。

而k-medians算法有别于k-medoids算法,每次质心坐标都会更新成同类别下所有数据点的中位数,直到每个类别的中位数不再改变。



试写出分裂聚类算法 划分式聚类_试写出分裂聚类算法_03



k-medoids和k-medians算法虽然都在一定程度上解决了噪声和离群点的问题,但是由于更新质点时不再是简单的取平均值,因此算法时间复杂度也随之增加。

此外,k-means算法如果遇到离散特征数据,那么就必须使用离散特征的相似性度量法来做距离度量。这个时候会有个新的名字叫k-modes算法,k-modes算法的距离度量法可以是交集个数、Jaccard相似系数等。