数据挖掘是从海量数据集合之中抽取出有用知识的过程,这些知识正确、新颖、简洁、潜在有用。根据应用领域不同,数据挖掘对象多种多样,既包括结构化数据,也包括半结构化数据和非结构化数据。数据挖掘是数据库知识发现的一个步骤,同时也是多学科交叉的产物,包括数据库技术、统计学、机器学习、模式识别、算法设计、可视化等。
数据挖掘大致可以划分为两类任务:描述性任务和预测性任务。描述性任务描述现有数据集合的特征,包括关联规则、聚类、离群点分析等:①关联规则。根据给定事务集合中多个元素频繁共同出现的现象来找出元素之间内在的关联关系。例如,顾客会在超市购置许多商品,关联规则分析可以发现一些看似不相关、实则经常被同时购买的商品。②聚类。将一个数据集合划分成若干个簇(子集合),使得簇间距离最大化,而簇内距离最小化。新近的聚类方法不仅能够找出形状较为规则的簇,还能够找出形状不太规则的簇,也可在路网空间、有障碍物的空间中进行聚类。③离群点检测。从一个数据集合中检测出那些与大多数对象不太相似的对象。离群点检测的目的与聚类相反——聚类着眼于寻找“扎堆”行为,而离群点检测着眼于查找“独特”行为。
预测性任务从给定数据集合中找出规律,并可在未来进行预测,包括分类、趋势发现等:①分类。构建分类器来判断某对象是否属于一个已知分类。分类器基于一个给定的数据集合(通常被称为训练集合)构建得来。常见的分类器包括:最近邻、贝叶斯网络、决策树等。②趋势发现。通过数据演化过程得知事件的演变规律,进而预测某事件在未来的发生概率。许多事件的发生、演化都具有规律性,可基于这些规律进行预测。
数据挖掘技术还在不断发展中。在初期阶段,受限于硬件设备,且数据集合规模有限,通常表现为串行算法。但是,这些串行算法无法高效处理大数据时代海量、高速、多样的数据,因而在新近时期涌现了许多借助各类硬件产品和开源平台的并行化数据挖掘工作。
通用图形处理器、多核芯片、可编程逻辑门阵列(FPGA)等硬件从不同方面提供并行处理能力。通用图形处理芯片支持单指令流多数据流(SIMD)模式;多核芯片支持多指令流多数据流(MIMD)模式;FPGA提供了灵活的硬件逻辑门电路设计方式。
Hadoop、Spark、Storm等并行平台使数据挖掘任务可在一个包含多台计算机的集群上被方便地执行。Hadoop平台适用于离线数据挖掘;Spark平台适合于中间结果可能会被多次访问的场景,从而减少昂贵的I/O开销;Storm适合处理流式应用场景。