当今社会,网络和信息技术开始渗透到人类日常生活的方方面面,产生的数据量也呈现指数型增长的态势。现有数据的量级已经远远超越了目前人力所能处理的范畴。如何管理和使用这些数据,逐渐成为数据科学领域中一个全新的研究课题。本章主要介绍数据挖掘的发展情况、通用流程、常用工具,以及Python环境的配置方法。
学习目标
● 了解数据挖掘的定义、发展历程和行业应用。
● 了解深度学习的概念。
● 熟悉数据挖掘的通用流程。
● 了解数据挖掘的常用工具。
● 掌握Python数据挖掘环境的配置方法。
数据挖掘始于20世纪80年代末,早期主要是指从数据库中发现知识(Knowledge Discovery in Database, KDD)。数据挖掘的概念源于1995年在加拿大召开的第一届国际知识发现与数据挖掘大会,随后数据挖掘迅速在世界范围内成为研究的热点,大量的学者和企业纷纷投入到数据挖掘理论研究和工具研发的行列中来。1997年,第三届KDD国际学术大会上举行了数据挖掘工具的实测活动。从此,数据挖掘技术进入了快速发展时期。
数据挖掘(Data Mining)是KDD的核心部分,它是指从数据集合中自动抽取隐藏在数据中的那些有用信息的非平凡过程,这些信息的表现形式有规则、概念、规律和模式等。进入21世纪后,数据挖掘成为一门比较成熟的交叉学科,数据挖掘技术也伴随着信息技术的发展日益成熟起来。
随着数据挖掘技术的发展,其应用领域也在不断地扩展和深化。常见的数据挖掘的行业应用如表1-1所示。
表1-1 常见的数据挖掘的行业应用
数据挖掘常常要利用机器学习提供的算法来分析海量数据,而深度学习作为一种机器学习算法,在很多领域的表现都优于传统机器学习算法,如在图像分类与识别、语音识别与合成、人脸识别、视频分类与行为识别等领域都有着不俗的表现。深度学习能够让机器模仿视听和思考等人类行为活动,解决很多复杂的模式识别难题,其最终目标是让机器能够像人一样具有分析学习能力,能够识别文字、图像和声音等数据。
2006年,杰弗里·辛顿首次提出深度学习的概念。后来,2015年第9期的《自然》杂志提到了与深度学习定义相关的内容:深度学习方法是具有多层次特征描述的特征学习,通过一些简单但非线性的模块将每一层特征描述(从未加工的数据开始)转化为更高一层的、更为抽象的特征描述。
深度学习特指基于深层神经网络实现的模型或算法,其关键在于这些层次的特征不是由人工设计的,而是使用一种通用的学习步骤从数据中学习并获取的。深度学习能够自动地将简单的特征组合成更加复杂的特征,并使用这些组合特征解决问题。
虽然深度学习在研发初期受到了很多大脑工作原理的启发,但现代深度学习技术的发展并不拘泥于模拟人脑神经元和人脑的工作机制,而是已经超越了神经科学的观点,可以更广泛地适用于各种并不是受神经网络启发而产生的机器学习框架。
目前,数据挖掘的通用流程主要包含目标分析、数据抽取、数据探索、数据预处理、分析与建模、模型评价。需要注意的是,这6个流程的顺序并非严格不变,可根据实际项目情况进行不同程度的调整。
针对具体的数据挖掘应用需求,首先要明确本次的挖掘目标是什么,系统完成后能达到什么样的效果。也就是说,要想充分发挥数据挖掘的价值,必须要对目标有一个清晰明确的定义,即决定到底想干什么。因此必须分析应用领域,包括应用中的各种知识和应用目标,了解相关领域的有关情况,熟悉背景知识,弄清用户需求等。
在明确了需要进行数据挖掘的目标后,接下来就需要从业务系统中抽取一个与挖掘目标相关的样本数据子集。抽取数据的标准,一是相关性,二是可靠性,三是有效性,而不是动用全部企业数据。对数据样本进行精选,不仅能减少数据处理量,节省系统资源,而且能使与业务需求相关的数据规律性更加凸显出来。
在数据取样时,一定要严格把控质量。任何时候都不能忽视数据的质量,即使是从一个数据仓库中进行数据取样,也不要忘记检查其质量。因为数据挖掘是要探索企业运作的内在规律性,所以当原始数据有误时,我们就很难从中探索数据的规律性了。若从质量较差的数据中探索出数据的“规律性”,再依此去指导工作,很可能造成误导。若从正在运行的系统中进行数据取样,更要注重数据的完整性和有效性。
衡量取样数据质量的标准包括:资料完整无缺,各类指标项齐全;数据准确无误,反映的都是正常(而不是异常)状态下的水平。
获取相关数据后,可再从中做抽样操作。常见的抽样方式如下。
1)随机抽样。当采用随机抽样方式时,数据集中的每一组观测值都有相同的被抽样的概率。例如,若按10%的比例对一个数据集进行随机抽样,则每一组观测值都有10%的机会被取到。
2)等距抽样。在进行等距抽样操作时,首先将数据集按一定顺序排列,根据数据容量要求确定抽选间隔,然后根据间隔进行数据抽取。例如,有一个100组观测值的数据集,从1开始编号,若按5%的比例进行等距抽样,则抽样数据之间的间隔为20,取20、40、60、80和100这5组观测值。
3)分层抽样。在进行分层抽样操作时,首先将样本总体分成若干层次(或分成若干个子集)。每个层次中的观测值都具有相同的被选用的概率,但对不同的层次可设定不同的概率。这样的抽样结果通常具有更好的代表性,进而使模型具有更好的拟合精度。
4)按起始顺序抽样。这种抽样方式是从输入数据集的起始处开始抽样。抽样的数量可以按给定的百分比抽取,也可以直接给定选取观测值的组数。
5)分类抽样。前述几种抽样方式并不考虑抽取样本的具体取值。分类抽样则依据某种属性的取值来选择数据子集,如按客户名称分类、按地址区域分类等。分类抽样的选取方式可以为随机抽样、等距抽样、分层抽样等,只是抽样以类为单位。
1.2.2节叙述的数据抽样,多少是带着人们对如何实现数据挖掘目的的先验认识进行操作的。在拿到一个样本数据集后,它是否满足原来设想的要求,其中有没有明显的规律和趋势,有没有出现从未设想过的数据状态,属性之间有什么相关性,可分为哪些类别等,这都是需要首先进行探索的内容。
对所抽取的样本数据进行探索、审核和必要的加工处理,是保证最终的挖掘模型的质量所必需的。可以说,挖掘模型的质量不会优于抽取样本的质量。数据探索的目的是了解样本数据的质量,从而为保证模型质量打下基础。
数据探索的方法主要包括数据校验、分布分析、对比分析、统计量分析、周期性分析、贡献度分析、相关分析等。
当采样数据的表达形式不一致时,如何进行数据变换、数据合并等都是数据预处理要解决的问题。
由于采样数据中常常包含许多噪声,甚至不一致、不完整的数据,所以需要对数据进行预处理,以改善数据质量,并最终达到完善数据挖掘结果的目的。
对于格式化的数据,数据预处理的方法主要包括重复值处理、缺失值处理、异常值处理、函数变换、数据标准化、数据离散化、独热编码、数据合并等。
对于非格式化的数据,如图片、文本等,在数据预处理前需要多经过一步转换操作,如将图片转化为矩阵、将文本向量化等。
抽取完样本并经过预处理后,需要考虑本次建模属于数据挖掘应用中的哪类问题(分类与回归、聚类、关联规则、智能推荐或时间序列),还需要考虑选用哪种算法进行模型构建更为合适。
其中,分类与回归算法主要包括线性模型、决策树、KNN、SVM、神经网络、集成算法等,聚类算法主要包括K-Means聚类、密度聚类、层次聚类等,关联规则算法主要包括Apriori、FP-Growth等,智能推荐主要包括协同过滤推荐算法等,时间序列算法主要包括AR、MA、ARMA、ARIMA等。
对于深度学习算法,按网络类型可分为卷积神经网络、循环神经网络、生成对抗网络等算法。深度学习算法的建模过程与普通的数据挖掘算法不同,包括构建网络、编译网络和训练网络。首先需要构建网络的结构,即搭建一个完整的神经网络结构,包括输入层、隐藏层和输出层。然后需要编译网络,包括设置优化器、损失函数等。最后对网络进行训练,训练网络时还须设置批大小、迭代次数等。
在1.2.5节的建模过程中我们会得到一系列分析结果,模型评价的目的之一就是依据这些分析结果从训练好的模型中寻找一个表现最佳的模型,同时结合业务场景对模型进行解释和应用。
适用于分类与回归模型、聚类分析模型、智能推荐模型的评价方法是不同的。对于深度学习的模型,还可以使用回调函数检查监控训练过程中的指标变化,查看模型的内部状态、统计信息和生成的日志等。
数据挖掘是一个反复探索的过程,只有将数据挖掘工具提供的技术及实施经验与企业的业务逻辑及需求紧密结合,并在实施过程中不断地磨合,才能取得好的效果。常用的数据挖掘建模工具如下。
1.Python
Python是一种面向对象的解释型计算机程序设计语言,它拥有高效的高级数据结构,并且能够用简单又高效的方式进行面向对象编程。但Python并不提供一个专门的数据挖掘环境,而是提供众多的扩展库。例如,NumPy、SciPy和Matplotlib这3个十分经典的科学计算扩展库分别为Python提供了快速数组处理、数值运算和绘图功能,scikit-learn库中包含很多分类器的实现以及聚类相关的算法。这些扩展库使Python成为数据挖掘的常用语言。
2.IBM SPSS Modeler
IBM SPSS Modeler原名Clementine,在2009年被IBM收购后对产品的性能和功能进行了大幅度改进和提升。它封装了最先进的统计学和数据挖掘技术,以获得预测知识并将相应的决策方案部署到现有的业务系统和业务过程中,从而提高企业的效益。IBM SPSS Modeler拥有直观的操作界面、自动化的数据准备和成熟的预测分析模型,结合商业技术可以快速建立预测性模型。
3.KNIME
KNIME(Konstanz Information Miner)是基于Java开发的,可以扩展使用WEKA中的挖掘算法。KNIME采用类似数据流(Data Flow)的方式来建立挖掘流程。挖掘流程由一系列功能节点组成,每个节点有输入和输出端口,用于接收数据、模型或导出结果。
4.RapidMiner
RapidMiner也叫YALE(Yet Another Learning Environment),它提供图形化界面,采用类似Windows资源管理器中的树状结构来组织分析组件,树上每个节点表示不同的运算符(operator)。YALE提供了大量的运算符,涉及数据处理、变换、探索、建模、评估等各个环节。YALE是用Java开发的,基于WEKA来构建,可以调用WEKA中的各种分析组件。RapidMiner有拓展的套件Radoop,可以与Hadoop集成,在Hadoop集群上运行任务。
5.TipDM大数据挖掘建模平台
TipDM大数据挖掘建模平台是基于Python引擎开发的,用于数据挖掘建模的开源平台,它采用B/S结构,用户无须下载客户端,可通过浏览器进行访问。平台支持数据挖掘流程所需的主要过程:数据探索(相关性分析、主成分分析、周期性分析等),数据预处理(特征构造、记录选择、缺失值处理等),模型构建(聚类模型、分类模型、回归模型等),模型评价(R-Squared、混淆矩阵、ROC曲线等)。用户可在没有Python编程基础的情况下,通过拖曳的方式进行操作,将数据输入/输出、数据预处理、模型构建、模型评估等环节通过流程化的方式进行连接,以达到数据分析与挖掘的目的。
Python是一种结合解释性、编译性、互动性,面向对象的高层次计算机编程语言,也是一种功能强大而完善的通用型语言,已具有二十多年的发展历史,成熟且稳定。相比其他的数据挖掘工具,Python可以让开发者更好地实现想法。
Anaconda是Python的一个集成开发环境,可以便捷地获取库,且提供对库的管理功能,可以对环境进行统一管理。它的安装过程也非常简单,以Windows系统为例,读者可以进入Anaconda发行版官方网站下载Anaconda安装包,建议选择Python 3.8版本。本书将使用Anaconda 3 2020.11版本。安装Anaconda的具体步骤如下。
1)单击已下载好的Anaconda安装包,并单击如图1-1所示的Next按钮,进入下一步。
2)单击如图1-2所示的I Agree按钮,同意上述协议并进入下一步。
3)选择如图1-3所示的All Users(requires admin privileges)单选按钮,单击Next按钮进入下一步。
4)单击Browse按钮,选择在指定的路径安装Anaconda,如图1-4所示。完成后单击Next按钮,进入下一步。
图1-1 Windows系统安装Anaconda步骤1
图1-2 Windows系统安装Anaconda步骤2
图1-3 Windows系统安装Anaconda步骤3
图1-4 Windows系统安装Anaconda步骤4
5)图1-5中的两个复选框分别代表了允许将Anaconda添加到系统路径环境变量中、Anaconda使用的Python版本为3.8,全部勾选后,单击Install按钮,等待安装结束。
图1-5 Windows系统安装Anaconda步骤5
6)单击如图1-6所示的Finish按钮,完成Anaconda安装。
图1-6 Windows系统安装Anaconda步骤6
本章主要目的是了解数据挖掘的基本知识,为开展项目实战奠基。首先介绍了数据挖掘的定义、发展史、行业应用和深度学习的概念,然后介绍了数据挖掘的通用流程和常用工具,最后介绍了Python数据挖掘环境的配置方法。