数据挖掘SAS逻辑回归.docx
《数据挖掘SAS逻辑回归.docx》由会员分享,可在线阅读,更多相关《数据挖掘SAS逻辑回归.docx(19页珍藏版)》请在冰豆网上搜索。
数据挖掘SAS逻辑回归
一、摘要
数据挖掘就是对观测到的庞大数据集进行分析,目的是发现未知的关系和以数据拥有者可以理解并对其有价值的新颖方式来总结数据。
一个数据挖掘工程需要足够的软件来完成分析工作,为了计划、实现和成功建立一个数据挖掘工程,需要一个集成了所有分析阶段的软件解决方案,包括从数据抽样到分析和建模,最后公布结果信息。
大部分专业统计数据分析软件只实现特定的数据挖掘技术,而SAS9.1.3EnterpriseMiner是一个集成的数据挖掘系统,允许使用和比较不同的技术,同时还集成了复杂的数据库管理软件。
用逻辑回归分类方法预测最有可能购买的顾客群体。
【关键字】数据挖掘数据挖掘工程SAS9.1.3EnterpriseMiner逻辑回归
二、问题描述
作为某商品类目公司的市场分析师,你可能需要为二值目标变量(purchase)建立逻辑回归模型,判断某个顾客是否会产生购买。
输入数据集存放在SAS安装文件SAMPSIO.CUSTDET1中。
该逻辑回归模型产生的打分公式应用在新的数据集中,给那些可能产生购买的顾客发送邮件。
三、创建一个工程
3.1调用EM
启动SAS系统后,有两种方式调用EM,一种是通过菜单调用,一种是通过在命令窗口输入命令调用。
我采用第一种调用方法:
在SAS系统主菜单中选择“解决方案—〉分析—〉企业数据挖掘”。
3.2新建一个工程
在EM窗口打开后,建立一个新数据挖掘工程的步骤如下:
(1)在SAS主菜单中选择“文件—〉新建—〉项目”,会出现建立新项目的对话框,在Createnewproject窗口中的Name域输入DiningList。
(如图1所示)
图1
(2)单击Create按钮后,DiningList工程名将显示在EM窗口的左侧,下面是默认的工作流的名称Untitled,单击Untitled输入新的工作流名称Propensity,如下图2所示,则一个名为Propensity的工作流程就建立起来了。
图2
四、数据挖掘工作流程
EM工作流程主要包括六个环节:
定义数据源(InputDataSource)、探索数据(Exploredata)、为建模准备数据(Preparedataformodeling)、建立模型(Buildmodel)、评价模型(Evaluatemodel)和应用模型(Applymodel),每个环节可能由一个或多个节点来完成。
4.1定义数据源
EM定义数据源的工具是InputDataSource节点,利用InputDataSource节点引入一个数据源的过程如下:
(1)添加输入数据源节点,如图3所示。
图3
(2)设置SAMPSIO.CUSTDET1数据集作为输入数据源,如图4所示。
图4
可以看到当选择完数据源以后,EM会自动创建节点输出数据和元数据样本。
元数据样本的默认容量(size)是2000,当数据源的记录小于2000时,元数据容量会等于数据源的大小。
如果需要改动元数据样本大小可以通过单击change按钮实现。
(3)选择完数据源后关闭InputDataSource,单击“是”按钮保存修改返回到EM工作区,EM会自动将InputDataSource节点名称改为所选数据集的名称。
(如图5所示)
图5
4.2探索数据
数据源中的缺失值、边界值、不规则分布都可能会影响到挖掘得建模甚至歪曲挖掘得结果。
所以,清楚的了解数据源的内容和结构对于建立一个数据挖掘项目来说是非常重要的。
4.2.1设置Insight节点
EM实现探索数据的步骤如下:
(1)将Insight节点拖拽到工作区中方在名为SASUSER.CUSTDET1的InputDataSource节点下方,并连接InputDataSource节点和Insight节点。
(如图6所示)
图6
(2)双击Insight节点,出现InsightSettings窗口(如图7所示)。
图7
由于不同的数据源的数据量可能不同,而且有些数据源的数据量可能是非常巨大的,所以Insight节点默认抽取2000条数据记录来探索数据源,当数据源的记录数小于2000时,可以选择InsightBasedOn设置中的Entiredataset来改变探索数据的样本数量。
(3)单击Entiredataset后关闭InsightSettings窗口,在弹出对话框中单击“是”保存设置。
4.2.2察看Insight节点输出结果
当设置完Insight节点之后,通过运行该节点可以查看探索数据的结果,其过程如下:
(1)运行Insight节点,其运行结果如图8所示。
图8
(2)选择分析变量。
出现的变量的分布窗口包括每个变量的分布图和一些重要的统计变量以及一组分位数。
(如图9所示)
图9
在这个例子中我们重点要看的是DINING的分布。
可以看到DINING的值从0到28,0值居多。
那么我们要建立预测客户购买Dining产品倾向的模型,应该把目标锁定在目标变量Dining的值大于0的客户身上。
(3)数据探索完毕,关闭分布窗口和EMDATA.VIEW_QMY窗口返回到EM工作区。
4.3准备建模数据
此例将准备建模数据阶段分成了四个环节:
建立目标变量、设置目标变量、数据分割和替换缺失值。
4.3.1建立目标变量
前面已经分析了我们的目标人群是Dining变量大于0的客户群,但是对于目前数据集SASUSER.CUSDET1中的Dining变量的值是从0到28的一个分布,而我们只关心Dining值大于或者小于0,所以这里要对Dining变量作个转换,让大于0的Dining值为1。
EM中用来建立变量的工具是TransformVariables节点,步骤如下:
(1)将TransformVariables节点拖拽到工作区中InputDataSource节点的右侧连接InputDataSource节点到TransformVariables节点。
(如图10所示)
图10
(2)双击TransformVariables节点,出现Transformvariables窗口。
(3)单击工作区上方工具栏中的Createvariable图标
,出现CreateVariable窗口
(4)在Name区域输入Dinebin,在Label区域输入DiningNo/Yes
(5)单击Define,出现Customize窗口(如图11)。
图11
(6)在DINEBIN(N)=formula域中输入“dining〉0”
(7)单击OK按钮,关闭TransformVariable窗口,选择“是”保存修改,则DINEBIN即为我们建立好的目标变量。
4.3.2设置目标变量
EM实现对目标变量的设置使用的工具是DataSetAttributes节点
(1)将DataSetAttributes节点拖放到TransformVariable节点右侧,并连接TransformVariable节点到DataSetAttributes节点。
(如图12)
图12
(2)单击Variables标签后,找到DINEBIN变量,右单击DINEBIN变量的NewModelRole属性(input值),选择弹出菜单中的SetNewModelRole,选择target,则原来的input值变为target值。
(如图13)
图13
在这个建立和设置目标变量的过程中隐藏着一个问题。
DINEBIN的值是建立在DINING的基础上的,而DINGING的值又是建立在另外三个变量KITCHEN,DISHES和FLATWARE的基础上的,这将导致目标变量与这四个预测变量之间的完全线性相关。
这样就产生了一个逻辑循环,即输入导出的预测值是我们已知的,也就是说这种输入的结果是我们通过已知变量就可以知道的,而失去了预测的意义。
所以,在我们建立预测模型时必须将形成目标变量的四个变量排除在外。
(3)在DataSetAttributes窗口中将KITCHEN、DISHES、FLATWARE和DINING的NewModelRole属性值改为rejected。
如图14所示。
图14
EM建立预测模型要求确定变量的数据类型。
EM能够识别的数据类型有五种:
unary——只有唯一值型、binary——只有两个值型、nominal——两个以上的无序非数字值型、ordinal——多于两种情况的小于10的数值型和interval——大于10的数值型。
(4)将DINEBIN变量的NewMeasurement属性值被改为binary。
如图15所示。
图15
在我们建模的时候,EM会默认目标事件为目标变量排序的第一个值,默认排序方法为升序。
我们这里的目标变量DINEBIN只有0和1值,1值代表对厨房用品的购买。
所以这里需要将目标变量按降序排列来锁定那些有购买倾向的客户群。
(5)将DINEBIN变量的NewOrder属性值改为Descending。
如图16所示。
图16
当设置好目标变量的元数据特征(包括数据类型,排序等)后,下一步我们要对目标变量的商业属性进行设置。
由于我们对目标变量的预测值将涉及到我们的商业决策,而任何商业决策都要承担一定的成本。
建立数据挖掘预测模型,明确预测模型的隐含成本是非常重要的,因为错误的预测结果与真实结果巧合相同的概率太小了,我们更不应该存有这种侥幸心理。
在本例中,生产、印刷和邮寄一份宣传单的成本为$10;
每份宣传单的收入为$90;
这样的话,我们的预测将涉及到如下的产出:
正确的预测:
发出目录,客户购买,平均利润为$80(90-10);
错误的预测:
发出目录,客户没有购买,固定成本为$10;
任何模型的建立都必须考虑到正确的预测和错误的猜测所带来的不同结果,在应用一个预测模型之前,必须明确商业问题的成本结构及其对建模的含义。
EM提供了一种直接定义“收入—成本”矩阵的方法
(6)在选择Maximizeprofitwithcosts,将Decision为1的Cost值改为10;其他内容不变。
(如图17)
图17
此处修改EditingDecisionsandUtilities的含义为:
当DINEBIN值为1的时候,我们会发出邮件,那么我们的固定成本为$10;而当DINEBIN为0时,我们不发出邮件,那么成本为0。
(7)当设置好成本矩阵后,我们接下来要做的是确定期望收入
在TargetProfilesforDINEBIN窗口中,Name域下面的LEVEL矩阵中,行属性1代表有购买行为,0代表没有购买;列属性1代表有目录发出,0代表没有目录发出。
所以,对于本例,LEVEL都为1时,表示有目录发出同时客户购买,那么按照前面我们分析过的目标变量的商业属性,此时将有$90的期望收入;当LEVEL的值都为0以及LEVEL行为0,列为1时,没有购买行为,所以将产生0收入;而LEVEL行为1,列为0时,表示没有订单发出却产生购买,这显然是个不合理的结论,所以保持它的值。
执行图18所示操作。
图18
在TargetProfilesforDINEBIN窗口中可能涉及到的最后一个设置是Prior标签。
对于商业建模来说,我们要挖掘的数据量可能是非常巨大的,可能会涉及到抽样的过程,我们这里使用的CUSTDET1本身是对原有数据集的随机抽样,这种随机抽样可能会导致目标变量分布的改变。
例如在本例中,总体数据中的目标变量占12%,而通过抽样得到的CUSDET1中,TARGET所占百分比达到了54%,这种抽样保留了更多的TARGET事件,被称作OverSampling。
OverSampling对于TrainingData有足够的数据来建模是有必要的,但是对于测试数据,则需要在EM中指出原有数据的TARGET的真实分布。
解决这个问题我们是通过设置Prior标签来实现的。
(8)在TargetProfilesforDINEBIN窗口中,新增加的Priorvector选项,将其右侧的TargetValue为1和0的PriorProbability的值改为0.12和0.88。
4.3.3数据分割
EM实现数据分割的工具是DataPartition。
(1)将DataPartition节点拖到工作区中,放到DataSetAttribute的右边,连接DataSetAttribute节点到DataPartition节点;双击DataPartition节点,窗口中默认出现Partition标签,将标签中的设置修改如图19所示:
图19
其中,Method表示选择划分训练数据、检验数据和测试数据的方法,此处选择随机抽取数据,Percentages表示分割后的不同角色数据集所占的比例,对于RandomSeed,可以通过单击GenerateNewSeed按钮来改变产生种子的方式。
(2)关闭窗口,保存修改,完成数据分割。
4.3.4替换缺失值
由于EM中的很多建模工具,包括回归模型和神经网路模型在建模的过程中会忽略含有缺失值的记录,这样会缩减训练数据集参与预测建模的数据量。
所以,在使用回归模型工具之前必须对缺失值进行处理。
EM处理缺失值的工具是Replacement节点
(1)将Replacement节点拖到工作区中,连接DataPartition节点到Replacement节点,如图20所示。
图20
(2)双击Replacement节点,出现Replacement窗口,默认出现的是Defaults和General标签,如图21所示。
图21
EM在运行Replacement节点的时候,首先会生成一个训练数据的随机样本,在这个样本的基础上,按照如下规则替换缺失值:
⏹Interval类型的变量,用样本均值替换缺失值;
⏹Binary、nominal和ordinal类型的变量,用样本中的高频值替换缺失值。
有些数据存储,采用特殊值代替缺失值,比如所有的缺失值都用999代替,这种情况下,我们可以通过选择Replacebeforeimputation,同时在Constantvalues二级标签里面进行缺失值替换规则设置,本例中不涉及到替换规则的改变
(3)单击Createimputedindicatorvariables选项左侧的方框,选择此框后,当运行Replacement节点的时候,系统会生成一系列以M为前缀的Binary类型的变量,当某个观测中的某个变量为缺失值的时候,那么系统会将与缺失值变量相关联的以M开头的Binary变量的值赋成“1”,这样,对于回归模型,就可以用这些替代值来建模了。
(4)关闭Replacement窗口,保存修改。
4.4建模
EM实现回归建模的工具是Regression节点。
回归包括线性回归和逻辑回归,当目标变量为ordinal或者binary类型的数据的时候,即目标变量为非连续变量的时候,所以我们应该采用逻辑回归建模。
(1)将Regression节点拖到工作区中放到Replacement节点的下方,连接Replacement节点到Regression节点,如图22所示。
图22
(2)双击Regression节点出现Regression窗口,默认出现的是Variables标签。
由于Regression节点的默认模型是逻辑回归,所以无需再对ModelOptions标签进行设置,此处要设置的是SelectionMethod标签。
常用的三种逐步回归法:
FORWARD前进法:
从模型中没有变量开始,每次将一个最显著的变量引入模型,直到模型以外的变量不再有显著的下值为止;
BACKWAND后退法:
从模型中含所有自变量开始,每次从模型中剔除一个贡献最小的变量,直到模型中只剩下均为显著的变量为止;
STEPWISE逐步法:
每次引入模型一个最显著的变量,然后考虑从模型中剔除一个最不显著的变量,直到既没有变量引入也没有变量剔除为止。
(3)单击SelectionMethod标签,出现如图23所示,单击Method右侧的下拉键头,选择Stepwise。
图23
当选择Stepwise以后,会发现EffectHierarchy变为可选状态,当我们不考虑数据集中两个或两个以上的变量会联合作用于目标变量的时候,则无需对EffectHierarchy进行设置。
(4)关闭Regression窗口,在弹出对话框中选择“是”保存设置,此时会弹出SaveModelAs窗口,在ModelName域输入StepReg,在ModelDescription域输入StepwiseLogisticRegression,单击“OK”。
到此,我们就已经完成了回归的建模。
4.5评估模型
EM用来评估模型的工具是Assessment节点,Assessment节点通过运行Test数据可以对所有模型的精确性进行检验,如图24所示。
图24
对模型进行评估,结果如图25所示。
图25
升降图可以形象的展现模型实施的效果,图中的蓝线表示的是源数据集中,有12%的客户的DINING字段〉0,这个数字代表了如果对所有的客户发出目录,将会有12%的客户相应。
图中红色的曲线代表的是回归模型的预测效果。
模型会给每一个客户购买DINING产品的倾向打一个分,并将分数从高到低排列后,分为十个等份,图中的横坐标从左到右代表这十个等份,纵坐标代表不同打分的人群的相应率。
可以看出,当利用回归模型对客户进行打分排名后,回归模型前10%的客户响应率达到了30%以上,如果公司希望扩大宣传力度,例如公司预选择30%的客户群进行宣传,那么利用回归模型建模可以得到很高的响应率。
LiftChart默认显示的是累计的响应率效果,可以通过单击升降图中,BarColorfor上方的Non-Cumulative前面的圆圈查看非累积的升降图,即每个10%的人群的响应率,以便于公司对每个不同人群的定位,如图26所示。
图26
4.6应用模型
4.6.1抽取打分程序
在如上的建模过程中,假设我们将目标定位在10%的客户群,显然我们的最佳选择是回归模型,下面我们要把这个模型应用到所有的数据上面。
EM提供了一个Score节点来实现对模型的评分代码进行评估、保存以及整合。
4.6.2引入原始数据源
当我们设置好Score节点之后,我们就可以对任何一个结构相同的数据源来进行打分,在这里,由于我们仍然使用样本数据源CUSTDET1。
4.6.3查看结果
对整个源数据应用模型的结果可以通过Explore工具来查看,DistributionExplorer节点的使用。
(1)将DistributionExplorer节点拖到工作区中放在Score节点的下方,连接Score节点到DistributionExplorer,如图27。
图27
在利用DistributionExplorer节点查看模型应用的效果之前必须先运行Score节点
(2)右键单击Score节点,选择Run,Score节点四周会出现绿色方框,运行完毕出现是否查看运行结果的对话框,选择否。
(3)双击DistributionExplorer节点,出现如下窗口(如图28)。
图28
(4)单击CharOnly前面的方框,除去差号
(5)单击Data标签,单击Select按钮,在Predecessors下面,展开Score,展开SAS_DATA_SETS,单击最下面的EMDATA.SD_05DW5,如图29。
图29
(6)单击OK按钮
(7)单击Variables标签,找到变量P_DINEBIN1,右键单击该变量的Axis属性列在探出菜单中选择SetAxis,选择X,如图30。
图30
(8)单击XAxis标签,可以查看回归模型应用在源数据上之后,整个人群响应率的分布,如图31所示。
图31
五、小结
经过一段时间的学习,我知道了SAS9.1.3EnterpriseMiner是一个集成的数据挖掘系统,允许使用和比较不同的技术,同时还集成了复杂的数据库管理软件。
SAS9.1.3EnterpriseMiner把统计分析系统和图形用户界面(GUI)集成在一起,并与SAS协会定义的数据挖掘方法——SEMMA方法,即抽样(Sample)、探索(Explore)、修改(Modify)建模(Model)、评价(Assess)紧密结合,对用户友好、直观、灵活、适用方便,使对统计学无经验的用户也可以理解和使用。
EnterpriseMiner简称EM,它的运行方式是通过在一个工作空间(workspace)中按照一定的顺序添加各种可以实现不同功能的节点,然后对不同节点进行相应的设置,最后运行整个工作流程(workflow),便可以得到相应的结果。
以前接触的是SAS8.0,这是第一次使用SAS9.1.3。
刚开始连安装都花了很久一段时间,在学习期间,我遇到的最大困难就是参数的设置与结果的分析。
不过经过老师上课的讲解,自己课后看参考书,不断地实践,现在对SAS9.1.3有了一定的基本了解,能解决些简单的实际问题。