什么是聚类?[What is clustering?]
它是一种无监督学习方法,用于对未标记的数据进行分类。聚类的目标是将数据集中的对象分成多个组(簇),使得同一个簇内的对象彼此相似,而不同簇的对象彼此相异。
聚类的分类:
(1):K-means算法
(2):层次聚类
(3):DBSCAN(Density-Based Spatial Clustering of Applications with Noise)
(4):高斯混合模型(Gaussian Mixture Models, GMM)
K-means算法
Step 1: 初始化质心
选择k个初始质心:首先,需要确定簇的数量k,从数据集中随机选取k个点作为初始的簇质心(cluster centroids)。
Step 2: 分配数据点
计算距离:对于数据集中的每一个数据点,计算它与所有k个质心之间的距离。
分配簇:将每个数据点分配给距离最近的那个质心所在的簇。
Step 3: 移动簇质心
重新计算质心:在每个簇内,计算所有数据点的平均值,以此作为新的质心位置。
Step 4: 迭代优化
重复Step 2和Step 3:不断重复分配数据点和更新质心的过程,直到质心的位置不再发生显著变化,达到收敛。
如果没有点分配给簇,则取消该簇。
如何进行随机猜测?
簇质心的数量k<m(数据点)
使用不同的随机簇质心,会得到不同的结果,所以多次随机(50-1000次),如果次数过少容易陷入局部最小值。
肘部法则Elbow Method
对于k的选择有方法Elbow method肘部法则
- 步骤:
- 选择一系列 k 值。
- 对每个 k 值,运行K-means算法并记录成本函数值(惯性)。
- 绘制成本函数图,观察“肘部”点。
- 选择成本函数值下降速度显著减缓的点作为最佳的 k 值。
以上图为例,k在大于等于4的时候成本函数的变化趋势变缓,由此可得最佳k值为4。总的来说就是选择弯度最大的点(肘部点)。
轮廓系数Silhouette Coefficient
除了肘部法则,关于k的选择还有轮廓系数。它的范围在 [−1,1]之间。轮廓系数越高,表示聚类效果越好。
它的计算公式为:
其中 a(i)是样本 ii与其同簇内其他样本的平均距离,b(i)是样本 ii与最近的其他簇中所有样本的平均距离。
步骤:
- 选择一系列 k 值。
- 对每个 k值,运行 K-means 算法并计算所有样本的轮廓系数。
- 选择轮廓系数最高的 k 值作为最佳簇数。
如上图所示,最佳k值为4.
Cost function
其中:
- Ci表示第 i个簇中的所有数据点。
- ∥xj−ci∥2表示数据点 xj 与质心 ci之间的欧氏距离的平方。
欧式距离:Euclidean Distance
欧式距离运用于二维,三维或者高维空间,在K-means里它用于计算数据