问题
1. KMeans 执行流程是怎么样?
2. KMeans 都有哪些优缺点?
3. 对于KMeans算法不足之处,该怎么样解决?
1. KMeans 算法流程
损失函数:
a. 随机从样本数据中选择K个样本,作为初始的簇中心点
b. 分别计算各个样本到K个簇中心点的距离,并将样本划分到距离最近的簇中
c. 将簇内样本的均值作为新的簇中心
d. 循环 b 和 c 步骤,直到满足停止条件(前后两次簇中心位置变化是否在某一个阈值内)
2. KMeans的优缺点
优点
a. 原理简单,易于理解,聚类效果较好
b. 可解释性较好
缺点
a. 不好把握K值的选择
b. 对初始簇中心点敏感
c. 离群点对模型影响较大
d. 对大小差异过大的数据效果不好
3. KMeans 的优化
对于初始簇中心点敏感问题,可以使用 二分KMeans 来优化
二分KMeans 算法流程
a. 将所有样本数据作为一个簇,放进队列中
b. 从队列中选择 损失函数J(A)最大的一个簇 或 样本数据最多的一个簇 进行 K=2 的KMeans 划分,并将划分后的子簇放进队列
c. 循环迭代 b 步骤,直到队列中的簇的个数满足 K 个簇为止
对于初始簇中心点敏感问题,也可以使用 KMeans++ 来优化
参考资料:KMeans++算法思想
对于K值的选取,可以使用 手肘法
手肘法的思想:随着K值的增大,每个簇的聚合程度会逐渐提高,那么损失函数J(A)会逐渐变小。当K小于真实聚类数时,由于K的增大会大幅增加每个簇的聚合程度,故J(A)的下降幅度会很大,而当K到达真实聚类数时,再增加K所得到的聚合程度回报会迅速变小,所以J(A)的下降幅度会骤减,然后随着K值的继续增大而趋于平缓,也就是说J(A)和k的关系图是一个手肘的形状,而这个肘部对应的K值就是数据的真实聚类数。
参考资料:KMeans最优K值选取
网友评论