zoukankan      html  css  js  c++  java
  • K-means算法的原理、优缺点及改进(转)

    文章内容转载自:http://blog.csdn.net/sinat_35512245/article/details/55051306   

                                http://blog.csdn.net/baimafujinji/article/details/50570824

    ----------------------------------------------------------------------------------------------------------------------------------------------------

                                                                       K-means方法是一种非监督学习算法,它解决的是聚类问题

    1、算法简介:K-means方法是聚类中的经典算法,数据挖掘十大经典算法之一;算法接受参数k,然后将事先输入的n个数据对象划分为k个聚类以便使得所获得的聚类满足聚类中的对象相似度较高,而不同聚类中的对象相似度较小。

    2、算法思想:以空间中k个点为中心进行聚类,对最靠近他们的对象归类,通过迭代的方法,逐次更新各聚类中心的值,直到得到最好的聚类结果。

    3、算法描述:

    (1)适当选择c个类的初始中心; 
    (2)在第k次迭代中,对任意一个样本,求其到c个类的各中心的距离,将该样本归到距离最短的那个中心所在的类(也成为簇); 
    (3)利用均值等方法更新该类的中心值; 
    (4)对于所有的C个聚类中心,如果利用(2)(3)的迭代法更新后,值保持不变,则迭代结束;否则继续迭代。

    注:对于距离函数和中心类型的某些组合,算法总是收敛到一个解,即K均值到达一种状态,聚类结果和中心都不再改变。但为了避免过度迭代所导致的时间消耗,实践中,也常用一个较弱的条件替换掉“中心不再发生变化”这个条件。例如,使用“直到仅有1%的点改变簇”。

    4、算法举例:

           详细内容参看:http://blog.csdn.net/sinat_35512245/article/details/55051306

    5、优、缺点:

    优点:

    1、该算法时间复杂度为O(tkmn),(其中,t为迭代次数,k为簇的数目,m为记录数,n为维数)与样本数量线性相关,所以,对于处理大数据集合,该算法非常高效,且伸缩性较好;

    2、原理简单,实现容易。

    缺点:

    1、聚类中心的个数K 需要事先给定,但在实际中这个 K 值的选定是非常难以估计的,很多时候,事先并不知道给定的数据集应该分成多少个类别才最合适; 

    2、Kmeans需要人为地确定初始聚类中心,不同的初始聚类中心可能导致完全不同的聚类结果。(可以使用K-means++算法来解决);

    3、结果不一定是全局最优,只能保证局部最优;

    4、对噪声和离群点敏感;

    5、该方法不适于发现非凸面形状的簇或大小差别很大的簇;

    6、需样本存在均值(限定数据种类)。

     6、算法改进

      针对上述第2个缺陷,可以使用Kmeans++算法来解决。 k-means++算法选择初始seeds的基本思想就是:初始的聚类中心之间的相互距离要尽可能的远。wiki上对该算法的描述是如下:

    1. 从输入的数据点集合中随机选择一个点作为第一个聚类中心;
    2. 对于数据集中的每一个点x,计算它与最近聚类中心(指已选择的聚类中心)的距离D(x);
    3. 选择一个新的数据点作为新的聚类中心,选择的原则是:D(x)较大的点,被选取作为聚类中心的概率较大;
    4. 重复2和3直到k个聚类中心被选出来;
    5. 利用这k个初始的聚类中心来运行标准的k-means算法。
  • 相关阅读:
    项目中遇到的css问题(随手笔记)
    vue项目启动时突然出现漏洞错误(!未解决)
    vue项目本地启动,ip出现500错误
    vue项目安装vconsole的时候出现的bug
    在码云上创建项目
    npm 遇到的坑
    脚手架方式搭建vue项目
    从码云上下载react项目并配置成可运行状态
    ibatis-dynamic的用法
    struts2中s:select标签的使用
  • 原文地址:https://www.cnblogs.com/hezhiyao/p/7390871.html
Copyright © 2011-2022 走看看