聚类就是按照某个特定标准(如距离准则)把一个数据集分割成不同的类或簇,使得同一个簇内的数据对象的相似性尽可能大,同时不在同一个簇中的数据对象的差异性也尽可能地大。即聚类后同一类的数据尽可能聚集到一起,不同数据尽量分离。聚类算法属于无监督学习,即事先不会给出标记信息,通过对无标记样本的学习来解释数据的内在性质及规律,为进一步的数据分析提供基础。
一、K-means(k均值)算法
k-means是划分方法中较经典的聚类算法之一。由于该算法的效率高,所以在对大规模数据进行聚类时被广泛应用。目前,许多算法均围绕着该算法进行扩展和改进。
k-means算法以k为参数,把n个样本分成k个簇,使簇内具有较高的相似度,而簇间的相似度较低。k-means算法的处理过程如下:首先,随机地 选择k个样本,每个样本初始地代表了一个簇的平均值或中心;对剩余的每个样本,根据其与各簇中心的距离,将它赋给最近的簇;然后重新计算每个簇的平均值。 这个过程不断重复,直到准则函数收敛。
算法步骤为:
1、选择初始的k个类别中心u1u2……uk
2、对于每个样本,将其标记为距离类别中心最近的类别,即:
3、将每个类别中心更新为隶属该类别的所有样本的均值
4、重复最后两步,直到类别中心的变化小于某阈值
伪代码如下: