当今社会,网络和信息技术已经渗透进人类日常生活的方方面面,产生的数据量也呈现指数级增长的态势。现有数据的量级已经远远超越了目前人力所能处理的范畴。如何管理和使用这些数据,逐渐成为数据科学领域中一个全新的研究课题。本章主要介绍数据挖掘的发展史、常用方法、通用流程、常用工具,以及Python数据挖掘环境的配置方法。
(1)了解数据挖掘发展史。
(2)了解数据挖掘的常用方法。
(3)熟悉数据挖掘的通用流程。
(4)了解数据挖掘的常用工具。
(5)掌握Python数据挖掘环境的配置方法。
数据挖掘(Data Mining)起始于20世纪下半叶,早期主要研究从数据中发现知识(Knowledge Discovery from Data,KDD)。数据挖掘的概念源于1995年在加拿大召开的第一届知识发现与数据挖掘国际学术会议,随后在世界范围内迅速成为研究的热点,大量学者和企业纷纷投入数据挖掘理论研究和工具研发的行列中来。1997年的第三届知识发现与数据挖掘国际学术会议举行了数据挖掘工具的实测活动。从此,数据挖掘技术进入了快速发展时期。
数据挖掘是 KDD 的核心部分,它是指从数据集合中自动抽取隐藏在数据中的有用信息的非平凡过程,这些信息的表现形式有规则、概念、规律和模式等。进入21世纪,数据挖掘已经成为一门比较成熟的交叉学科,并且,数据挖掘技术也随着信息技术的发展日益成熟起来。
数据挖掘的常用方法包括分类与回归、聚类、关联规则、智能推荐、时间序列等,以帮助企业提取数据中蕴含的商业价值,提高企业的竞争力。具体方法介绍如下。
(1)分类与回归。分类是一种对离散型随机变量进行建模或预测的方法,反映的是如何找出同类事物之间具有共同性质的特征和不同事物之间的差异特征,用于将数据集中的每个对象归类到某个已知的对象类中。回归是通过建立模型来研究变量之间相互关系的密切程度、结构状态及进行模型预测的一种有效方法。分类与回归广泛应用于医疗诊断、信用卡的信用分级、图像模式识别、风险评估等领域。
(2)聚类。聚类是在预先不知道类别标签的情况下,根据信息相似度原则进行信息集聚的一种方法。聚类的目的是使得属于同一类别的个体之间的差别尽可能小,而不同类别的个体之间的差别尽可能大。因此,聚类的意义在于将类似的事物组织在一起。通过聚类,人们能够识别密集和稀疏的区域,从而发现全局的分布模式,以及数据属性之间的关系。聚类分析广泛应用于商业、生物、地理、网络服务等多个领域。
(3)关联规则。关联规则是一种使用较为广泛的模式识别方法,旨在从大量的数据当中发现特征之间或数据之间在一定程度上的依赖或关联关系。关联规则分析广泛应用于市场营销、事务分析等领域。
(4)智能推荐。智能推荐用于联系用户和信息,帮助用户发现对自己有价值的信息,同时让这些有价值的信息展现在对此感兴趣的用户面前,从而实现信息消费者和信息生产者的双赢。智能推荐广泛应用于金融、电商、服务等领域。
(5)时间序列。时间序列是对在不同时间段内取得的样本数据进行挖掘,分析样本数据的变化趋势。时间序列广泛应用于股指预测、生产过程监测、电气系统监测、销售额预测等领域。
目前,数据挖掘的通用流程包含目标分析、数据抽取、数据探索、数据预处理、分析与建模、模型评价。需要注意的是:这6个流程的顺序并不是严格不变的,可根据实际项目的情况进行不同程度的调整。
针对具体的数据挖掘应用需求,先要明确本次的挖掘目标是什么,以及系统完成数据挖掘后能达到什么样的效果。因此必须分析应用领域,包括应用领域中的各种知识和应用目标,了解相关领域的有关情况,熟悉背景知识,弄清用户需求。要想充分发挥数据挖掘的价值,必须对目标有一个清晰明确的定义,即确定到底想干什么。
在明确了数据挖掘的目标后,接下来就需要从业务系统中抽取出一个与挖掘目标相关的样本数据子集。抽取数据的标准包括相关性、可靠性、有效性,而且无需动用全部企业数据。精选数据样本不仅能减少数据处理量、节省系统资源,而且能使想要寻找的规律突显出来。
进行数据取样时,一定要严格把控质量。任何时候都不能忽视数据的质量,即使是从数据仓库中进行数据取样,也不要忘记检查其质量。因为数据挖掘是要探索企业运作的内在规律,所以如果原始数据有误,就很难从中探索出规律,就算真的从中探索出了什么“规律”,再依此去指导工作,也很可能会造成误导。若从正在运行的系统中进行数据取样,则更要注意数据的完整性和有效性。
衡量取样数据质量的标准包括:资料完整无缺,各类指标项齐全;数据准确无误,反映的都是正常(而不是异常)状态下的水平。
对于获取到的数据,可再从中抽样。抽样的方式是多种多样的,常见的方式如下。
(1)随机抽样。在采用随机抽样方式时,数据集中的每一组观测值都有相同的被抽中概率。例如,按10%的比例对一个数据集进行随机抽样,则每一组观测值都有10%的概率被抽取到。
(2)等距抽样。如果按5%的比例对一个有100组观测值的数据集进行等距抽样,有 ,那么抽取的就是第20、40、60、80、100组这5组观测值。
(3)分层抽样。在进行分层抽样操作时,需要先将样本总体分成若干层(或分成若干个子集)。每层中的观测值都具有相同的被选中概率,但对不同的层可设定不同的概率。这样的抽样结果通常具有更好的代表性,进而使模型具有更好的拟合精度。
(4)按起始顺序抽样。这种抽样方式是从输入数据集的起始处开始抽样,对于抽样的数量,可以给定一个百分比,或直接给定选取观测值的组数。
(5)分类抽样。前述几种抽样方式并不考虑抽取样本的具体取值,分类抽样则依据某种属性的取值来选择数据子集,如按客户名称分类、按地址区域分类等。分类抽样的方式就是前面所述的几种方式,只是抽样时以类为单位。
前面所叙述的数据取样,或多或少是人们带着对如何实现数据挖掘目的的主观认识进行操作的。当拿到一个样本数据集后,它是否达到设想的要求,其中有没有什么明显的规律和趋势,有没有出现从未设想过的数据状态,属性之间有什么相关性,它可分成哪些类别等,这些都是需要先进行探索的内容。
对所抽取的样本数据进行探索、审核和必要的加工处理,是保证最终挖掘模型的质量所必需的操作。可以说,挖掘模型的质量不会优于抽取的样本的质量。数据探索和预处理的目的是保证样本数据的质量,从而为保证模型质量打下基础。
数据探索主要包括数据校验、分布分析、对比分析、周期性分析、贡献度分析、相关性分析等,有关介绍详见第3章。
当采样数据的表达形式不一致时,如何进行数据变换、数据合并等都是数据预处理要解决的问题。
由于采样数据中常常包含许多含有噪声、不完整甚至不一致的数据,因此需要对数据进行预处理以改善数据质量,并最终达到完善数据挖掘结果的目的。
数据预处理主要包括重复值处理、缺失值处理、异常值处理、简单函数变换、数据标准化、数据离散化、独热编码、数据合并等,有关介绍详见第4章。
样本抽取和预处理都完成后,需要考虑本次建模属于数据挖掘应用中的哪类问题(分类与回归、聚类、关联规则、智能推荐还是时间序列),还需考虑选用哪种算法进行模型构建更为合适。
其中,分类与回归算法主要包括线性模型、决策树、最近邻分类、支持向量机、神经网络、集成算法等;聚类算法主要包括K-Means聚类、密度聚类、层次聚类等;关联规则主要包括Apriori、FP-Growth等;智能推荐主要包括基于内容推荐、协同过滤推荐算法等;时间序列模型主要包括AR模型、MA模型、ARMA模型、ARIMA模型等。
在建模过程中会得出一系列的分析结果,模型评价的目的之一就是依据这些分析结果,从训练好的模型中寻找出一个表现最佳的模型,并结合业务场景对模型进行解释和应用。
适用于分类与回归模型、聚类分析模型、智能推荐模型的评价方法是不同的,具体评价方法见第5章。
数据挖掘是一个反复探索的过程,只有将数据挖掘工具提供的技术和实施经验与企业的业务逻辑和需求紧密结合,并在实施过程中不断地磨合,才能取得好的效果。常用的几种数据挖掘建模工具如下。
Python是一种面向对象的解释型计算机程序设计语言,它拥有高效的高级数据结构,并且能够用简单而又高效的方式进行面向对象编程。但是Python并不提供一个专门的数据挖掘环境,而是提供数据挖掘的众多扩展库,如NumPy、SciPy和Matplotlib。这3个十分经典的科学计算扩展库分别为 Python 提供了快速数组处理、数值运算和绘图功能。此外scikit-learn 库中包含很多分类器的实现及聚类相关的算法。有了这些扩展库,Python 成为了数据挖掘的常用语言。
IBM SPSS Modeler原名Clementine,其2009年被IBM收购,之后IBM对其功能和性能进行了大幅度改进和提升。它封装了先进的统计学和数据挖掘技术,以获得预测知识并将相应的决策方案部署到现有的业务系统和业务过程中,从而提高企业的效益。IBM SPSS Modeler拥有直观的操作界面、自动化的数据准备和成熟的预测分析模型,结合商业技术可以快速建立预测模型。
KNIME(Konstanz Information Miner)是基于Java开发的,可以扩展使用Weka中的挖掘算法。KNIME采用类似数据流(Data Flow)的方式来建立分析和挖掘流程。挖掘流程由一系列功能节点组成,每个节点有输入/输出端口,用于接收数据或模型、导出结果。
RapidMiner也叫YALE(Yet Another Learning Environment),它提供图形化界面,采用类似Windows资源管理器中的树状结构来组织分析组件,树上每个节点表示不同的运算符(Operator)。RapidMiner中提供了大量的运算符,包括数据处理、变换、探索、建模、评估等环节。RapidMiner是用Java开发的,基于Weka来进行构建,可以调用Weka中的各种分析组件。RapidMiner有拓展的套件Radoop,可以与Hadoop集成,并在Hadoop集群上运行任务。
TipDM开源数据挖掘建模平台是基于Python引擎、用于数据挖掘建模的开源平台。该平台采用B/S结构,用户不需要下载客户端,可通过浏览器对其进行访问。平台支持数据挖掘流程所需的主要过程:数据探索(相关性分析、主成分分析、周期性分析等);数据预处理(特征构造、记录选择、缺失值处理等);分析与建模(聚类模型、分类模型、回归模型等);模型评价(R-Squared、混淆矩阵、ROC曲线等)。用户可在没有Python编程基础的情况下,通过拖曳的方式进行操作,将数据输入/输出、数据预处理、分析与建模、模型评价等环节通过流程化的方式进行连接,以达到数据分析挖掘的目的。
Python是一门结合了解释性、编译性、互动性的面向对象的高层次计算机程序语言,也是一门功能强大而完善的通用型语言,已具有30多年的发展历史,成熟且稳定。相对于其他数据挖掘工具,Python能让开发者更好地实现想法。
Anaconda是Python的一个集成开发环境,可以便捷地获取库,并且提供对库的管理功能,可以对环境进行统一管理。读者可以进入 Anaconda 发行版官方网站,下载 Windows系统的Anaconda安装包,选择Python 3.8.3版本。安装Anaconda的具体步骤如下。
(1)单击图1-1所示的【Next】按钮进入下一步。
(2)单击图1-2所示的【I Agree】按钮,表示同意上述协议并进入下一步。
(3)选择图1-3所示的【All Users(requires admin privileges)】单选按钮,然后单击【Next】按钮,进入下一步。
(4)单击图1-4所示的【Browse…】按钮,指定安装 Anaconda 的路径,然后单击【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】按钮,等待安装结束。
(6)当安装进度条满格后,如图1-6所示,依次单击【Next】按钮。
图1-5 Windows系统安装Anaconda步骤(5)
图1-6 Windows系统安装Anaconda步骤(6)
(7)当出现图1-7所示的界面时,可取消勾选界面中的【Anaconda Individual Edition Tutorial】(Anaconda个人版教程)、【Learn More About Anaconda】(了解更多Anaconda)两个复选框,单击【Finish】按钮,即可完成Anaconda的安装。
图1-7 Windows系统安装Anaconda步骤(7)
本章主要介绍了数据挖掘的基础知识,包括数据挖掘的发展史、常用方法、通用流程和常用工具,以及Python数据挖掘环境的配置方法。其中,数据挖掘的通用流程包括目标分析、数据抽取、数据探索、数据预处理、分析与建模、模型评价;常用的数据挖掘工具包括Python、IBM SPSS Modeler、KNIME、RapidMiner、TipDM开源数据挖掘建模平台。
(1)以下不属于数据挖掘常用方法的是( )。
A.聚类
B.统计分析
C.关联规则
D.时间序列
(2)关于数据预处理,下列叙述错误的是( )。
A.数据预处理可以改善数据质量
B.数据预处理包括重复值处理、简单函数变换、独热编码
C.数据预处理包括异常值处理、数据标准化、数据合并
D.数据预处理中不包括数据离散化
(3)下列不属于数据挖掘工具的是( )。
A.Word
B.Python
C.RapidMiner
D.KNIME
(4)关于数据挖掘的通用流程,下列叙述中正确的是( )。
A.数据挖掘的通用流程主要包含目标分析、数据抽取、数据探索、数据预处理、分析与建模、模型评价
B.分类与回归模型、聚类分析模型的评价方法是相同的
C.数据挖掘的通用流程中目标分析是没有意义的,可以去除
D.抽取数据的标准中不包含有效性
(5)关于Python,下列叙述错误的是( )。
A.Python是一门结合了解释性、编译性、互动性的面向对象的高层次计算机程序语言
B.Python拥有高效的高级数据结构
C.Python可以提供一个专门的数据挖掘环境
D.Python是一种面向对象的解释型计算机程序设计语言