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

当我们在谈论kmeans(1)

引言

  当希望快速了解或回顾某些算法的发展时,一般而言,大家都会选择阅读综述性文章,然后有选择性的阅读部分论文。而这种高效率的做法的负面,就是比较无趣的体验,毕竟一直都行走在别人规划好的思路中,总感觉少了点趣味性。
  此系列文章一方面旨在回顾一些算法的历史演变轨迹;同时,看看能否挖掘出更多有趣或有意义的信息,让算法之路走的欢脱一点。
  作为练手,本次先从k-means这个最基本的机器学习算法之一开始。

数据准备

  从IEEE上抓取“标题或摘要中含有kmeans或相关关键词的论文”的部分公开信息,对于现在已有的信息,我关注的主要是title、authors、keywords、abstract、publicationYear、isConference(是否是会议文章)。抓取到数据后,将数据存入mongodb,后续使用python+jupyter来分析。
  受限于抓取难度,以及本人初步的爬虫水平,并没有抓reference,这对接下来的数据挖掘是一个遗憾。若有同学比较擅长爬虫,欢迎私信或留言交流!(IEEE的网站说明里声明禁止爬虫,因此政治正确上最好是不要去爬的,此处也不讨论具体的技术细节)

数据总览

论文数量

  1969-2016年,每年IEEE收录关于kmeans的论文数量如下图。其中蓝色表示当年总文章数量,绿色表示当年期刊论文数量,红色表示当年会议文章数量。
  从图中可以得出以下几点结论:
  1.1990年以前,kmeans相关文章很少,多的时候每年出版的总文章数量是1,少的时候则没有任何相关文章出版;90年代作为明显的过渡期,其之前与之后论文数量与趋势的变化是翻天覆地的;
  2.会议文章占了总文章数量的绝大多数:在抓取的6000多篇文章中,会议文章总5476篇,而期刊数量540篇,只有会议文章的1/10;而每年的会议文章跟期刊文章的比值也差不多这个数;
  3.kmeans相关会议文章数量在2005-2010和2013-2015几年间出现了爆炸性的增长;却在2010-2011以及2015-2016出现了大幅下跌;
  4.kmeans期刊文章数量在1990-2012年增长较为平稳,而在2012-2016年出现了连续4年的高速增长。

论文数量的变化趋势-原因分析瞎猜

  以上这些结果有的很好理解,有的却让人费解。以下给出部分结论原因的推测:
  1.在1990年前,由于技术的限制(没有PC来提高写作效率,没有互联网来加快学术交流,文章审核等流程也会比较缓慢),每年kmeans论文数量比较少是比较正常的。
  2.而在1990s,PC的普及直接缩短了论文创作的周期,极大提高了文章数量。由于期刊文章有质量上的硬性要求,因此虽然也有增加但是还不是很明显;相对的,会议文章作为交流的工具,明显的反映出了论文创作数量上的变化。而关于1990sPC的普及,这里引用wiki的1990s词条中一段话作为补充说明:

The 1990s were a revolutionary decade for digital technology. Between 1990 and 1997, individual personal computer ownership in the US rose from 15 to 35%….Only a few million people used online services in 1990, and the World Wide Web had only just been invented. The first web browser went online in 1993 and by 2001, more than 50% of some Western countries had Internet access, and more than 25% had cell phone access.

  3.在接下来的2000s,世界迎来另一个史诗级技术的普及——互联网。这次不仅是加速了文章创作的过程,而是极大地降低了沟通成本,使会议文章数量喷涌式的上涨。再次引用wiki的2000s in science and technology词条中的句子作为补充说明:

There was a huge jump in broadband internet usage globally - for example, it comprised only 6% of U.S. internet users in June 2000 and one mid-decade study predicted 62% adoption by 2010. Yet, by February 2007, over 80% of US Internet users were connected via broadband and broadband internet became almost a required standard for quality internet browsing. There were 77.4 million broadband subscribers in the US in December 2008, with 264 million broadband subscribers alone in the top 30 countries at that time.

  4.以上是客观技术的影响,而随着算法本身的普及,相关文章数量上肯定也会有所增加。比如从1970-1990,就能看到文章数量是有所增加的。同时,随着机器学习在1990s跟2000s开始大放异彩,从1990s年被用于数据挖掘到2000s开始用在各种自适应算法中,而kmeans作为一种常见的分析、预处理手段,被更高频的引用也是理所当然的。这里能够看到简单的机器学习历史的简要介绍。
  5.以上主要分析都是针对会议文章的。通过观察1970-2010年的kmeans相关会议文章向期刊文章的转化情况,可以发现IEEE基本不会让期刊文章有爆发式增长,审查还是比较严格的。但是在2012-2016年出现了期刊文章连续4年快速增长的情况。初期我推测是否是因为增加了额外的期刊导致论文数量的增加,如新增的China Communications Magazine Co. Ltd. IEEE Magazine。于是将1970年以来,主要期刊的论文数量变化趋势绘制出来(为了容易观看,数量太少的就不画出来了),如下图。可以看到,2012-2016年kmeans期刊文章连续增长的原因是Transaction和Journal中文章数量的增加。那么到底是碰巧这几年用到kmeans算法的文章水平都比较高,还是期刊要求在降低,或是别的原因,就不得而知了。
  6.除了以上这个未解之谜,还有为什么2010-2011以及2015-2016这几年会议文章的数量会大幅下降没有解决。理论上,会议文章能反映出该年的热点问题,所以初步猜测是碰巧那几年kmeans被关注的比较少,所以出现的偶然现象。

作者

  一般论文作者不会只有一个,理论上会把对该文章有较重要贡献的人写上去;当然实际科研环境中也有很多别的规则,我们试试能不能从数据中看出来点什么。

  这里把每个作者看作节点,两个节点间的连通性取决于是否合作创作过一篇文章,边的权重表示合作过多少次。于是,图里每个节点的度就是与他合作者的数量。节点度的数值与该值对应的频数的直方图如下。可以看出大部分作者在这些论文里的合作者在5个以内。

  这里给出合作者数量最多的三个人:

Rank Author Degree
1 Licheng Jiao 30
2 Jun Zhang 26
3 Wei Wang 24

  这几位也都是国内不同领域知名的专家了。但是看具体数据,如,Jiao 老师参与的kmeans相关论文共9篇,相关作者高达30个。通过查看具体数据,其中Jiao老师为一作的1篇,大部分都是最后一个作者,且相关文章的作者一般都是4~6人。对于Zhang老师跟Wang老师,基本也都是同样的情况。同时也能发现,这些老师也都是国内实验室的。

  这其实也是国内科研界的缩影:国内科研人员在发表文章时,时常会将实验室同僚、还有大老板等相关人员带上,意在互相帮助。这也就说明了为什么这些大佬们的共同作者这么多,远超平均值。

  除此之外别的有关作者的分析,总觉得数据量不足,难以证明结论,所以就不贴上来了。

关键词

  每篇文章作者都会列出来几个关键词,接下来统计1969-2016年关键词出现的频数。以下给出总数量最多的5个关键词,这几个关键词能表明kmeans主要有哪些作用或跟那些领域相关。

Rank Key Word Num
1 Clustering algorithms 3358
2 Algorithm design and analysis 1070
3 Data mining 834
4 Image segmentation 785
5 Feature extraction 760

  以下对这几个关键词简要说明:
  Clustering algorithms:这个是kmeans算法的本质作用,所以次数毫无疑问是最多的

  Algorithm design and analysis:有此关键字的文章,大多都属于对kmeans算法的分析、改进,或者提出新的算法并将kmeans作为其中一步,如

  • Robust fuzzy clustering algorithms
  • K-tree: a height balanced tree structured vector quantizer
  • A modified version of the K-means algorithm with a distance based on cluster symmetry

  Data mining:有此关键字的文章,更倾向于利用kmeans进行数据的预处理或者聚类,目的则是分析实际问题,如

  • Experimental evaluation of structural features for a speaker-independent voice recognition system
  • The application of agglomerative clustering in image classification systems
  • Learning to extract temporal signal patterns from temporal signal sequence

  Image segmentation:有此关键字的文章,则是利用kmeans进行图像分割,如

  • Image coding based on segmentation using region growing
  • Analysis of texture images using robust fractal description

  Feature extraction:有此关键字的文章,则是利用kmeans提取特征,如

  • Feature Extraction on Binary Patterns
  • A World Wide Web region-based image search engine

  我们可以将这几个关键词每年出现的次数画出来,如下图。

  从中可以看出:
  1.通过Algorithm design and analysis关键词的增长趋势能分析出,对kmeans算法的改进或者引用数量,一直在增加;
  2.通过Image segmentation和Feature extraction这两个关键词的高频,能看出kmeans大量被用在了图像分割与提取各种特征上;
  3.其中data mining的变化趋势比较诡异,在2009年达到峰值,后又快速下降;我分析了这些论文的标题、摘要等,也并没有看出内在原因是什么;同时也排除是因为data mining在2009年的火爆,导致论文数量的增多,因为从Google trends中能看到data mining作为一个成熟学科,热度一直在下降,并基本稳定,如下图;初步猜测可能是2008或2009年有某个改进的kmeans算法被提出来,导致被大量的借鉴;不过由于缺少reference信息,难以定量分析。

每年的关键词

  除了分析关键词的总体情况,我们还能够从每一年热门关键词的变化中看出kmeans使用领域的改变。由于1995年以前文章数量较少,以下给出1995以后每年热门关键词top3。

Rank 1995 1996 1997 1998
1 Clustering algorithms Clustering algorithms Clustering algorithms Clustering algorithms
2 Image segmentation Neural networks Image segmentation Vector quantization
3 Neural networks Partitioning algorithms Partitioning algorithms Neural networks
Rank 1999 2000 2001 2002
1 Clustering algorithms Clustering algorithms Clustering algorithms Clustering algorithms
2 Image segmentation Neural networks Data mining Data mining
3 Neural networks Partitioning algorithms Image segmentation Image segmentation
Rank 2003 2004 2005 2006
1 Clustering algorithms Clustering algorithms Clustering algorithms Clustering algorithms
2 Computer science Image segmentation Data mining Data mining
3 Data mining Data mining Clustering methods Partitioning algorithms
Rank 2007 2008 2009 2010
1 Clustering algorithms Clustering algorithms Clustering algorithms Clustering algorithms
2 Partitioning algorithms Data mining Data mining Algorithm design and analysis
3 Data mining Partitioning algorithms Partitioning algorithms Data mining
Rank 2011 2012 2013 2014
1 Clustering algorithms Clustering algorithms Clustering algorithms Clustering algorithms
2 Algorithm design and analysis Algorithm design and analysis Algorithm design and analysis Algorithm design and analysis
3 Feature extraction Vectors Vectors Accuracy
Rank 2015 2016
1 Clustering algorithms Clustering algorithms
2 Algorithm design and analysis Feature extraction
3 Feature extraction Algorithm design and analysis

  稍微观察一下以上每年的热门关键词,就能发现kmeans的应用领域就这么几个;只是随着时间变化,热门程度上有所改变而已。同时,也能看出热点这种东西总是不断地在循环,感觉跟潮流时尚什么的一个样子,过时的东西放个几年可能又成了潮流的引领者。

对每年的abstract提取关键词

  望通能自动提取每篇文章abstract的关键词,我可以根据关键词只查看感兴趣的文章,进行后续分析。
  先对所有非期刊的文章提取abstract。对每个abstract去除停用词并tokenize。因为只是想简单分析,并没有stemming和过滤非单词等操作。
  对单词列表计算TF-IDF,并提取每个abstract的TF-IDF最大的5个单词。事实发现通过查看提取的词语,并不能推测出abstract的含义,不太实用。
  最终还是得自己去把相关的文章abstract都过一遍。

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

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

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

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

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

  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. wepack+sass+vue 入门教程(二)

    六.新建webpack配置文件 webpack.config.js 文件整体框架内容如下,后续会详细说明每个配置项的配置 webpack.config.js直接放在项目demo目录下 module.e ...

  2. 4.Windows Server2012 R2里面部署 MVC 的网站

    网站部署之~Windows Server | 本地部署:http://www.cnblogs.com/dunitian/p/4822808.html#iis 后期会在博客首发更新:http://dnt ...

  3. 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一)

    相关连接导航 在windows下安装gulp —— 基于 Gulp 的前端集成解决方案(一) 执行 $Gulp 时发生了什么 —— 基于 Gulp 的前端集成解决方案(二) 常用 Gulp 插件汇总 ...

  4. 旺财速啃H5框架之Bootstrap(一)

    接下来的时间里,我将和大家一起对当前非常流行的前端框架Bootstrap进行速度的学习,以案例的形式.对刚开始想学习Bootstrap的同学而找不着边的就很有帮助了.如果你想详细的学习Bootstra ...

  5. PHP之时间和日期函数

    // 时间日期函数 Time <?php date_default_timezone_set('UTC'); // 获取当前时间的时间戳 $time0 = mktime(); $time1 = ...

  6. BPM生产安全管理解决方案分享

    一.方案概述生产安全管理是企业生产管理的重要组成部分,组织实施好企业安全管理规划.指导.检查和决策,保证生产处于最佳安全状态是安全管理的重要内容和职责.H3 BPM企业生产安全管理解决方案是一套专门为 ...

  7. iOS之计算上次日期距离现在多久, 如 xx 小时前、xx 分钟前等

    /**  *  计算上次日期距离现在多久  *  *  @param lastTime    上次日期(需要和格式对应)  *  @param format1     上次日期格式  *  @para ...

  8. 关于sql server 2005存储过程的写法

    打开数据库的SQL Server Managerment Studio---->数据库----->打开数据库会看见"可编程行"------->打开有存储过程--- ...

  9. Web 前端攻防(2014版)

    在百度 FEX 团队时写的.有次让我写点前端开发中注意的安全规范,结果写着写着就跑题了,写了一堆纯前端实现的攻击方式...当然还有防范措施. 文章就懒得粘过来了~ 直接贴个地址算了:) http:// ...

  10. 一步步学习javascript基础篇(0):开篇索引

    索引: 一步步学习javascript基础篇(1):基本概念 一步步学习javascript基础篇(2):作用域和作用域链 一步步学习javascript基础篇(3):Object.Function等 ...