作者 | 陈封能
来源 | 《数据挖掘导论》(原书第2版)
导读:数据采集和存储技术的迅速发展,加之数据生成与传播的便捷性,致使数据爆炸性增长,最终形成了当前的大数据时代。围绕这些数据集进行可行的深入分析,对几乎所有社会领域的决策都变得越来越重要:商业和工业、科学和工程、医药和生物技术以及政府和个人。
然而,数据的数量(体积)、复杂性(多样性)以及收集和处理的速率(速度)对于人类来说都太大了,无法进行独立分析。因此,尽管大数据的规模性和多样性给数据分析带来了挑战,但仍然需要自动化工具从大数据中提取有用的信息。
数据挖掘将传统的数据分析方法与用于处理大量数据的复杂算法相结合,本文将介绍数据挖掘的概况。
01 数据挖掘及高级数据分析技术的应用
1. 商业和工业
借助POS(销售点)数据收集技术(条码扫描器、射频识别(RFID)和智能卡技术),零售商可以在商店的收银台收集顾客购物的最新数据。零售商可以利用这些信息,加上电子商务网站的日志、客服中心的顾客服务记录等其他的重要商务数据,能够更好地理解顾客的需求,做出更明智的商业决策。
数据挖掘技术可以用来支持广泛的商务智能应用,如**顾客分析、定向营销、工作流管理、商店分布、欺诈检测以及自动化购买和销售。**最近一个应用是快速股票交易,在这个交易中,需要使用相关的金融交易数据在不到一秒的时间内做出买卖决定。
数据挖掘还能帮助零售商回答一些重要的商业问题,如:“谁是最有价值的顾客?”“什么产品可以交叉销售或提升销售?”“公司明年的营收前景如何?”这些问题促使着数据挖掘技术的发展,比如关联分析。
随着互联网不断改变我们日常生活中互动和做决定的方式,能够生成大量的在线体验数据,例如网页浏览、信息传递,以及在社交网站上发布信息,这为使用Web数据的商务应用提供了机会。
例如,在电子商务领域,**用户的在线浏览或购物偏好数据可以用来推荐个性化的产品。**数据挖掘技术也在支持其他基于互联网的服务方面扮演着重要的角色,如过滤垃圾信息、回答搜索查询,以及建议社交圈的更新和联系。
互联网上大量的文本、图像和视频使得数据挖掘方法有了许多进展,如深度学习。这些进展推动了诸多应用领域的进步,如目标识别、自然语言翻译与自动驾驶。
另一个经历大数据快速转型的应用领域是移动传感器和移动设备的使用,如智能手机和可穿戴计算设备。借助更好的传感器技术,可以利用嵌入在相互连接的日常设备上的低成本传感器(称为物联网(IOT))来收集物理世界的各种信息。
在数字系统中,物理传感器的深度集成正开始产生大量与环境相关的多样化和分布式的数据,可用于设计方便、安全、节能的家庭系统,以及规划智能城市。
2. 医学、科学与工程
医学、科学与工程界的研究者正在快速收集大量数据,这些数据对获得有价值的新发现至关重要。例如,为了更深入地理解地球的气候系统,NASA已经部署了一系列的地球轨道卫星,不停地收集地表、海洋和大气的全球观测数据。
然而,由于这些数据的规模和时空特性,传统的方法常常不适合分析这些数据集。数据挖掘所开发的技术可以帮助地球科学家回答如下问题:“干旱和飓风等生态系统扰动的频度和强度与全球变暖之间有何联系?”“海洋表面温度对地表降水量和温度有何影响?”“如何准确地预测一个地区的生长季节的开始和结束?”
再举一个例子,分子生物学研究者希望利用当前收集的大量基因组数据,更好地理解基因的结构和功能。过去,传统方法只允许科学家在一个实验中每次研究少量基因,微阵列技术的最新突破已经能让科学家在多种情况下比较数以千计的基因特性。
这种比较有助于确定每个基因的作用,或许可以查出导致特定疾病的基因。然而,由于数据的噪声和高维性,需要新的数据分析方法。除了分析基因序列数据外,数据挖掘还能用来处理生物学的其他难题,如蛋白质结构预测、多序列校准、生物化学路径建模和系统发育学。
另一个例子是利用数据挖掘技术来分析越来越多的电子健康记录(EHR)数据。不久之前,对患者的研究需要手动检查每一个患者的身体记录,并提取与所研究的特定问题相关的、具体的信息。EHR允许更快和更广泛地探索这些数据。
然而,只有患者在看医生或住院期间才能对他们进行观察,并且在任何特定访问期间只能测量关于患者健康的少量细节,因此存在重大挑战。
目前,EHR分析侧重于简单类型的数据,如患者的血压或某项疾病的诊断代码。然而,很多类型更复杂的医学数据也被收集起来,例如心电图(ECG)和磁共振成像(MRI)或功能性磁共振成像(fMRI)的神经元图像。
尽管分析这些数据十分具有挑战性,但其中包含了患者的重要信息。将这些数据与传统的EHR和基因组数据集成分析是实现精准医学所需的功能之一,旨在提供更加个性化的患者护理。
02 什么是数据挖掘
**数据挖掘是在大型数据库中自动地发现有用信息的过程。**数据挖掘技术用来探查大型数据库,发现先前未知的有用模式。数据挖掘还可以预测未来的观测结果,比如顾客在网上或实体店的消费金额。
并非所有的信息发现任务都被视为数据挖掘。例如查询任务:在数据库中查找个别记录,或查找含特定关键字的网页。这是因为这些任务可以通过与数据库管理系统或信息检索系统的简单交互来完成。而这些系统主要依赖传统的计算机科学技术,包括先进高效的索引结构和查询处理算法,有效地组织和检索大型数据存储库的信息。
尽管如此,数据挖掘技术可以基于搜索结果与输入查询的相关性来提高搜索结果的质量,因此被用于提高这些系统的性能。
- 数据库中的数据挖掘与知识发现
数据挖掘是数据库中知识发现(Knowledge Discovery in Database,KDD)不可缺少的一部分,而KDD是将未加工的数据转换为有用信息的整个过程,如图1所示。该过程包括一系列转换步骤,从数据预处理到数据挖掘结果的后处理。
▲图1 数据库中知识发现(KDD)过程
输入数据可以以各种形式存储(平面文件、电子表格或关系表),并且可以存储在集中式数据库中,或分布在多个数据站点上。预处理(preprocessing)的目的是将原始输入数据转换为适当的格式,以便进行后续分析。
数据预处理涉及的步骤包括融合来自多个数据源的数据,清洗数据以消除噪声和重复的观测值,选择与当前数据挖掘任务相关的记录和特征。由于收集和存储数据的方式多种多样,数据预处理可能是整个知识发现过程中最费力、最耗时的步骤。
“结束循环”(closing the loop)通常指将数据挖掘结果集成到决策支持系统的过程。例如,在商业应用中,数据挖掘的结果所揭示的规律可以与商业活动管理工具结合,从而开展或测试有效的商品促销活动。
这样的结合需要后处理(postprocessing)步骤,确保只将那些有效的和有用的结果集成到决策支持系统中。后处理的一个例子是可视化,它使得数据分析者可以从各种不同的视角探査数据和数据挖掘结果。在后处理阶段,还能使用统计度量或假设检验,删除虚假的数据挖掘结果。
03 数据挖掘要解决的问题
前面提到,面临大数据应用带来的挑战时,传统的数据分析技术经常遇到实际困难。下面是一些具体的问题,它们引发了人们对数据挖掘的研究。
1. 可伸缩
由于数据产生和采集技术的进步,数太字节(TB)、数拍字节(PB)甚至数艾字节(EB)的数据集越来越普遍。如果数据挖掘算法要处理这些海量数据集,则算法必须是可伸缩的。**许多数据挖掘算法采用特殊的搜索策略来处理指数级的搜索问题。**为实现可伸缩可能还需要实现新的数据结构,才能以有效的方式访问每个记录。
例如,当要处理的数据不能放进内存时,可能需要核外算法。使用抽样技术或开发并行和分布式算法也可以提高可伸缩程度。
2. 高维性
现在,常常会遇到具有成百上千属性的数据集,而不是几十年前常见的只具有少量属性的数据集。在生物信息学领域,微阵列技术的进步已经产生了涉及数千特征的基因表达数据。具有时间分量或空间分量的数据集也通常具有很高的维度。
例如,考虑包含不同地区的温度测量结果的数据集,如果在一个相当长的时间周期内反复地测量,则维数(特征数)的增长正比于测量的次数。为低维数据开发的传统数据分析技术通常不能很好地处理这类高维数据,如维灾难问题。此外,对于某些数据分析算法,随着维数(特征数)的增加,计算复杂度会迅速增加。
3. 异构数据和复杂数据
通常,传统的数据分析方法只处理包含相同类型属性的数据集,或者是连续的,或者是分类的。随着数据挖掘在商务、科学、医学和其他领域的作用越来越大,越来越需要能够处理异构属性的技术。
近年来,出现了更复杂的数据对象。这种非传统类型的数据如:含有文本、超链接、图像、音频和视频的Web和社交媒体数据,具有序列和三维结构的DNA数据,由地球表面不同位置、不同时间的测量值(温度、压力等)构成的气候数据。
为挖掘这种复杂对象而开发的技术应当考虑数据中的联系,如时间和空间的自相关性、图的连通性、半结构化文本和XML文档中元素之间的父子关系。
4. 数据的所有权与分布
有时,需要分析的数据不会只存储在一个站点,或归属于一个机构,而是地理上分布在属于多个机构的数据源中。这就需要开发分布式数据挖掘技术。分布式数据挖掘算法面临的主要挑战包括:
- 如何降低执行分布式计算所需的通信量?
- 如何有效地统一从多个数据源获得的数据挖掘结果?
- 如何解决数据安全和隐私问题?
5. 非传统分析
传统的统计方法基于一种假设检验模式,即提出一种假设,设计实验来收集数据,然后针对假设分析数据。但是,这一过程劳力费神。当前的数据分析任务常常需要产生和评估数千种假设,因此需要自动地产生和评估假设,这促使人们开发了一些数据挖掘技术。
此外,数据挖掘所分析的数据集通常不是精心设计的实验的结果,并且它们通常代表数据的时机性样本(opportunistic sample),而不是随机样本(random sample)。
04 数据挖掘与其他领域的关联
一些其他领域也起到重要的支撑作用。特别是,需要数据库系统提供高效的存储、索引和查询处理。源于高性能(并行)计算的技术在处理海量数据集方面常常是非常重要的。分布式技术还可以帮助处理海量数据,并且当数据不能集中到一起处理时显得尤为重要。图2显示了数据挖掘与其他领域之间的联系。
▲图2 数据挖掘汇集了许多学科的知识