《Hadoop大数据分析与挖掘实战》——1.4节数据挖掘建模过程-阿里云开发者社区

开发者社区> 华章出版社> 正文
登录阅读全文

《Hadoop大数据分析与挖掘实战》——1.4节数据挖掘建模过程

简介:

本节书摘来自华章社区《Hadoop大数据分析与挖掘实战》一书中的第1章,第1.4节数据挖掘建模过程,作者张良均 樊哲 赵云龙 李成华 ,更多章节内容可以访问云栖社区“华章社区”公众号查看

1.4 数据挖掘建模过程
从本节开始,将以餐饮行业的数据挖掘应用为例来详细介绍数据挖掘的建模过程,如图1-1所示。


57c9ad4ac212ac45de027876f0e7bf6bb154c506

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

针对餐饮行业的数据挖掘应用,可定义如下挖掘目标:
实现动态菜品智能推荐,帮助顾客快速发现自己感兴趣的菜品,同时确保推荐给顾客的菜品也是餐饮企业所期望的,实现餐饮消费者和餐饮企业的双赢;
对餐饮客户进行细分,了解不同客户的贡献度和消费特征,分析哪些客户是最有价值的,哪些是最需要关注的,对不同价值的客户采取不同的营销策略,将有限的资源投放到最有价值的客户身上,实现精准化营销;
基于菜品历史销售情况,综合考虑节假日、气候和竞争对手等影响因素,对菜品销量进行趋势预测,方便餐饮企业准备原材料;
基于餐饮大数据,优化新店选址,并对新店所在位置周围的潜在顾客口味偏好进行分析,以便及时进行菜式调整。
1.4.2 数据取样
在明确了需要进行数据挖掘的目标后,接下来就需要从业务系统中抽取出一个与挖掘目标相关的样本数据子集。抽取数据的标准,一是相关性,二是可靠性,三是有效性,而不是动用全部企业数据。通过数据样本的精选,不仅能减少数据处理量,节省系统资源,而且使我们想要寻找的规律性更加突显出来。
进行数据取样,一定要严把质量关。在任何时候都不能忽视数据的质量,即使是从一个数据仓库中进行数据取样,也不要忘记检查其质量如何。因为数据挖掘是要探索企业运作的内在规律性,原始数据有误,就很难从中探索规律性。若真的从中还探索出来了什么“规律性”,再依此去指导工作,则很可能会造成误导。若从正在运行的系统中进行数据取样,更要注意数据的完整性和有效性。
衡量取样数据质量的标准包括:
资料完整无缺,各类指标项齐全。
数据准确无误,反映的都是正常(而不是异常)状态下的水平。
对获取的数据,可再从中作抽样操作。抽样的方式是多种多样的,常见的有以下几种方式。
随机抽样:在采用随机抽样方式时,数据集中的每一组观测值都有相同的被抽样的概率。如按10%的比例对一个数据集进行随机抽样,则每一组观测值都有10%的机会被取到。
等距抽样:如按5%的比例对一个有100组观测值的数据集进行等距抽样,则100/5=20,等距抽样方式是取第20、40、60、80和第100这5组观测值。
分层抽样:在这种抽样操作时,首先将样本总体分成若干层次(或者说分成若干个子集)。在每个层次中的观测值都具有相同的被选用的概率,但对不同的层次可设定不同的概率。这样的抽样结果通常具有更好的代表性,进而使模型具有更好的拟合精度。
从起始顺序抽样:这种抽样方式是从输入数据集的起始处开始抽样。抽样的数量可以给定一个百分比,或者直接给定选取观测值的组数。
分类抽样:在前述几种抽样方式中,并不考虑抽取样本的具体取值。分类抽样则依据某种属性的取值来选择数据子集,如按客户名称分类、按地址区域分类等。分类抽样的选取方式就是前面所述的几种方式,只是抽样以类为单位。
基于前面定义的餐饮行业的挖掘目标,需从客户关系管理系统、前厅管理系统、后厨管理系统、财务管理系统和物资管理系统抽取用于建模和分析的餐饮数据,主要包括:
餐饮企业信息:名称、位置、规模、联系方式,以及部门、人员、角色等;
餐饮客户信息:姓名、联系方式、消费时间、消费金额等;
餐饮企业菜品信息:菜品名称、菜品单价、菜品成本、所属部门等;
菜品销量数据:菜品名称、销售日期、销售金额、销售份数;
原材料供应商资料及商品数据:供应商姓名、联系方式、商品名称,以及客户评价信息;
促销活动数据:促销日期、促销内容、促销描述;
外部数据,如天气、节假日、竞争对手以及周边商业氛围等数据。
1.4.3 数据探索
前面所叙述的数据取样,多少是带着人们对如何实现数据挖掘目的的先验认识进行操作的。当我们拿到了一个样本数据集后,它是否达到我们原来设想的要求;其中有没有什么明显的规律和趋势;有没有出现从未设想过的数据状态;属性之间有什么相关性;它们可区分成怎样一些类别……,这都是要首先探索的内容。
对所抽取的样本数据进行探索、审核和必要的加工处理,是保证最终的挖掘模型的质量所必需的。可以说,挖掘模型的质量不会超过抽取样本的质量。数据探索和预处理的目的是为了保证样本数据的质量,从而为保证模型质量打下基础。
常用的数据探索方法主要包括两方面:数据质量分析;数据特征分析。
1.数据质量分析
数据质量分析是数据挖掘中数据准备过程的重要一环,是数据预处理的前提,也是数据挖掘分析结论有效性和准确性的基础,没有可信的数据,数据挖掘构建的模型将是空中楼阁。
数据质量分析的主要任务是检查原始数据中是否存在脏数据,脏数据一般是指不符合要求,以及不能直接进行相应分析的数据。在常见的数据挖掘工作中,脏数据包括:缺失值、异常值、不一致的值、重复数据及含有特殊符号(如#、¥、*)的数据。
(1)缺失值分析
数据的缺失主要包括记录的缺失和记录中某个字段信息的缺失,两者都会造成分析结果的不准确。使用简单的统计分析,可以得到含有缺失值的属性的个数,以及每个属性的未缺失数、缺失数与缺失率等。缺失值的处理,从总体上来说分为删除存在缺失值的记录、对可能值进行插补和不处理三种情况。
(2)异常值分析
异常值分析是检验数据是否有录入错误以及含有不合常理的数据。忽视异常值的存在是十分危险的,不加剔除地把异常值包括进数据的计算分析过程中,会给结果带来不良影响;重视异常值的出现,分析其产生的原因,常常成为发现问题进而改进决策的契机。异常值是指样本中的个别值,其数值明显偏离其余的观测值。异常值也称为离群点,异常值的分析也称为离群点分析。


95b620674749260072b4f5434a5a09f75a152184

图1-2 箱形图检测异常值箱型图提供了识别异常值的一个标准:异常值通常被定义为小于QL-1.5IQR或大于QU+1.5IQR的值。QL称为下四分位数,表示全部观察值中有1/4的数据取值比它小;QU称为上四分位数,表示全部观察值中有四分之一的数据取值比它大;IQR称为四分位数间距,是上四分位数QU与下四分位数QL之差,其间包含了全部观察值的一半。
箱型图依据实际数据绘制,没有对数据作任何限制性要求(如服从某种特定的分布形式),它只是真实直观地表现数据分布的本来面貌;另一方面,箱型图判断异常值的标准以四分位数和四分位距为基础,四分位数具有一定的鲁棒性:多达25%的数据可以变得任意远而不会很大地扰动四分位数,所以异常值不能对这个标准施加影响。由此可见,箱形图识别异常值的结果比较客观,在识别异常值方面有一定的优越性,见图1-2。
(3)数据一致性分析
数据不一致性是指数据的矛盾性、不相容性。直接对不一致的数据进行挖掘,可能会产生与实际相违背的挖掘结果。在数据挖掘过程中,不一致数据的产生主要发生在数据集成的过程中,可能是由于被挖掘数据是来自于从不同的数据源、对重复存放的数据未能进行一致性更新造成的。例如,两张表中都存储了用户的电话号码,但在用户的电话号码发生改变时只更新了一张表中的数据,那么这两张表中就有了不一致的数据。
2.数据特征分析
对数据进行质量分析以后,可通过绘制图表、计算某些特征量等手段进行数据的特征分析。数据特征分析主要包括:分布分析、对比分析、统计量分析、周期性分析、贡献度分析和相关性分析。
(1)分布分析
分布分析能揭示数据的分布特征和分布类型。对定量数据而言,欲了解其分布形式是对称的还是非对称的、发现某些特大或特小的可疑值,可做出频率分布表、绘制频率分布直方图、绘制茎叶图进行直观地分析;对于定性分类数据,可用饼图和条形图直观地显示分布情况。比如,针对餐饮系统的销售额、销量可以画出类似下面的图,如图1-3~图1-5所示。


fc2709b3d8e565337393ee82853e988d369f742e

对比分析是指把两个相互联系的指标进行比较,从数量上展示和说明研究对象规模的大小,水平的高低,速度的快慢,以及各种关系是否协调。特别适用于指标间的横纵向比较、时间序列的比较分析。在对比分析中,选择合适的对比标准是十分关键的步骤,选择得合适,才能做出客观的评价。
比如,针对餐饮系统中的菜品的销售数据,从时间的维度上分析,可以看到甜品部A、海鲜部B、素菜部C三个部门之间的销售金额随时间的变化趋势,了解在此期间哪个部门的销售金额较高,趋势比较平稳,如图1-6所示;也可以从单一部门(如海鲜部)做分析,了解各月份的销售对比情况,如图1-7所示。


8cd351b17bb2def6ef2ee2073275141530fc0d60

从总体来看,三个部门的销售金额呈递减趋势;A部门和C部门的递减趋势比较平稳;B部门的销售金额下降的趋势比较明显,可以进一步分析造成这种现象的业务原因,可能是原材料不足造成的。
(3)统计量分析
用统计指标对定量数据进行统计描述,常从集中趋势和离中趋势两个方面进行分析。平均水平的指标是对个体集中趋势的度量,使用最广泛的是均值和中位数;反映变异程度的指标则是对个体离开平均水平的度量,使用较广泛的是标准差(方差)、四分位间距。
(4)周期性分析
周期性分析是探索某个变量是否随着时间变化而呈现出某种周期变化趋势。时间尺度相对较长的周期性趋势有年度周期性趋势、季节性周期趋势,相对较短的有月度周期性趋势、周度周期性趋势,甚至更短的天、小时周期性趋势。
例如,要对某单位用电量进行预测,可以先分析该用电单位日用电量的时序图,来直观地估计其用电量变化趋势。
图1-8是某用电单位A在2014年9月日用电量的时序图;图1-9是用电单位A在2013年9月日用电量的时序图。


37f9f378d7423abc4fc8d11e8775dd8a1bc66998

总体来看,用电单位A的2014年9月日用电量呈现出周期性,以一周为周期,因为周六周日不上班,所以周末用电量较低。工作日和非工作日的用电量比较平稳,没有太大的波动。而2013年9月日用电量总体呈现出递减的趋势,同样周末的用电量是最低的。
(5)贡献度分析
贡献度分析又称帕累托分析,它的原理是帕累托法则(又称20/80定律)。同样的投入放在不同的地方会产生不同的效益。比如,对一个公司来讲,80%的利润常常来自于20%最畅销的产品,而其他80%的产品只产生了20%的利润。
就餐饮企业来讲,应用贡献度分析可以重点改善某菜系盈利最高的前80%的菜品,或者重点发展综合影响最高的80%的部门。这种结果可以通过帕累托图直观地呈现出来。图1-10是海鲜系列的10个菜品A1~A10某个月的盈利额(已按照从大到小排序)。


10254bfd1094b4a76988fc0b1dc0f2680b8ad95b

由上图可知,菜品A1~A7共7个菜品,占菜品种类数的70%,总盈利额占该月盈利额的85.0033%。根据帕累托法则,应该增加对菜品A1~A7的成本投入,减少对菜品A8~A10的投入以获得更高的盈利额。
(6)相关性分析
分析连续变量之间线性相关程度的强弱,并用适当的统计指标表示出来的过程称为相关分析。
判断两个变量是否具有线性相关关系的最直观的方法是直接绘制散点图。需要同时考察多个变量间的相关关系时,一一绘制它们间的简单散点图会十分麻烦。此时可利用散点图矩阵来同时绘制各变量间的散点图,从而快速发现多个变量间的主要相关性,这在进行多元线性回归时显得尤为重要。为了更加准确地描述变量之间的线性相关程度,可以通过计算相关系数来进行相关分析。在二元变量的相关分析过程中比较常用的有Pearson相关系数、Spearman秩相关系数和判定系数。
1.4.4 数据预处理
当采样数据维度过大时,如何进行降维处理、缺失值处理等都是数据预处理要解决的问题。
由于采样数据中常常包含许多含有噪音、不完整、甚至不一致的数据,对数据挖掘所涉及的数据对象必须进行预处理。那么如何对数据进行预处理以改善数据质量,并最终达到完善最终的数据挖掘结果的目的呢?
常用的数据预处理主要包括:数据清洗、数据集成、数据变换、数据规约等。
1.数据清洗
数据清洗主要是删除原始数据集中的无关数据、重复数据,平滑噪音数据,筛选掉与挖掘主题无关的数据,处理缺失值、异常值等。
(1)缺失值处理
处理缺失值的方法可分为三类:删除记录、数据插补和不处理。如果通过简单的删除小部分记录达到既定的目标,那么删除含有缺失值的记录这种方法是最有效的。然而,这种方法却有很大的局限性。它是以减少历史数据来换取数据的完备,会造成资源的大量浪费,丢弃了大量隐藏在这些记录中的信息。尤其在数据集本来就包含很少记录的情况下,删除少量记录就可能会严重影响到分析结果的客观性和正确性。所以,很多情况下,原始数据集中的缺失值需要使用算法进行插补,典型的数值缺失值插补算法有拉格朗日插值和牛顿插值法。不过,一些模型可以将缺失值视作一种特殊的取值,允许直接在含有缺失值的数据上进行建模。
(2)异常值处理
异常值处理将含有异常值的记录直接删除这种方法简单易行,但缺点也很明显,在观测值很少的情况下,这种删除会造成样本量不足,可能会改变变量的原有分布,从而造成分析结果的不准确。视为缺失值处理的好处是可以利用现有变量的信息,对异常值(缺失值)进行填补。很多情况下,要先分析异常值出现的可能原因,再判断异常值是否应该舍弃,如果是正确的数据,可以直接在具有异常值的数据集上进行挖掘建模。
2.数据集成
数据挖掘需要的数据往往分布在不同的数据源中,数据集成就是将多个数据源合并存放在一个一致的数据存储(如数据仓库)中的过程。在数据集成时,来自多个数据源的现实世界实体的表达形式是不一样的,有可能不匹配,要考虑实体识别问题和属性冗余问题,从而将源数据在最低层上加以转换、提炼和集成。
3.数据变换
数据变换主要是对数据进行规范化处理,将数据转换成“适当的”形式,以适用于挖掘任务及算法的需要。常用的数据变换方法有:简单函数变换、规范化、连续属性离散化、属性构造、小波变换。
(1)简单函数变换
简单函数变换是对原始数据进行某些数学函数变换,常用的包括平方、开方、取对数、差分运算等。简单的函数变换常用来将不具有正态分布的数据变换成具有正态分布的数据;在时间序列分析中,有时简单的对数变换或者差分运算就可以将非平稳序列转换成平稳序列。在数据挖掘中,简单的函数变换可能更有必要,比如,个人年收入的取值范围为10000元到10亿元,这是一个很大的区间,使用对数变换对其进行压缩是常用的一种变换处理。
(2)规范化
数据标准化(归一化)处理是数据挖掘的一项基础工作。不同评价指标往往具有不同的量纲和量纲单位,数值间的差别可能很大,不进行处理可能会影响到数据分析的结果。为了消除指标之间的量纲和取值范围差异的影响,需要进行标准化处理,将数据按照比例进行缩放,使之落入一个特定的区域,便于进行综合分析。如将工资收入属性值映射到[-1,1]或者[0,1]内。常用的规范化方法有:最小-最大规范化、零均值规范化、小数定标规范化。
(3)连续属性离散化
一些数据挖掘算法,特别是某些分类算法(如ID3算法、Apriori算法等),要求数据是离散属性形式。这样,常常需要将连续属性变换成离散属性,即连续属性离散化。连续属性的离散化就是在数据的取值范围内设定若干个离散的划分点,将取值范围划分为一些离散化的区间,最后用不同的符号或整数值代表落在每个子区间中的数据值。所以,离散化涉及两个子任务:确定分类数以及如何将连续属性值映射到这些分类值。常用的连续属性离散化方法有:等宽法、等频法、(一维)聚类。
(4)属性构造
在数据挖掘的过程中,为了帮助提取更有用的信息、挖掘更深层次的模式,提高挖掘结果的精度,需要利用已有的属性集构造出新的属性,并加入现有的属性集合中。
(5)小波变换
小波变换是一种新型的数据分析工具,是近年来兴起的信号分析手段。小波分析的理论和方法在信号处理、图像处理、语音处理、模式识别、量子物理等领域得到越来越广泛的应用,它被认为是近年来在工具及方法上的重大突破。小波变换具有多分辨率的特点,在时域和频域都具有表征信号局部特征的能力,通过伸缩和平移等运算过程对信号进行多尺度聚焦分析,提供了一种非平稳信号的时频分析手段,可以由粗及细地逐步观察信号,从中提取有用信息。
4.数据规约
在大数据集上进行复杂的数据分析和挖掘将需要很长的时间,数据规约产生更小的但保持原数据完整性的新数据集。在规约后的数据集上进行分析和挖掘将更有效率。数据规约可以降低无效、错误数据对建模的影响,提高建模的准确性;缩减数据挖掘所需的时间;降低存储数据的成本。
数据规约主要包括:属性规约和数值规约。
(1)属性规约
属性规约通过属性合并创建新属性维数,或者直接通过删除不相关的属性(维)来减少数据维数,从而提高数据挖掘的效率、降低计算成本。属性规约的目标是寻找出最小的属性子集并确保新数据子集的概率分布尽可能接近原来数据集的概率分布。
(2)数值规约
数值规约通过选择替代的、较小的数据来减少数据量,包括有参数方法和无参数方法两类。有参数方法是使用一个模型来评估数据,只需存放参数,而不需要存放实际数据,例如,回归(线性回归和多元回归)和对数线性模型(近似离散属性集中的多维概率分布)。无参数方法就需要存放实际数据,例如直方图、聚类、抽样(采样)。
1.4.5 挖掘建模
样本抽取完成并经预处理后,接下来要考虑的问题是:本次建模属于数据挖掘应用中的哪类问题(分类、聚类、关联规则、时序模式或者智能推荐)?选用哪种算法进行模型构建?
这一步是数据挖掘工作的核心环节。针对餐饮行业的数据挖掘应用,挖掘建模主要包括基于关联规则算法的动态菜品智能推荐、基于聚类算法的餐饮客户价值分析、基于分类与预测算法的菜品销量预测、基于整体优化的新店选址。
以菜品销量预测为例,模型构建是基于菜品历史销量,综合考虑节假日、气候和竞争对手等采样数据轨迹的概括,它反映的是采样数据内部结构的一般特征,并与该采样数据的具体结构基本吻合。模型的具体化就是菜品销量预测公式,公式可以产生与观察值有相似结构的输出,这就是预测值。
挖掘建模部分具体见第6章。
1.4.6 模型评价
从上面的建模过程中会得出一系列的分析结果,模型评价的目的之一就是从这些模型中自动找出一个最好的模型出来,另外就是要根据业务对模型进行解释和应用。
对分类与预测模型和聚类分析模型的评价方法是不同的。分类与预测模型对训练集进行预测而得出的准确率并不能很好地反映预测模型未来的性能,为了有效判断一个预测模型的性能表现,需要一组没有参与预测模型建立的数据集,并在该数据集上评价预测模型的准确率,这组独立的数据集叫测试集。模型预测效果评价,通常用相对绝对误差、平均绝对误差、根均方差、相对平方根误差等指标来衡量。聚类分析仅根据样本数据本身将样本分组。其目标是,组内的对象相互之间是相似的(相关的),而不同组中的对象是不同的(不相关的)。组内的相似性越大,组间差别越大,聚类效果就越好。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:

华章出版社

官方博客
官网链接