一、K-means概述
K-means方法是非监督学习(Unsupervised learning)中的一种,非监督学习仍然需要数据,但是这些数据无需标签。
K-means是一种常见的聚类算法,所谓聚类,即把相似的物体聚集在一起,用于发现数据的规律或模式。聚类可以用于用户分群、图像分割等方面。K-means中的K代表将数据集分为K个类。
二、K-means算法
K-means的中心思想与监督学习中的kNN(可用于分类、回归)十分类似,都是计算数据点之间的“相似度”,这种相似度通常用距离来描述。一个数据点与之间的距离越近,则两个数据点越相似,于是这两个数据点可以视为一类。当然,由于事先并不知道数据集中的哪个点作为中心点合适,所以实际过程中,需要先随机选择一个点作为初始中心点,再计算数据集中的点与该初始中心点的距离。
K-means算法是一种循环迭代式的算法,具体包含以下步骤:初始化:随机选择K个点,作为初始中心点,每个点代表一个“类”。
计算每个点到所有中心点的距离,把最近的距离记录下来,并赋予距离最近中心的类。
针对每一个类里所有的点,计算它们的平均并作为这个类新的中心点。
第2步与第3步交替进行,直至聚类中心点不再发生明显变化。
将上述步骤表示为伪代码(引自博客1):K-means算法过程的伪代码
用一组示意图来表示K-means算法的实现过程:K-means算法的实现过程
K-means算法中,假设数据集有N个点,则每一次迭代的复杂度为o(KN)+o(N),前者