美文网首页
K-Means 聚类算法

K-Means 聚类算法

作者: Zaker_cook | 来源:发表于2019-12-12 22:38 被阅读0次

    问题

        1. KMeans 执行流程是怎么样?

        2. KMeans 都有哪些优缺点?

        3. 对于KMeans算法不足之处,该怎么样解决?


    1. KMeans 算法流程

            损失函数: J(A) = \frac{1}{2} \sum_{i=1}^k\sum_{j=1}^n(x_j-a_i)^2,其中x_j是簇中样本,a_i是簇中心点

            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值选取

    相关文章

      网友评论

          本文标题:K-Means 聚类算法

          本文链接:https://www.haomeiwen.com/subject/mfutnctx.html