通过上网查询以及看同行对会议的公共认识,数据挖掘领域的顶级会议是KDD(ACM SIGKDD Conference on Knowledge Discovery and Data Mining),公认的、排名前几位的会议是KDD、ICDE、CIKM、ICDM、SDM,期刊是ACM TKDD、IEEE TKDE、ACM TODS、ACM TOIS、DMKD、VLDB Journal等。会议及期刊的全称如下:
会议
ACM SIGKDD Conference on Knowledge Discovery and Data Mining (KDD)
International Conference on Data Engineering (ICDE)
International Conference on Information and Knowledge Management (CIKM)
IEEE International Conference on Data Mining (ICDM)
SIAM International Conference on Data Mining (SDM)
期刊
ACM Transactions on Knowledge Discovery From Data (TKDD)
IEEE Transactions on Knowledge and Data Engineering (TKDE)
ACM Transactions on Database Systems (TODS)
ACM Transactions on Information Systems (TOIS)
Data Mining and Knowledge Discovery (DMKD)
通过最近几天对最新的(14年、15年)会议论文阅读,首先说一下数据挖掘领域在做什么、热点研究在哪里。
数据挖掘领域主要包括以下方面:基础理论研究(规则和模式挖掘、分类、聚类、话题学习、时间空间数据挖掘、机器学习方法,监督、非监督、半监督等)、社交网络分析和大规模图挖掘(图模式挖掘、社区发现、网络聚类系数估计、网络关系挖掘、网络用户行为分析、网络信息传播、社交网络应用,社交推荐(信息、好友等))、大数据挖掘(算法的并行、分布式扩展、多源异构数据融合挖掘等)。数据挖掘应用(医疗、教育、金融等)。研究热点是大数据挖掘、社交网络和大规模图挖掘。
下面,在说一下什么是大数据挖掘,它跟传统的方法其本质区别是什么?大数据挖掘可以分为三点:算法的扩展、分布式框架开发、多源数据融合分析。通过阅读KDD’13,KDD’14,几篇KDD’15的big data session中的文章,几乎百分之百的文章都提到了算法的scalability。由此可见,现今大数据挖掘与传统算法的本质区别在于算法的可扩展性。换句话说,现在研究的算法在不仅仅能处理小规模数据集,当数据增加时也具有较大范围内的适合。算法的扩展,我理解为两个方面:scale out-纵向扩展以及scale up-横向扩展。纵向扩展最要在算法底层、良好的数据结构设计或者并行设计方面。横向扩展主要指算法的分布式技术实现(自己编写分布式算法或者基于现有分布式框架实现)。这里所说的“大数据”,在不同的挖掘领域(文本、图结构、机器学习、图像)所对应的数据量是不同的。对文本来说,几百万个样本可能就是“大数据”;对机器学习来说,千万个样本,几十维、几百维(MB/GB)就是“大数据”;对大规模图挖掘来说,千万级节点、亿级边(GB),也是“大数据”;对图像数据,百万级图像(TB)完全可以称得上“大数据”。那么,要做算法的可扩展性是不是必须用到并行技术、分布式编程技术?答案是一般需要,但并不绝对。算法如果做到了极致,单台计算机也能处理“大数据”问题,比如:TurboGraph: A Fast Parallel Graph Engine Handing Billion-Scale Graphs in a Single PC. 文章仅仅在一台计算机上利用线程并行(多核)实现了计算机集群完成的工作。有些文章是用MATLAB来完成的实验(Comparing apples to oranges: a scalable solution with heterogeneous hashing、Fast Flux Discrimination for Large-Scale Sparse Nonlinear Classification、Online Chinese Restaurant Process)、有些文章是利用Hadoop集群来完成实验、有些是利用C/JAVA语言编写分布式程序实现、有些是利用多核CPU的多线程并行实现。可见,算法的实现方式不重要,重要的是算法具有scalability。多源数据融合以及挖掘分析也可以称得上大数据挖掘,可能不见得数据集有非常大,但是通过多种数据的融合发现了之前完成不了的事情、或者之前完成效果不好的事情。比如:heterogeneous hashing文章用了两个异构数据集(text、image)进行relation-aware分析。特别是微软亚洲研究院在KDD’13 上的U-Air: When Urban Air Quality Inference Meets Big Data,这篇文章就是融合了5个数据集(气象数据、空气质量数据、POI数据、路网数据、轨迹数据),利用传统的数据挖掘方法进行了融合分析,得到了较好的效果并进行了商业应用。附注:个人认为算法也应该考虑扩展性,在面临数据集增加时,看看是否还会能达到高效地预测结果。
总结:在大数据研究中,更多的是偏理论算法的研究。可以这样说,数据挖掘本身就是跟数据打交道,在特定情况下(数据集较大时或不断增加时),数据挖掘的任何一个研究点都可能会遇到“大数据”问题。所以,真正需要做的是找准一个问题,利用传统方法进行挖掘,并测试在大规模数据集下传统算法是否可行,如果不可行,提出算法的改进版或者自己动手实现一个新的、具有可扩展性的算法,这就是大数据研究的过程(也包括异构数据融合分析)。