一、K-Means(k-平均或k-均值)
可以称的上是知名度最高的一种聚类算法
K-Means算法属于基于划分的聚类算法,对N 维欧⽒空间中的点进⾏聚类,是⼀种最简单的⽆监督学习⽅法。它通过迭代来实现,其基本思想是:每次确定K个类别中⼼,然后将各个结点归属到与之距离最近的中⼼点所在的Cluster,然后将类别中⼼更新为属于各Cluster的所有样本的均值,反复迭代,直⾄类别中⼼不再发⽣变化或变化⼩于某阈值。
算法步骤:
1、首先,我们确定要几个的聚类(cluster,也称簇),并为它们随机初始化一个各自的聚类质心点(cluster centroids),要确定聚类的数量,我们可以先快速看一看已有的数据点,并从中分辨出一些独特的数据。 2、其次,我们计算每个数据点到质心的距离来进行分类,跟那个类质心更近,就被分到那个聚类。
$$ lab_i=argmin_{1<=j<=k}|x_i-m_j| $$
其中,j表示第j类,$m_j$是质心数值。
$$ m_j=\frac{1}{C_j}\sum_{i\in C_j} x_i $$
需要注意的是,初始质心并不是真正的质心,质心应满足聚类里每个点到它的欧式距离平方和最小这个条件,并确定出新的质心。
3、最后,重复迭代上述步骤,直到质心的位置不再发生太大变化。
算法优缺点:
优点:
-
K-Means的优点是速度非常快,因为我们所做的只是计算数据点和质心点之间的距离,涉及到的计算量非常少!
-
解决聚类问题的⼀种经典算法,简单、快速
-
对处理⼤数据集,该算法保持可伸缩性和⾼效率
-
当簇近似为⾼斯分布时,它的效果较好
缺点:
-
一是必须决定数据集中包含多少个聚类。
-
二是一开始质心点的选取是随机的,算法可能会初始化出差异巨大的点。这个缺点导致的结果是质心点的位置不可重复且缺乏一致性。