本系列意在长期连载分享,内容上可能也会有所删改;

因此如果转载,请务必保留源地址,非常感谢!

博客园:http://www.cnblogs.com/data-miner/(暂时公式显示有问题)

其他:建设中…

当我们在谈论kmeans:总结

概述

  通过前面阅读K-means相关论文,大致能梳理出K-means算法发展过程中的一些轨迹。由于本人所阅读的仅仅是一部分,因此还会有更多的方面,欢迎大家补充(补充时请给出具体例子)。

  1. K-means算法的提出
  2. 对K-means算法的性质进行分析的文章相继发出
  3. 对K-means算法思想进行扩展:
    • 有作者提出“Maximum Entropy”算法,并表示K-means为其一种特殊形式
    • 后又有作者提出“Mean Shift”算法,并表示“Maximum Entropy”也是其特殊形式
  4. 针对K-means缺陷,对K-means算法进行修改(一般仅适用于某场景):
    • 提出online的K-means
    • 提出针对非凸数据集的K-means
    • 提出应用在FPGA中的K-means
    • 提出自动对特征进行加权的K-means
    • Intelligent K-means算法使用异常检测的思想聚类
  5. 对K-means算法进行优化:
    • KD树加速的K-means
    • 利用SVD分解加速K-means
    • K-means++的初始化聚类中心算法
  6. 将K-means与新提出的思想融合:
    • 结合Ensembling与K-means

K-means存在的问题

K-means由于简单有效被大量的用于数据预处理、数据分析等。在K-means被实际应用的过程中,大家也逐渐发现它本身存在很多的问题。如:

  1. 计算量大
  2. 聚类数量K需要提前设定,并影响聚类效果
  3. 聚类中心需要人为初始化,并影响聚类效果
  4. 异常点的存在,会影响聚类效果
  5. 只能收敛到局部最优

其中每个问题都有作者分析,并尝试提出解决办法:

  1. 计算量大

    • KD树加速K-means
  2. 聚类数量K需要提前设定,并影响聚类效果
    • 各种估计K的方法
  3. 聚类中心需要人为初始化,并影响聚类效果
    • K-means++方法
    • 其他初始化聚类中心方法
  4. 异常点的存在,会影响聚类效果
    • 数据预处理
  5. 只能收敛到局部最优
    • 未知

以下我们对其中两点(“类别数量估计”,“初始化聚类中心”)进行更多的介绍

类别数量估计

估计类别数量,现在还没有很通用的方法。以下介绍常见的估计类别数量的一些方式

  1. 数据的先验知识,或者数据进行简单分析能得到

  2. 基于变化的算法:即定义一个函数,认为在正确的K时会产生极值。

  3. 基于结构的算法:即比较类内距离、类间距离以确定K。

  4. 基于一致性矩阵的算法:即认为在正确的K时,不同聚类的结果会更加相似,以此确定K。

  5. 基于层次聚类:即基于合并或分裂的思想,在一定情况下停止获得K。

  6. 基于采样的算法:即对样本采样,分别做聚类;根据这些结果的相似性确定K。

初始化聚类中心

接下来介绍几个看到的初始化聚类中心的方法。需要强调的是,在任何场景下都合适的方法是不存在的。理想情况应该是针对数据的特点,挑选或设计出适合的方法。

  1. K-means++已经被证明是一种简单、好用的方法
  2. 先计算整体样本中心,然后根据样本点到中心的距离,由近至远均匀采样作为初试聚类中心
  3. 初步将数据分成K个区域,将每个区域中心作为初始聚类中心
  4. 计算出每个点的”密度“,认为”密度“较大的是聚类中心。先把”密度“最大的挑出作为第一个聚类中心,从剩下的点中找出密度最大,且离所有已有聚类中心大于一定距离的点作为下一个聚类中心,直到选择了K个
  5. 计算整体均值,作为第一个聚类中心。从剩下的点中顺序寻找,当遇到离所有已有聚类中心大于一定距离的点,则作为下一个聚类中心,直到选择了K个

其他聚类算法总结

ING。。。

当我们在谈论kmeans(5)的更多相关文章

  1. 当我们在谈论kmeans(1)

    本稿为初稿,后续可能还会修改:如果转载,请务必保留源地址,非常感谢! 博客园:http://www.cnblogs.com/data-miner/ 简书:建设中... 知乎:建设中... 当我们在谈论 ...

  2. 当我们在谈论kmeans(2)

        本稿为初稿,后续可能还会修改:如果转载,请务必保留源地址,非常感谢! 博客园:http://www.cnblogs.com/data-miner/ 其他:建设中- 当我们在谈论kmeans(2 ...

  3. 当我们在谈论kmeans(3)

        本系列意在长期连载分享,内容上可能也会有所删改: 因此如果转载,请务必保留源地址,非常感谢! 博客园:http://www.cnblogs.com/data-miner/(暂时公式显示有问题) ...

  4. K-Means 聚类算法

    K-Means 概念定义: K-Means 是一种基于距离的排他的聚类划分方法. 上面的 K-Means 描述中包含了几个概念: 聚类(Clustering):K-Means 是一种聚类分析(Clus ...

  5. 用scikit-learn学习K-Means聚类

    在K-Means聚类算法原理中,我们对K-Means的原理做了总结,本文我们就来讨论用scikit-learn来学习K-Means聚类.重点讲述如何选择合适的k值. 1. K-Means类概述 在sc ...

  6. K-Means聚类算法原理

    K-Means算法是无监督的聚类算法,它实现起来比较简单,聚类效果也不错,因此应用很广泛.K-Means算法有大量的变体,本文就从最传统的K-Means算法讲起,在其基础上讲述K-Means的优化变体 ...

  7. [Erlang 0117] 当我们谈论Erlang Maps时,我们谈论什么 Part 2

    声明:本文讨论的Erlang Maps是基于17.0-rc2,时间2014-3-4.后续Maps可能会出现语法或函数API上的有所调整,特此说明. 前情提要: [Erlang 0116] 当我们谈论E ...

  8. [Erlang 0116] 当我们谈论Erlang Maps时,我们谈论什么 Part 1

         Erlang 增加 Maps数据类型并不是很突然,因为这个提议已经进行了2~3年之久,只不过Joe Armstrong老爷子最近一篇文章Big changes to Erlang掀起不小了风 ...

  9. kmeans算法并行化的mpi程序

    用c语言写了kmeans算法的串行程序,再用mpi来写并行版的,貌似参照着串行版来写并行版,效果不是很赏心悦目~ 并行化思路: 使用主从模式.由一个节点充当主节点负责数据的划分与分配,其他节点完成本地 ...

随机推荐

  1. PHP 13: 类

    原文:PHP 13: 类 Notice: This article is working on progress!本章将介绍PHP类.现在,基本上每种语言都支持面向对象,当然PHP也不列外.PHP在以 ...

  2. Eclipse 使用技巧合辑

    修改Eclipse默认JDK "window"(窗口)---"Preferences.."(首选项),然后在弹出的对话框中的左边:选"Java&quo ...

  3. 全新通用编程语言 Def 招募核心贡献者、文档作者、布道师 deflang.org

    先给出官网地址:deflang.org 一句话简介:可扩展编程语言 Def 的目标是将 C++ 的高效抽象和 Lisp 的强大表现力融为一体. 你可以通过阅读 入门教程 .源码 或 测试用例 来简要或 ...

  4. jsp连接MySQL数据库显示GIS地理数据乱码问题的解决(select AsText(the_geom))

    oh,fuck,经过我昨天下午到今天的努力,终于将这一问题成功解决了,哈哈哈 问题详细描述: 我通过jsp页面连接上MySQL数据库,取出存在表中的地理数据(类型是geometry,具体有POINT. ...

  5. javascript call和apply

    每个函数都包含两个非继承而来的方法:call和apply. 我们可以通过这两个方法来间接调用函数.可以这样: f.call(o); f.apply(o); //o对象间接调用了f函数 这与下面的功能相 ...

  6. iOS基础 - KVC and KVO

    一.KVC(key value coding) 我们一般是通过调用set方法或属性的点语法来直接更改对象的状态,即对象的属性值,比如[stu setAge:10];  stu.age = 9; KVC ...

  7. Spring注解:@Resource、@PreConstruct、@PreDestroy、@Component

    要使用Spring的注解,必须在XML文件中配置有属性,告诉人家你要使用注解,Spring容器才会去加载类上的注解: <?xml version="1.0" encoding ...

  8. MVC中用Jpaginate分页

    MVC中用Jpaginate分页 So easy!(兼容ie家族)   看过几款分页插件,觉得Jpaginate比较简约,样式也比较容易的定制,而且体验也比较好,支持鼠标滑动效果.先上效果图: 整个过 ...

  9. 【转】Objc的底层并发API

    本文由webfrogs译自objc.io,原文作者Daniel Eggert.转载请注明出处! 小引 本篇英文原文所发布的站点objc.io是一个专门为iOS和OS X开发者提供的深入讨论技术的平台, ...

  10. 2013集训.DAY1.A

    发现自己漏整理了一套,现在附上T1:primenumT2:sendroseT4:warfare除了第一题以外,其余的两题由于当时太弱什么都不会,所以用来学习....T2 SPFA T4 最大生成树