配色: 字号:
大数据与数据挖掘(3)
2022-01-31 | 阅:  转:  |  分享 
  
大数据与数据挖掘(3)

胡经国



构建有指导的数据挖掘模型

㈠、概述

本文探讨有指导的数据挖掘模型,包括什么是有指导的数据挖掘模型以及如何构建有指导的数据挖掘模型。构建一个有指导的数据挖掘模型,首先要理解和定义一些模型试图估计的目标变量。在这里,引用一个典型的案例:二元响应模型——为直接邮寄和电子邮件营销活动选择客户的模型。该模型的构建选择历史客户数据;这些客户响应了以前类似的活动。有指导的数据挖掘的目的就是要找到更多类似的客户,以提高未来活动的响应。

构有指导的数据挖掘模型的过程包括以下几个具体步骤:①、定义模型的结构和目标增加响应建模、考虑模型的稳定性、通过预测模型、剖析模型来讨论模型的稳定性。方法

1、把业务问题转换为数据挖掘问题;2、选择合适的数据;3、认识(了解)数据;4、创建一个模型集;5、修复(修正)问题数据;6、转换数据以揭示信息;7、构建模型;8、评估模型;9、部署模型;10、评估结果。然后,重新开始。步骤、把业务问题转换为数据挖掘问题

有指导数据挖掘项目的目标就是要找到定义明确的业务问题的解决方案。一个特定的数据挖掘项目的目标不应该是广泛的、通用的条例,而应该把那些广泛的目标加以具体化细化;而深入观察客户行为则可能变成具体的目标:①、确定谁是不大可能续订的客户;②、为以家庭为基础的企业客户设定一个拨打计划该计划将减少客户的退出率;③、确定那些网络交易可能是欺诈;④、如果葡萄酒和啤酒已停止销售,列出处于销售风险的产品;⑤、根据当前市场营销策略,预测未来三年的客户数量。

有指导数据挖掘往往作为一个技术问题,即是要找到一个模型以解释一组输入变量与目标变量的关系。这往往是数据挖掘的中心。但是如果目标变量没有正确的定义以及没有确定适当的输入变量。反过来,这些任务又取决于对要解决的业务问题的理解程度。没有正确的理解业务问题就没有办法把数据转化为挖掘任务。在技术开始之前,必须认识两个问题如何使用结果以何种方式交付结果上述两个问题都是建立在客户的真正需求如何使用结果

例如,目标:许多数据挖掘工作旨在提高客户保留;主动向高风险或高价值的客户提供一个优惠,挽留他们;改变获取渠道的组合,以利于那些能带来最忠实客户的渠道;预测未来几个月的客户数量;改变会影响客户的满意度的产品的缺陷。

这些目标都会对数据挖掘过程产生影响。通过电话或直接邮寄的营销活动接触现有客户,意味着除了确定客户风险之外,你要了解为什么他们处于风险中,从而可以构造一个有吸引力的优惠。电话,不能过早或过迟。预测意味着除了确定那些客户可能离开,确定有多少新客户加入,以及他们会停留多久。而新客户的加入,不只是意味着预测模型要解决的问题,还是要将其纳入到业务目标和预算之中。如何交付结果

有指导的数据挖掘项目可能会产生几个不同类型的交付形式。交付形式往往是一个报表或充满图标和图形的简报。交付形式会影响数据挖掘的结果。当我们的目的是提醒销售惊雷时,产生一个营销测试的客户列表是不够的。所谓如何交付结果,就是在挖掘结果产生之后,要如何给用户提供这个结果目的是好的,但是在实际的过程中会遇到我们没有办法去交付这个结果的情况。因为,你交付的结果可能会导致一些本不该流失的客户却流失了。这也是在具体工作之前我们要考虑的问题。

数据挖掘人员的作用是确保业务问题的最后表述可以被转换成一个技术问题,而前提是要找到正确的业务问题。

2、择合适的数据什么数据可用

①、企业数据仓库

寻找客户数据的首要地方就是企业数据仓库。仓库中的数据已经被清洗和核实过,并且多个数据源被整合到一起。一个单一的数据模型有望确保命名相似的字段在整个数据库和兼容的数据类型中都有相同的含义。企业数据库是一个历史数据库,新数据不断被追加,但是历史数据一直不变。这一点更有利于做决策支持。

②、不同部门的数据库和业务系统数据

问题在于在许多企业组织中,这样的数据仓库实际上并不存在或者存在一个或多个数据仓库,但是不符合直接作为规范的数据用来挖掘。在这种情况下,挖掘人员必须寻求来自不同部门的数据库和业务系统内的数据。业务系统数据是指执行一个特定任务的数据,如网站运行,索赔处理,完成呼叫或账单处理的数据。它们的目标是快速、确处理事务,数据可保存为任何格式。而对于没有数据仓库的一些企业来说,这些数据往往藏得很深,需要大量的企业调度和规划来整理这些数据。

这也就涉及到一个问题,就是数据仓库对一家企业的重要性建立企业级数据仓库需要的决策,并不是一个经理就可以完成的这可能需要企业级最高领导下令,下面的所有部门全部配合。

③、确定什么数据可用需要怎么做?

在企业确定哪些数据可用是相当困难的。因为许多的文档会丢失或过时。在通常情况下,没有一个人可以提供所有答案。确定什么数据可用,需要遍历数据字典,了解具体的业务,沟通每个部门,访问用户和DBA,审查现有的报告以及查找数据本身是否有用。还有一些问题,不仅需要有关客户的数据,还需要潜在客户的数据。当需要这些数据的时候,外部资源和业务系统如Web日志、呼叫详细记录、呼叫中心系统、有时甚至是邮件或电子表格,这些都是数据信息的来源。

④、数据挖掘工作的方式

数据挖掘工作的方式并不是一直要等到有了完美和干净的数据才进行下一步工作。虽然需要格外干净的数据,但是挖掘必须能够使用目前的数据,提前入手,开始工作。多少数据才足够、数据越多越好

在建模期间,必须对模型集进行平衡,使得每个结果的数目都相等。如果在一个大规模样本中有一个比例很小的稀有数据,一个较小的、均衡的样本会更受欢迎。、在模型确定后数据并不是越多越好

当模型集足以建立良好、稳定的模型时,使它更大将会产生相反的作用因为这时需要更长时间在更大模型上去运行由于数据挖掘是一个反复的过程,因而这会导致时间的浪费。如果一次建模例程的运行都需要数小时而不是数分钟,这个时间的消耗就是耗不起的。这将导致在模型确定后数据并不是越多越好。需要多久历史

数据挖掘是使用过去的数据预测未来。但是,数据需要来自多久的过去这个没有定性的回答这需要考虑很多的因素。另一方面,历史太久的数据未必对数据挖掘有用因为市场环境在变化,特别是当一些外部事件如监管制度的变化进行了干预时尤其如此。对于许多以客户为中心的应用,23年的历史是合适的。然而,在这种情况下,客户关系确实存在有效才能被证明是有价值的那么重要的是:最初的渠道是什么最初的报价是什么客户最初怎么支付的?等等。

①、多少变量

不熟练数据挖掘的人员有时太急于抛出不太可能有意义的变量且只保存了他们认为重要的几个精心挑选的变量。数据挖掘方法要求数据本身要能够揭示它重要或是不重要。

②、被忽视的变量

在通常情况下当与其他变量结合使用时,原先被忽视的变量会具有预测价值。例如,一个信用卡持卡者从未把现金刷没又继续刷通过数据挖掘发现他们仅在11月和12月才会使用信用卡垫付。据推测,这些人非常谨慎,大部分时间他们都避免因多刷而产生的高利息,谨慎也推断出一个结论他们比习惯使用现金垫款的人更加不太可能选择拖欠欠款但是在假期,他们需要一些额外的现金,并愿意为此付出较高的利息。数据必须包含什么

就最低限度而言,数据必须包含有可能有意义的结果的例子。有指导的数据挖掘的目的,是预测一个特定目标变量的值但是,在有指导的数据挖掘中,模型集必须由分类好的数据组成。需要区分哪些人拖欠贷款哪些人不可能拖欠,模型集的每个类都需要有成千上万的例子。当一个新的申请产生时,他的申请会与过去的客户申请进行对比,可以直接把新的申请归类。这其中隐含的意思是,数据可用来形容过去发生了什么事情,从错误吸取教训,首先我们必须识别我们已经犯了什么错误。

3、认识(了解)数据

在数据用于构建模型之前,在探索数据上花费时间的重要性通常没有得到足够的重视。后面我们会用较多的篇幅来说明这个问题。优秀的数据挖掘工程师似乎非常依赖直觉例如,在某种程度上能够猜测将要派生的变量结果如何。要在陌生的数据集中利用直觉来感应发生了什么事情,唯一办法就是深入数据之中你会发现许多数据质量的问题,并能够得到启发提出在其他情况下不容易被发现的问题。检查分布

在数据库初步探索阶段,数据可视化工具非常有益,如散列图、条形图、地理地图、Excel等可视化工具对观察数据提供了强大的支持。

当你开始着手分析一个新数据源中的数据文件,就应该剖析数据了解到底发生了什么,包括计数和每个字段的汇总统计,分类变量不同值的数量并在适当的情况下,需要基于产品和区域的交叉统计表。除了提供对数据的了解,剖析工作可能会产生不一致问题或定义问题的警告这些问题可能会对后面的分析造成麻烦。值与描述的比较

观察每个变量的值,并把它们与现有文件中的变量描述进行比较。这项工作可以发现不准确或不完整的数据描述。这就是,你记录的数据是否和你要描述的数据一致,这个要先确定。目的是什么在实际的数据挖掘过程中,你要去揣测这个字段的数据到底是什么意思如果业务人员知道,那么是最好的了。如果业务人员都不知道,那么可能就需要凭借经验去揣测了而且字段定义不明确这种情况会经常发生。询问大问题

如果数据看上去似乎不明智或者不如所愿,记录下来。数据探索过程的一个重要输出是对提供该数据的人给出一个问题列表。通常,这些问题将需要进一步研究因为很少有用户像数据挖掘工程师一样仔细地观察数据。对数据探索的前期工作,判断字段含义是否有用,是否缺失,是否有问题等一系列问题需要大量的工作,同时也是一个心细的过程。

4、创建一个模型集

模型集包含建模过程中使用的所有数据。模型集中的一些数据被用来寻找模式对于一些技术,模型集中的一些数据被用来验证该模型是否稳定。模型集也可用来评估模型的性能。创建一个模型集需要从多个数据源聚合数据以形成客户签名然后准备数据进行分析。聚合客户签名

模型集是一个表或一系列表每一行表示一个要研究的项目而字段则表示该项目有利于建模的一切。

当数据描述客户时,模型集的行通常称为客户签名。对于客户签名,每个客户都由他离开的踪迹来唯一确定你可以利用踪迹充分的了解每个客户。

在关系型数据库中聚合客户签名需要复杂的查询这些查询往往需要关联很多的表去查询数据然后利用其他来源的数据增强结果。聚合数据的一部分过程是使数据位于正确的汇总层次然后每一行都包含关客户的所有信息。创建一个平衡的样本

①、“离群点”

在标准的统计分析中,一种常见的做法是抛弃“离群点”远远超出正常范围的观测值。

然而在数据挖掘的过程中,这些群点可能正是你正要找的。或许们带有欺诈行为,可能是你的业务中的一些错误;或者是一些利润惊人的市场商机。在这种情况下,我们不希望抛弃离群点,而要认识和了解它们。

②、平衡样本方法

知识发现算法需要通过实例来进行学习。如果没有足够数量的关于某个特定类或行为模型的例子,那么数据挖掘工具无法得出一个预测该类或行为模型的模型。在这种情况下,需要利用罕见事件的例子丰富该模型集,以提高建模中该事件的概率。如果比较罕见,那么有两种方法可以平衡样本:分层抽样和权重。

例如:银行要建立一个模型,以便确定哪些客户是私人银行计划的潜在客户。这些计划只针对非常富有的客户他们在一个相当大的银行客户样本中也是非常稀少的。如何构建一个能发现这类用户的模型该模型集可能需要有50%的私人银行的客户,即使他们代表所有支票份额中还不到1%。另外私人银行客户可能被赋予一个值为1的权重其他客户的权重为0.01所以专有客户的总权重等于其余客户的总权重。通过增加一些孤立点客户的权重,从而达到模型对数据的合理梳理。时间帧

基于一个时间段内的数据建立模型会增加风险,即学习的知识不真实。结合模型集中的多个时间帧可以消除季节性因素的影响。由于季节性影响如此重要,因此应该把它们明确地添加到客户签名中。还有假日购物模式也非常重要。把客户的信息按照时间细分,或是在相应的数据上打上标签。创建一个预测模型

当模型集用来预测时,另一个问题是:模型集应包含多长时间,时间段该如何划分?

任何客户标签在预测变量和目标变量之间都应该有一个时间差。时间可分为:过去、现在、将来。当然所有数据都来自过去;过去又可分为三个时期:遥远的过去、不太遥远的过去和最近。

预测模型就是要发现遥远的过去的模型,用来解释最近的输出。当部署模型时,它能够使用最近的数据预测未来。

如果构建一个模型来利用6月份不太遥远的过去的数据对7月份最近进行预测,那么在8月份之前的数据是可用的,它不能用来对9月份进行预测。但是8月份的数据是不可用的因为这时数据仍在产生数据。也不会是9月份的第一周因为这些数据需要被收集、清洗、加载、测试和认可。8月份的数据可能要9月份中旬或10月才能用;到这个时候,没人会担心9月份的预测了。解决的办法是在模型集之中跳过1个月。创建一个剖析模型集

剖析模型集与测试模型相似但有一点差别:目标的时间帧与输入的时间帧重叠。看起来是微小的差别对建模工作的影响却很大。因为输入可能会污染目标模式。例如:银行拥有投资账户的客户在储蓄账户中往往有非常低的结余因为他们能从投资账户中得到更好的回报。这是否意味着银行要为了投资账户而识别低存储账户余额的客户呢可能不需要,因为这些客户的资产很少。

解决这个问题的一种方法是非常仔细选择剖析模型的输入。把所有账户余额组合到储蓄贷款两组。储蓄组包括所有类型的储蓄和投资。这种方法非常有效,事实证明模型是稳定的。

一个更好的办法是:在开通投资账户之前对账户产生一个模型。一个并发的问题是:由于每一个客户的时间帧都取决于客户开通账户的时间,因而建立这样一个模型集面临更多的困难。

如果目标变量的时间帧与输入变量的时间帧相同,那么该模型是一个剖析模型并且这个输入可能会引入一些似是而非的模式,而这些模式可能会混淆数据挖掘技术。你需要非常小心地选择输入或者重建模型集来产生预测模型。划分模型集

在你从适当的时间帧中获得预分好的数据以后,有指导的数据挖掘把模型集分为以下三个数据集:、训练集,用建立初始模型。、验证集,用于调整初始模型,减少其与训练集特性的额绑定,从而更具一般性。、测试集,用来衡量模型应用与未知的数据时可能产生的效果。三个数据集是必要的因为若某个数据已在此过程中的某一步使用过,那么它包含的信息就已经成为模型的一部分。因此,它不能用来修正或判断模型。

我们往往很难理解为什么训练集和验证集在被用来建立模型之后就会成为污点。这就好比你参加考试,你认为这道题你做是正确的,老师让你去预测考试成绩,你显然认为分数很高因为你认为,如果没有答案,第二天在参加同样的考试,你的想法不会改变。这时候,你的系统中没有一个新的标准这时,你需要的是一个验证集。现在,在想象一下测试结果以后,估分之前老师让你看看你同学的几个试卷。如果他们都和你的结果不一样,这时候,你可能会把你自己的答案标记为一个错误的答案。如果第二天老师给出了正确的结果,这个时候让你再去做同样的的试卷,你可能得出的就是不同的结果。这就是为什么验证集应该不同于测试集的原因。

对于预测模型,一个好的主意是:测试集所在的时间段与训练集和验证集所在的时间段不同。一个模型的稳定性证据在于它在连续的月份中都能够良好运行。来自不同时间段的测试集,也称为不合时宜的测试集虽然这样的测试集并不总是可用但是它是验证模型稳定性的一个很好的方法。







7







献花(0)
+1
(本文系胡经国图书...原创)