Python数据挖掘:入门、进阶与实用案例分析
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

1.2 数据挖掘的通用流程

目前,数据挖掘的通用流程主要包含目标分析、数据抽取、数据探索、数据预处理、分析与建模、模型评价。需要注意的是,这6个流程的顺序并非严格不变,可根据实际项目情况进行不同程度的调整。

1.2.1 目标分析

针对具体的数据挖掘应用需求,首先要明确本次的挖掘目标是什么,系统完成后能达到什么样的效果。也就是说,要想充分发挥数据挖掘的价值,必须要对目标有一个清晰明确的定义,即决定到底想干什么。因此必须分析应用领域,包括应用中的各种知识和应用目标,了解相关领域的有关情况,熟悉背景知识,弄清用户需求等。

1.2.2 数据抽取

在明确了需要进行数据挖掘的目标后,接下来就需要从业务系统中抽取一个与挖掘目标相关的样本数据子集。抽取数据的标准,一是相关性,二是可靠性,三是有效性,而不是动用全部企业数据。对数据样本进行精选,不仅能减少数据处理量,节省系统资源,而且能使与业务需求相关的数据规律性更加凸显出来。

在数据取样时,一定要严格把控质量。任何时候都不能忽视数据的质量,即使是从一个数据仓库中进行数据取样,也不要忘记检查其质量。因为数据挖掘是要探索企业运作的内在规律性,所以当原始数据有误时,我们就很难从中探索数据的规律性了。若从质量较差的数据中探索出数据的“规律性”,再依此去指导工作,很可能造成误导。若从正在运行的系统中进行数据取样,更要注重数据的完整性和有效性。

衡量取样数据质量的标准包括:资料完整无缺,各类指标项齐全;数据准确无误,反映的都是正常(而不是异常)状态下的水平。

获取相关数据后,可再从中做抽样操作。常见的抽样方式如下。

1)随机抽样。当采用随机抽样方式时,数据集中的每一组观测值都有相同的被抽样的概率。例如,若按10%的比例对一个数据集进行随机抽样,则每一组观测值都有10%的机会被取到。

2)等距抽样。在进行等距抽样操作时,首先将数据集按一定顺序排列,根据数据容量要求确定抽选间隔,然后根据间隔进行数据抽取。例如,有一个100组观测值的数据集,从1开始编号,若按5%的比例进行等距抽样,则抽样数据之间的间隔为20,取20、40、60、80和100这5组观测值。

3)分层抽样。在进行分层抽样操作时,首先将样本总体分成若干层次(或分成若干个子集)。每个层次中的观测值都具有相同的被选用的概率,但对不同的层次可设定不同的概率。这样的抽样结果通常具有更好的代表性,进而使模型具有更好的拟合精度。

4)按起始顺序抽样。这种抽样方式是从输入数据集的起始处开始抽样。抽样的数量可以按给定的百分比抽取,也可以直接给定选取观测值的组数。

5)分类抽样。前述几种抽样方式并不考虑抽取样本的具体取值。分类抽样则依据某种属性的取值来选择数据子集,如按客户名称分类、按地址区域分类等。分类抽样的选取方式可以为随机抽样、等距抽样、分层抽样等,只是抽样以类为单位。

1.2.3 数据探索

1.2.2节叙述的数据抽样,多少是带着人们对如何实现数据挖掘目的的先验认识进行操作的。在拿到一个样本数据集后,它是否满足原来设想的要求,其中有没有明显的规律和趋势,有没有出现从未设想过的数据状态,属性之间有什么相关性,可分为哪些类别等,这都是需要首先进行探索的内容。

对所抽取的样本数据进行探索、审核和必要的加工处理,是保证最终的挖掘模型的质量所必需的。可以说,挖掘模型的质量不会优于抽取样本的质量。数据探索的目的是了解样本数据的质量,从而为保证模型质量打下基础。

数据探索的方法主要包括数据校验、分布分析、对比分析、统计量分析、周期性分析、贡献度分析、相关分析等。

1.2.4 数据预处理

当采样数据的表达形式不一致时,如何进行数据变换、数据合并等都是数据预处理要解决的问题。

由于采样数据中常常包含许多噪声,甚至不一致、不完整的数据,所以需要对数据进行预处理,以改善数据质量,并最终达到完善数据挖掘结果的目的。

对于格式化的数据,数据预处理的方法主要包括重复值处理、缺失值处理、异常值处理、函数变换、数据标准化、数据离散化、独热编码、数据合并等。

对于非格式化的数据,如图片、文本等,在数据预处理前需要多经过一步转换操作,如将图片转化为矩阵、将文本向量化等。

1.2.5 分析与建模

抽取完样本并经过预处理后,需要考虑本次建模属于数据挖掘应用中的哪类问题(分类与回归、聚类、关联规则、智能推荐或时间序列),还需要考虑选用哪种算法进行模型构建更为合适。

其中,分类与回归算法主要包括线性模型、决策树、KNN、SVM、神经网络、集成算法等,聚类算法主要包括K-Means聚类、密度聚类、层次聚类等,关联规则算法主要包括Apriori、FP-Growth等,智能推荐主要包括协同过滤推荐算法等,时间序列算法主要包括AR、MA、ARMA、ARIMA等。

对于深度学习算法,按网络类型可分为卷积神经网络、循环神经网络、生成对抗网络等算法。深度学习算法的建模过程与普通的数据挖掘算法不同,包括构建网络、编译网络和训练网络。首先需要构建网络的结构,即搭建一个完整的神经网络结构,包括输入层、隐藏层和输出层。然后需要编译网络,包括设置优化器、损失函数等。最后对网络进行训练,训练网络时还须设置批大小、迭代次数等。

1.2.6 模型评价

在1.2.5节的建模过程中我们会得到一系列分析结果,模型评价的目的之一就是依据这些分析结果从训练好的模型中寻找一个表现最佳的模型,同时结合业务场景对模型进行解释和应用。

适用于分类与回归模型、聚类分析模型、智能推荐模型的评价方法是不同的。对于深度学习的模型,还可以使用回调函数检查监控训练过程中的指标变化,查看模型的内部状态、统计信息和生成的日志等。