SASEMSampleTutorialdetail.docx
- 文档编号:30439415
- 上传时间:2023-08-15
- 格式:DOCX
- 页数:26
- 大小:653.77KB
SASEMSampleTutorialdetail.docx
《SASEMSampleTutorialdetail.docx》由会员分享,可在线阅读,更多相关《SASEMSampleTutorialdetail.docx(26页珍藏版)》请在冰豆网上搜索。
SASEMSampleTutorialdetail
SASEM实例进阶
1.SASEnterpriseMiner简介
1.1.数据挖掘简介
数据仓库的发展,为分析人员提供了在各种层次上、历史回溯的数据信息。
对未来的信息要进行预测,这就演化出来数据挖掘技术。
数据挖掘(DataMining)就是从大量的、不完全的、有噪声的、模糊的、随机的实际应用数据中,提取隐含在其中的、人们事先不知道的、但又是潜在有用的信息和知识的过程。
目前数据挖掘应用于很多行业中,来解决众多的商业问题,如数据库营销(DatabaseMarketing)、客户群体划分(CustomerSegmentation&Classification)、背景分析(ProfileAnalysis)、交叉销售(Cross-selling)等市场分析行为,以及客户流失性分析(ChurnAnalysis)、客户信用记分(CreditScoring)、欺诈发现(FraudDetection)等等。
1.2.EM简介
SASEnterpriseMiner简称EM,它把统计分析系统和图形用户界面(GUI)紧密结合,对用户友好、直观、灵活、使用方便,使对统计学无经验的用户也可以理解和使用。
SAS定义了数据挖掘方法——SEMMA方法,即抽样(Sample)、探索(Explore)、修改(Modify)、建模(Model)、评价(Assess)。
以下SEMMA方法从SASHelp文档中拷贝,不再翻译以求理解准确。
∙Samplethedatabycreatingoneormoredatatables.Thesampleshouldbelargeenoughtocontainthesignificantinformation,yetsmallenoughtoprocess.
∙Explorethedatabysearchingforanticipatedrelationships,unanticipatedtrends,andanomaliesinordertogainunderstandingandideas.
∙Modifythedatabycreating,selecting,andtransformingthevariablestofocusthemodelselectionprocess.
∙Modelthedatabyusingtheanalyticaltoolstosearchforacombinationofthedatathatreliablypredictsadesiredoutcome.
∙Assessthedatabyevaluatingtheusefulnessandreliabilityofthefindingsfromthedataminingprocess.
EM建立分析流程中,不必包含SEMMA方法每一步,同时其中的步骤可以重复出现。
在SAS窗口菜单中依此选择“解决方案”---“分析”---“企业数据挖掘”,即打开下图所示的EM的窗口。
EM为那些非统计学专家的分析员提供了GUI界面,在工作空间(workspace)中按照一定的顺序添加各种可以实现不同功能的节点,然后对各节点进行相应的设置,最后运行整个工作流程(workflow),便可以得到相应的结果。
数据挖掘专家则可以在更深层次的后台进行编程,得到更优更好的分析流程。
EM在市场中的竞争产品有SPSS的Clementine,数据挖掘的方法是类似的。
2.SAS数据挖掘实例
2.1.分类的基本概念与步骤
在介绍EM实例之前,还是来学习一下数据挖掘的分类方法吧。
数据挖掘有一些常用的模型和算法,如分类方法、聚类方法、关联规则等等。
分类是数据挖掘中一项非常重要的任务。
通过例子来理解分类吧。
老师根据分数把学生分成A、B、C、D、E五类,这里只要通过简单的分界线(60,70,80,90)就可以实现,如下表所示。
成绩
类别
90<=成绩
A
80<=成绩<90
B
70<=成绩<80
C
60<=成绩<70
D
成绩<60
E
分类可用于预测,预测的目的是从历史数据记录中自动推导出对给定数据的趋势描述,从而能对未来数据进行预测。
分类的目的是学会一个分类函数或分类模型(也常常称作分类器),该模型能把数据库中的数据项映射到给定类别的某一个类别中。
通过以下这个例子来了解如何通过分类方法来预测吧。
数据库中记录了天气的历史记录。
Date
Outlook
Temperature
Humidity
Wind
PlayTennis
2008-12-1
Sunny
Hot
85
False
No
2008-12-2
Sunny
Hot
90
True
No
2008-12-3
Overcast
Hot
78
False
Yes
2008-12-4
Rain
Mild
96
False
Yes
2008-12-5
Rain
Cool
80
False
Yes
2008-12-6
Rain
Cool
70
True
No
2008-12-7
Overcast
Cool
65
True
Yes
2008-12-8
Sunny
Mild
95
False
No
2008-12-9
Sunny
Cool
70
False
Yes
2008-12-10
Rain
Mild
80
False
Yes
属性PlayTennis的两个取值Yes/No表示是否适宜与打网球。
历史数据记录了哪些天气情况适合打网球,哪些不适合。
现在我们想预测未来的天气情况下是否适合网球运动。
分类方法可以解决这个问题,通过历史数据来构造一个分类模型,历史数据中提供了一个特定的标签(这里即为PlayTennis),通过学习构造出了以下的分类规则。
这里使用易于理解的决策树分类方法。
当这个模型的准确率可以接受,就可以被用来预测未来日子的天气状况是否适合于打网球。
如明天的天气状况为(Rain,Windy),想要得到PlayTennis?
,那么就可以通过上面图示的规则知道,明天不适合打网球。
一般的,数据分类(DataClassification)分为两个步骤:
建模和使用。
1.建立一个模型,描述预定的数据类集或概念集
要构造分类模型,需要有一个训练样本数据集作为输入,训练样本有一个特定的类标签与之对应。
由于提供了每个训练样本的类标签,那么分成了多少类就确定了。
构造分类模型有不同的算法,可参考数据挖掘算法书籍。
模型的描述可以用分类规则、决策树或等式、规则式等形式。
2.使用模型进行分类
首先要评估分类模型的预测准确率。
有别于训练样本,需要从数据集中随机抽取样本构造测试样本。
对于每个测试样本,将已知的类标号与该样本的学习模型类预测比较。
模型在给定测试集上的准确率即为被模型正确分类的测试样本的百分比。
如果认为模型的准确率可以接受,就可以用它对类标号未知的数据元组或对象进行分类,从而达到预测的目的。
2.2.使用EM进行数据挖掘
在下文中,用一个简单数据挖掘实例来让大家熟悉EM,在SAS的帮助文档里有更多的例子,读者可以自学代码,来熟悉EM中的各种模型。
在此例中,EM进行数据挖掘的基本思路是,
1.定义商业应用的目标。
目标即为前文所述的类标签。
2.在待挖掘的数据进行采样,样本数据要有一定的数量,特征要明显。
3.对采样数据进行探索,了解数据的分布特征。
4.如果数据需要清洁、转换等,要对数据进行一定的预处理。
5.对样本数据进行建模。
EM提供了很多的模型,如决策树,神经网络,回归模型等。
可以使用多个模型对样本数据进行建模。
6.评估哪个模型对测试数据表现出色,选择对此应用最适宜的模型。
7.将选中的模型应用于所有的数据上,然后获得应用定义的目标。
2.2.1.例程背景描述
EM随机带有一个数据集SAMPSIO.DMAGECR(theGermanCreditbenchmarkdataset)。
该数据集中包括了过去1000个申请人和相应的信用评级(“GOOD”or“Bad”),数据的类标签名称为GOOD_BAD,另外20个属性如下。
VARIABLE
ROLE
LEVEL
DESCRIPTION
CHECKING
input
ordinal
Checkingaccountstatus
DURATION
input
interval
Durationinmonths
HISTORY
input
ordinal
Credithistory
PURPOSE
input
nominal
Purpose
AMOUNT
input
interval
Creditamount
SAVINGS
input
ordinal
Savingsaccount/bonds
EMPLOYED
input
ordinal
Presentemploymentsince
INSTALLP
input
interval
Installmentrateas%ofdisposableincome
MARITAL
input
nominal
Personalstatusandgender
COAPP
input
nominal
Otherdebtors/guarantors
RESIDENT
input
interval
Presentresidencesince
PROPERTY
input
nominal
Property
AGE
input
interval
Ageinyears
OTHER
input
nominal
Otherinstallmentplans
HOUSING
input
nominal
Housing
EXISTCR
input
interval
Numberofexistingcreditsatthisbank
JOB
input
ordinal
Jobtitle
DEPENDS
input
interval
Numberofdependents
TELEPHON
input
binary
Telephone
FOREIGN
input
binary
Foreignworker
GOOD_BAD
target
binary
Goodorbadcreditrating
SAMPSIO.DMAGECR数据集中60%的样本数据(trainingdata)被用来构造模型(trainthemodel),剩余的40%测试数据(validationdata)用来调整模型,并用来对模型进行比较,从多个模型中选择最适合此应用的。
另外一个数据集SAMPSIO.DMAGESCR中有75个新的申请人,新申请人的信用评级未知(即类标签GOOD_BAD字段未知)。
将选定的分类模型应用到新的数据,即可确定新申请人的信用等级。
下面请大家一步一步做,最后会生成如下的图,并对那75个新申请人进行信用评价。
2.2.2.第一步—新建项目
1.在SAS窗口中依次选择“解决方案”—“分析”—“企业数据挖掘”,打开EM。
2.新建项目,命名为“myProject”,并选择目录存放。
3.点击“Create”,创建新项目,项目中缺省有一个空白的Diagram。
4.右键点击“Diagram”,Rename为“MySampleFlow”。
2.2.3.第二步—定义输入数据集
1.从左侧ProjectNavigator窗口的Tools页拖拽InputDataSourcenode至DiagramWorkspace。
2.双击InputDataSourcenode打开配置界面。
3.在SourceData框中填入“SAMPSIO.DMAGECR”。
Metadata会随之自动创建。
2.2.4.第三步—设置目标变量
必须对inputdatasource中设置目标变量(即类标签),目标变量可以是一组变量,在此例中,目标变量只有一个,为GOOD_BAD,即申请人的信用评级。
1.选择Variable属性页。
2.在GOOD_BAD的ModelRole列上右击,选择“SetModelRole”,另一个对话框弹出。
3.选择“target”。
先不要关闭InputDataSourcenode。
2.2.5.第四步—为目标变量Variable设置TargetProfile
1.右击目标变量GOOD_BAD,选择“Edittargetprofile”,窗口“TargetProfilesfortheGOOD_BAD”弹出。
2.设置TargetEventLevel。
选择Targettab,这里缺省设置DescendingOrder,TargetEventLevel是“Good”,这就是说你要对有良好信用的客户进行建模。
选用缺省,不用修改。
3.定义目标变量GOOD_BAD的LossMatrix
a)选择AssessmentInformationtab,预定义了四种decisionmatrices。
我们要新定义realisticlossmatrix。
b)右键点击“DefaultLossmatrix”,选择“Copy”,创建了一个新的decisionmatrix,名字是“Profitmatrix”。
c)只有一种matrix可以被设置成使用状态,右击“Profitmatrix”,选择“Settouse”,星号移到了Profitmatrix选项,表明在随后的建模和评估过程中要使用的activedecisionmatrix。
d)将Profitmatrix改名为“RealisticLoss”。
e)单击“EditDecisions”,将“good”更名为“accept”,“bad”更名为“reject”。
f)关闭EditingDecisions窗口,选择保存。
g)在RealisticLossmatrix中设置如下值。
至此解释所做的设置,行代表目标变量取值,列表示decisioncost。
这里计算的loss值,接受一个信用坏的申请者所带来的loss,是拒绝一个信用好的申请者的cost的5倍。
而拒绝一个申请者(信用好或新用坏),不会有loss,会被忽略,因此设置为0。
h)选择Priortab。
在输入数据集中包括了70%的信用好的申请者和30%的信用差的申请者。
而在此例中,经验告诉我们在将来的申请者中,信用好的申请者会占到90%。
这就是说,我们在样本数据采样时,突出了样本特征。
为了使模型预测准确,需要设置数据的Proportion。
预定义的三个比例都不适合,将新增加一个。
i)右击列表框并选择增加。
新的“PriorVector”创建,包含了Proportion值。
j)右击“PriorVector”,选择“SettoUse”,激活。
k)为“PriorVector”设置如下图的值。
l)关闭“targetProfile”窗口,并保存。
先不要关闭“InputDataSourcenode”。
2.2.6.第五步—检查Interval和Class变量的统计信息
自己的理解,classvariables应该是指取值为:
茄子、土豆、地瓜(他们彼此没有关系),而Intervalvariables是指取值在区间范围内的属性,如年龄。
检查的目的是,如果Intervalvariablesskew的很厉害,或峰值相差过大,需要进行一些filter或transform。
如果在classvariables里有些missingvalue,也要进行replacement。
有些模型如regression和neuralnetwork不允许有missingvalue。
1.选择“IntervalVariables”,查看统计信息。
2.选择“ClassVariables”,查看统计信息,没有missingvalue。
3.关闭InputDataSourcenode,保存。
2.2.7.第六步—建立训练数据和检验数据
数据挖掘中,对模型进行评估的一个策略是对输入数据进行partition。
一部分数据用来构造模型,称为训练数据(trainingdata),余下的数据用来验证。
余下的数据又可分为两部分,validationdata和testdata。
Validationdata用来防止模型训练过度,并用来进行对预测模型进行比较。
Testdata用来对选中的模型进行最后的评估。
在此例中只有1000个客户的历史记录,就不再准备testdata。
1.在DiagramWorkspace中增加DataPartitionnode。
2.连接InputDataSourcenode和DataPartitionnode。
3.打开DataPartitionnode的配置窗口。
4.60%的数据用作trainingdata,剩下40%用作validationdata。
5.为了在数据partition过程中防止把所有good的客户都放到trainingdata中,需要对partition的数据进行分层,保证good和bad分类的数据在trainingdata中和validationdata都存在。
这在某一分类数据很少的情况下很重要。
a)在Partitiontab中选择Stratifiedmethod。
b)选择Stratificationtab。
c)右击GOOD_BAD变量的Status,选择“SetStatus”。
d)在弹出的对话框里选择“Use”。
6.关闭DataPartitionNode,保存。
2.2.8.第七步—转换变量
1.在DiagramWorkspace增加TransformVariablesnode。
2.连接DataPartitionnode和TransformVariablesnode。
3.打开TransformVariablesnode的配置窗口。
4.查看AMOUNT的分布
a)右击AMOUNT,选择“ViewDistributionofAMOUNT”。
b)AMOUNT的分布严重Skew至一边。
关闭“VariableHistogram”窗口。
5.新建一个变量来使AMOUNT分布均匀
a)右击AMOUNT,选择“Transform”。
b)在弹出的窗口中选择“MaximizeNormality”,能从一系列功能强大的转换函数中选出一个最理想的,使均匀分布。
c)创建了一个新的变量AMOU_KPO,是AMOUNT的取对数log。
Skewness从1.95下降到0.13。
同时变量AMOUNT的“Keep”状态,自动变成了“No”。
d)查看AMOUNT的log的数据分布,这里为AMOU_KPO。
6.为Intervalvariable变量进行分组。
年龄段对信用评估更有帮助。
a)右击AGE变量,选择“Transform”。
b)在弹出的窗口中选择“Bucket”,来分多少个年龄段。
设置4个年龄段。
c)选择“Close”,“SelectWindow”打开,显示每个bucket的位置。
d)关闭TransformVariablesnode,保存。
2.2.9.第八步—建立StepwiseLogisticRegressionModel
EM中进行预测可以使用回归(Regression),神经网络(NeuralNetwork),决策树(Tree)。
你可以从外部import一个自定义的模型,也可以用SAScode创建自己的预测模型。
但是通常情况下,我们不会去自己写一个Treemodel,原因之一是那样太花时间,另一个是EM中的tree模型算法非常的成熟稳定,自己写的未必更好。
在对Binarytarget(例如GOOD_BAD)进行建模时,经常使用回归LogisticRegression。
1.在DiagramWorkspace增加Regressionnode。
2.连接TransformVariablesnode和Regressionnode。
3.打开Regressionnode的配置对话框。
Variablestab里由所有的输入变量和目标变量。
所有的inputvariable的状态都是“use”,标明他们都会被用来进行training模型。
假如你知道某个inputvariable对预测目标没有关系,那么可以设置status为“don’tuse”,这样可以减少预测误差并提高性能。
在此例中,所有inputvariable都被用来预测模型。
4.选择“SelectionMethod”tab,在“Method”下拉框中选择“Stepwise”。
5.保存模型。
在“文件”菜单中点击“模型另存为”,输入“ModelName”和“Description”。
6.右键点击Regressionnode选择“run”,来训练模型。
在Regressionnode前的process因为没有run过,所以会依此执行。
7.在弹出的对话框中选择“Yes”来查看运行结果。
8.观察结果后,关闭并保存。
2.2.10.第九步—建立MultilayerPerceptronNeuralNetworkModel
Regression模型的吸引人的地方是它的简单性。
但是,有一些局限,如不允许输入变量和目标变量之间有非线性相关(nonlinearassociations)。
如果存在这样的关系,预测结果会不准确。
使用了Regression模型,你还可以继续尝试另一个模型,神经网络模型(NeuralNetworkModel)。
1.在DiagramWorkspace增加NeuralNetworknode。
2.连接TransformVariablesnode和NeuralNetworknode。
现在NeuralNetworknode和Regressionnode都连接着TransformVariablesnode。
3.打开NeuralNetworknode的配置对话框。
4.NeuralNetwork提供了Basic(default)的配置界面,也提供了Advanced配置对NeuralNetwork提供了更多的控制。
5.保存模型。
在“文件”菜单中点击“模型另存为”,输入“ModelName”和“Description”。
6.右键点击NeuralNetworknode,选择“
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- SASEMSampleTutorialdetail