通过迭代方式寻找 K 个簇的一种划分方案,使得聚类结果对应的代价函数最小。
1、缺点
- 需要人工预先确定初始 K 值,且该值和真实的数据未必吻合。
- K 均值只能收敛到局部最优,效果受到初始值很大
- 易受到噪声点的影响
- 样本点只能被划分到单一的类中。
2、算法调优
- 数据归一化和离群点处理
- 合理选择 K 值
K 值选择方法:
- 手肘法:是一个经验方法,缺点就是不能够自动化。
- Gap Statistic 方法:只需要找到最大的 Gap Statistic 所对应的 K 即可。Gap(K)可以视为随机样本的损失和实际样本的损失之差。
- 采用核函数:通过一个非线性映射,将输入空间中的数据点映射到高位的特征空间中,并在新的特征空间进行聚类。非线性映射增加了数据点线性可分的概率,从而在经典聚类算法失效的情况下,通过引入核函数可以达到更为准确的聚类结果。
3、算法改进
- K-means++
- ISODATA
K-means++
已经选取了 n(0<n<k) 个初始聚类中心,距离当前 n 个聚类中心越远的点会有更高的概率被选为第 n+1 个聚类中心。在选取第一个聚类中心(n=1)时同样通过随机的方法。
ISODATA
当 K 值的大小不确定时,可以使用 ISODATA 算法。
ISODATA 的全称是迭代自组织数据分析法。当属于某个类别的样本数过少,把该类别去除;当属于某个类别的样本数过多、分散度较大时,把该类分为两个子类别。在 K-means 基础上增加两个操作,一是分裂操作,对应着增加聚类中心数;二是合并操作,对应着减少聚类中心数。
超参数设定:
- 预期的聚类中心数目 K 。具体地,最终输出的聚类中心数目常见范围是 K 的一半或两倍 K。
- 每个类别要求的最少样本数目 N。如果分裂后会导致某个子类别所包含样本数目小于该阈值,就不会对该类别进行分裂操作
- 最大方差 Sigma。用于控制某个类别中样本的分散程度。当样本分散程度超过这个阈值,且分裂后满足上条规则,进行分裂操作。
- 两个聚类中心之间所允许最小距离 D。如果两个类靠的非常近,小于该阈值时,则对这两个类进行合并操作。
网友评论