数据挖掘的主要任务是从数据中提取可用的知识,其技术的根源可以追溯几个世纪之前应用数学的启蒙和发展。
大数据架构数据挖掘发展趋势如图1-2所示。
图1-2 大数据架构数据挖掘发展趋势
图1-2的左边展示的是现在重要的数据挖掘算法的发展过程。分类算法中朴素贝叶斯(Naive Bayes)理论在18世纪就已经诞生。19世纪初期,高斯通过最小二乘法(Least Squared Error)估计小行星谷神星的运行轨迹,就是一个典型的数据挖掘应用。从时间上可以看出,早期的技术和算法萌芽主要来自于应用数学的进步。应用数学的启蒙和初期发展大多集中在17世纪到19世纪(微积分诞生于 17世纪)。应用数学为数据分析技术提供了很好的理论铺垫。现代数据技术发展更多来源于20世纪50年代后,一个主要原因是计算机科学和数字设备的广泛应用在20世纪50年代开始起步。当计算机、个人电脑、数字设备(包括数字网络、手机、数控机床等)逐步普及之后,“计算”和“数据”逐步变得廉价,因此 20世纪后半期是数据挖掘技术发展的一个迅猛时期。大部分前沿的算法都在这个时间段内诞生。
图1-2的右边是对过去10年的数据挖掘论文研究关键字的可视化总结。其中,颜色越深,代表年代越近。近年来受到广泛关注的社交网络(Social Network)、推荐算法(Collaborative Filtering)、深度学习等以较大的尺寸显示在图1-2中并用深色显示。
细心的读者可以对比图1-2的左右两边发现,21世纪以前的数据挖掘研究主要集中在数据挖掘技术、理论和广义的挖掘任务上,例如分类、聚类或者关联规则挖掘的算法。在进入21世纪之后,随着数字设备逐步深入人类的生活,数据挖掘研究更多地由实际应用来驱动。各类实际应用成了数据挖掘领域的热门关键词。在新的应用领域下,人们对传统算法提出了新的需求和新的任务。因此,数据挖掘领域开始出现各种针对不同目的、不同手段,甚至不同数据结构的新算法和新应用。一句话概括,21 世纪以前数据挖掘关注的是技术和理论,进入21世纪后,数据挖掘聚焦于应用实践与理论的结合。
值得注意的是,伴随着数据挖掘理论结合实践的发展,大数据跃入了人们的视野,对传统的数据挖掘技术提出了挑战。为了应对大数据时代“数据丰富而知识匮乏”的问题,众多的大数据处理架构方案被提出来,用来协助将传统的数据挖掘方法部署至专注于大数据分析的系统中。MapReduce 无疑是“个中翘楚”。而基于MapReduce 的开源实现 Hadoop(擅长批处理)成了大数据分析领域的王者。为了能够充分发挥Hadoop的潜力,Hadoop 的众多“子女”经由开源社区涌现出来。典型的例子有Hive (数据仓库)、HBase(结构化数据存储系统)、Mahout(机器学习和数据挖掘系统)等。在Hadoop等批处理模型大行其道的同时,人们意识到,除了海量的静态数据以外,每分每秒都有高度动态的实时信息涌现出来,对一个有效的实时数据分析模型的需求迫在眉睫。于是,处理流数据的 Storm 系统被Twitter 贡献出来。与Hadoop不同的是,Storm 能够不停止地处理没有终点的数据流。