SPSSClementine和KNIME数据挖掘入门.docx

上传人:b****5 文档编号:6601061 上传时间:2023-01-08 格式:DOCX 页数:59 大小:2.87MB
下载 相关 举报
SPSSClementine和KNIME数据挖掘入门.docx_第1页
第1页 / 共59页
SPSSClementine和KNIME数据挖掘入门.docx_第2页
第2页 / 共59页
SPSSClementine和KNIME数据挖掘入门.docx_第3页
第3页 / 共59页
SPSSClementine和KNIME数据挖掘入门.docx_第4页
第4页 / 共59页
SPSSClementine和KNIME数据挖掘入门.docx_第5页
第5页 / 共59页
点击查看更多>>
下载资源
资源描述

SPSSClementine和KNIME数据挖掘入门.docx

《SPSSClementine和KNIME数据挖掘入门.docx》由会员分享,可在线阅读,更多相关《SPSSClementine和KNIME数据挖掘入门.docx(59页珍藏版)》请在冰豆网上搜索。

SPSSClementine和KNIME数据挖掘入门.docx

SPSSClementine和KNIME数据挖掘入门

SPSS Clementine是Spss公司收购ISL获得的数据挖掘工具。

在Gartner的客户数据挖掘工具评估中,仅有两家厂商被列为领导者:

SAS和SPSS。

SAS获得了最高abilitytoexecute评分,代表着SAS在市场执行、推广、认知方面有最佳表现;而SPSS获得了最高的completenessofvision,表明SPSS在技术创新方面遥遥领先。

 

客户端基本界面

 

      SPSSClementine(在此简称clementine)在安装好后会自动启用服务,服务端的管理需要使用SPSSPredictiveEnterpriseManager,在服务端clementine没有复杂的管理工具,一般的数据挖掘人员通过客户端完成所有工作。

下面就是clementine客户端的界面。

 

一看到上面这个界面,我相信只要是使用过SSIS+SSAS部署数据挖掘模型的,应该已经明白了六、七分。

是否以跃跃欲试了呢,别急,精彩的还在后面^_’

 

项目区

 

顾名思义,是对项目的管理,提供了两种视图。

其中CRISP-DM(CrossIndustryStandardProcessforDataMining,数据挖掘跨行业标准流程)是由SPSS、DaimlerChrysler(戴姆勒克莱斯勒,汽车公司)、NCR(就是那个拥有Teradata的公司)共同提出的。

Clementine里通过组织CRISP-DM的六个步骤完成项目。

在项目中可以加入流、节点、输出、模型等。

 

工具栏

 

工具栏总包括了ETL、数据分析、挖掘模型工具,工具可以加入到数据流设计区中,跟SSIS中的数据流非常相似。

Clementine中有6类工具。

源工具(Sources)

相当SSIS数据流中的源组件啦,clementine支持的数据源有数据库、平面文件、Excel、维度数据、SAS数据、用户输入等。

记录操作(RecordOps)和字段操作(FieldOps)

相当于SSIS数据流的转换组件,RecordOps是对数据行转换,FieldOps是对列转换,有些类型SSIS的异步输出转换和同步输出转换(关于SSIS异步和同步输出的概念,详见拙作:

图形(Graphs)

用于数据可视化分析。

输出(Output)

Clementine的输出不仅仅是ETL过程中的load过程,它的输出包括了对数据的统计分析报告输出。

※在ver11,Output中的ETL数据目的工具被分到了Export的工具栏中。

模型(Model)

Clementine中包括了丰富的数据挖掘模型。

数据流设计区

 

这个没什么好说的,看图就知道了,有向的箭头指明了数据的流向。

Clementine项目中可以有多个数据流设计区,就像在PhotoShop中可以同时开启多个设计图一样。

比如说,我这里有两个数据流:

Stream1和Stream2。

通过在管理区的Streams栏中点击切换不同的数量流。

 

管理区

 

管理区包括Streams、Outputs、Models三栏。

Streams上面已经说过了,是管理数据流的。

Outputs

不要跟工具栏中的输出搞混,这里的Outputs是图形、输出这类工具产生的分析结果。

例如,下面的数据源连接到矩阵、数据审查、直方图工具,在执行数据流后,这个工具产生了三个输出。

在管理区的Outputs栏中双击这些输出,可看到输出的图形或报表。

Models

经过训练的模型会出现在这一栏中,这就像是真表(TruthTable)的概念那样,训练过的模型可以加入的数据流中用于预测和打分。

另外,模型还可以导出为支持PMML协议的XML文件,但是PMML没有给定所有模型的规范,很多厂商都在PMML的基础上对模型内容进行了扩展,Clementine除了可以导出扩展的SPSSSmartScore,还可以导出标准的PMML3.1。

下面使用AdventureWorks数据库中的TargetMail作例子,通过建立分类树和神经网络模型,决策树用来预测哪些人会响应促销,神经网络用来预测年收入。

TargetMail数据在SQLServer样本数据库AdventureWorksDW中的dbo.vTargetMail视图,关于TargetMail详见:

或者我之前的随笔:

1. 定义数据源

将一个Datebase源组件加入到数据流设计区,双击组件,设置数据源为dbo.vTargetMail视图。

 

在Types栏中点“ReadValues”,会自动读取数据个字段的Type、Values等信息。

 

Values是字段包含的值,比如在数据集中NumberCardsOwned字段的值是从0到4的数,HouseOwnerFlag只有1和0两种值。

Type是依据Values判断字段的类型,Flag类型只包含两种值,类似于boolean;Set是指包含有限个值,类似于enumeration;Ragnge是连续性数值,类似于float。

通过了解字段的类型和值,我们可以确定哪些字段能用来作为预测因子,像AddressLine、Phone、DateFirstPurchase等字段是无用的,因为这些字段的值是无序和无意义的。

Direction表明字段的用法,“In”在SQLServer中叫做“Input”,“Out”在SQLServer中叫做“PredictOnly”,“Both”在SQLServer中叫做“Predict”,“Partition”用于对数据分组。

 

 

2. 理解数据

在建模之前,我们需要了解数据集中都有哪些字段,这些字段如何分布,它们之间是否隐含着相关性等信息。

只有了解这些信息后才能决定使用哪些字段,应用何种挖掘算法和算法参数。

在除了在建立数据源时Clementine能告诉我们值类型外,还能使用输出和图形组件对数据进行探索。

 

例如先将一个统计组件和一个条形图组件拖入数据流设计区,跟数据源组件连在一起,配置好这些组件后,点上方绿色的箭头。

 

等一会,然后这两个组件就会输出统计报告和条形图,这些输出会保存在管理区中(因为条形图是高级可视化组件,其输出不会出现在管理区),以后只要在管理区双击输出就可以看打开报告。

 

 

3. 准备数据

将之前的输出和图形工具从数据流涉及区中删除。

将FieldOps中的Filter组件加入数据流,在Filter中可以去除不需要的字段。

我们只需要使用MaritalStatus、Gender、YearlyIncome、TatalChildren、NumberChildrenAtHome、EnglishEducation、EnglishOccupation、HouseOwnerFlag、NumberCarsOwned、CommuteDistance、Region、Age、BikeBuyer这些字段。

加入Sample组件做随机抽样,从源数据中抽取70%的数据作为训练集,剩下30%作为检验集。

注意为种子指定一个值,学过统计和计算机的应该知道只要种子不变,计算机产生的伪随机序列是不变的。

因为要使用两个挖掘模型,模型的输入和预测字段是不同的,需要加入两个Type组件,将数据分流。

决策树模型用于预测甚麽人会响应促销而购买自行车,要将BikeBuyer字段作为预测列。

 

神经网络用于预测年收入,需要将YearlyIncome设置为预测字段。

 

有时候用于预测的输入字段太多,会耗费大量训练时间,可以使用FeatureSelection组件筛选对预测字段影响较大的字段。

从Modeling中将FeatureSelection字段拖出来,连接到神经网络模型的组件后面,然后点击上方的ExecuteSelection。

 

FeatureSelection模型训练后在管理区出现模型,右击模型,选Browse可查看模型内容。

模型从12个字段中选出了11个字段,认为这11个字段对年收入的影响比较大,所以我们只要用这11个字段作为输入列即可。

 

将模型从管理区拖入数据流设计区,替换原来的FeatureSelection组件。

4. 建模

加入NearalNet和CHAID模型组件,在CHAID组件设置中,将Mode项设为”Launchinteractivesession”。

然后点上方的绿色箭头执行整个数据流。

Clementine在训练CHAID树时,会开启交互式会话窗口,在交互会话中可以控制树生长和对树剪枝,避免过拟合。

如果确定模型后点上方黄色的图标。

 

完成后,在管理区又多了两个模型。

把它们拖入数据流设计区,开始评估模型。

5. 模型评估

修改抽样组件,将Mode改成“DiscardSample”,意思是抛弃之前用于训练模型的那70%数据,将剩下30%数据用于检验。

注意种子不要更改。

 

我这里只检验CHAID决策树模型。

将各种组件跟CHAID模型关联。

 

执行后,得到提升图、预测准确率表……

6. 部署模型

Export组件都可以使用Publish发布数据流,这里会产生两个文件,一个是pim文件,一个是par文件。

pim文件保存流的所有信息,par文件保存参数。

有了这两个文件就可以使用clemrun.exe来执行流,clemrun.exe是ClementineSolutionPublisher的执行程序。

ClementineSolutionPublisher是需要单独授权的。

在SSIS中pim和par类似于一个dtsx文件,clemrun.exe就类似于dtexec.exe。

如果要在其他程序中使用模型,可以使用Clementine执行库(CLEMRTL),相比起Microsoft的oledbfordm,SPSS的提供的API在开发上还不是很好用。

了解SPSSClementine的基本应用后,再对比微软的SSAS,各自的优缺点就非常明显了。

微软的SSAS是ServiceOriented的数据挖掘工具,微软联合SAS、Hyperion等公司定义了用于数据挖掘的web服务标准——XMLA,微软还提供OLEDBforDM接口和MDX。

所以SSAS的优势是管理、部署、开发、应用耦合方便。

但SQLServer2005使用VisualStudio2005作为客户端开发工具,VisualStudio的SSAS项目只能作为模型设计和部署工具而已,根本不能独立实现完整的Crisp-DM流程。

尽管MSExcel也可以作为SSAS的客户端实现数据挖掘,不过Excel显然不是为专业数据挖掘人员设计的。

PS:

既然说到VisualStudio,我又忍不住要发牢骚。

大家都知道VisualStudioTeamSystem是一套非常棒的团队开发工具,它为团队中不同的角色提供不同的开发模板,并且还有一个服务端组件,通过这套工具实现了团队协作、项目管理、版本控制等功能。

SQLServer2005相比2000的变化之一就是将开发客户端整合到了VisualStudio中,但是这种整合做得并不彻底。

比如说,使用SSIS开发是往往要一个人完成一个独立的包,比起DataStage基于角色提供了四种客户端,VS很难实现元数据、项目管理、并行开发……;现在对比Clementine也是,Clementine最吸引人的地方就是其提供了强大的客户端。

当然,VisualStudio本身是很好的工具,只不过是微软没有好好利用而已,期望未来的SQLServer2K8和VisualStudio2K8能进一步改进。

 

所以我们不由得想到如果能在SPSSClementine中实现Crisp-DM过程,但是将模型部署到SSAS就好了。

首先OLEDBforDM包括了Model_PMML结构行集,可以使用DMX语句“CreateMiningModelFromPMML”将SPSSClementine导出的PMML模型加入SSAS。

如果我记得没错的话,SQLServer2005最初发表版本中AnalysisServices是PMML2.1标准,而Clementine11是PMML3.1的,两者的兼容性不知怎样,我试着将一个PMML文件加入SSAS,结果提示错误。

 

另外,在SPSSClementine中可以整合SSAS,通过使用SSAS的算法,将模型部署到SSAS。

具体的做法是:

在SSAS实例中修改两个属性值。

 

在Clementine菜单栏选Tools ->HelperApplications。

 

然后启用SSAS整合,需要选择SSAS数据库和SQLServerRMDBS,RMDBS是用来存储临时数据的,如果在Clementine的流中使用了SAS数据源,但SSAS不支持SAS数据文件,那么Clementine需要将数据源存入临时数据表中以便SSAS能够使用。

启用整合后,就可以在工具栏中看到多出了一类DatebaseModeling组件,这些都是SSAS的数据挖掘算法,接下来的就不用说了……

 

可惜的是SSAS企业版中就带有9种算法,另外还有大量第三方的插件,但Clementine11.0中只提供了7种SSAS挖掘模型。

一接触数据挖掘,用的就是Knime,什么Weka,SPSS,SAS基本都只限于听说过而已-_-.由于是基于eclipse的,对我来说自然是十分亲切,所以用起来也十分顺手,用了也有一段时间,打算做个阶段性小结,也顺便提高自己。

Knime是基于Eclipse的开源数据挖掘软件,它通过工作流的方式来完成数据仓库以及数据挖掘中数据的抽取-转换-加载(Extract-Transform-Load)操作。

其中工作流又是由各个功能便利的结点来完成,节点之间相互独立,可以单独执行并将执行后的数据传给下一个结点。

界面如下:

将左下角NodeRepository区域的结点以此拖入中间的WorflowEditor形成工作流:

结点的状态:

结点上有三盏灯,就像红黄绿交通灯一样。

当结点刚被拖入工作区的时候,红灯亮起表示数据无法通过,这时需要对结点进行配置,让它可以执行。

右键单击结点选择“Configure”对结点进行配置;配置完成并且正确的话,便会亮起黄灯,表示准备就绪数据可以通过;再次右键单击结点选择“Execute”运行这个结点,当绿灯亮起时表示结点执行成功,数据已经通过并传给下一个结点。

结点分类,一共有以下几类结点:

1、IO类结点,用于文件、表格、数据模型的输入和输出操作;

2、数据库操作类结点,通过JDBC驱动对数据库进行操作;

3、数据操作类结点,对上一结点传进来的数据进行筛选、变换以及简单的统计学计算等操作;

4、数据视图类结点,提供了数据挖掘中最常用的表格及图形的展示,包括盒图,饼图,直方图,数据曲线等;

5、统计学模型类结点,封装了统计学模型算法类的结点,如线性回归、多项式回归等;

6、数据挖掘模型类结点,提供了贝叶斯分析,聚类分析,决策树,神经网络等主要的DM分类模型以及相应的预测器;

7、META原子结点,该类结点可以对任意的及结点进行嵌套封装,还提供了后向传播、迭代、循环、交叉验证等方法;

8、其他,可供我们自定义java代码段,以及设置规则引擎。

本文来自CSDN博客,转载请标明出处:

作者:

数据挖掘技术研究小组

版本:

1.0

日期:

20050806

第三部分应用实例

一、市场购物篮问题分析

1.Businessanddataunderstanding

目标:

客户细分,发现购买相似的客户群,用人口统计学特征进行描述。

方法:

关联规则建模

数据集:

baskets包括字段:

Candid:

该购物篮使用者的忠诚卡识别字

Value:

付款总额Pmethod:

付款方法

持卡者详细的个人资料

sex:

性別homeown:

持有信用卡的人是否是有自己的住房

income:

收入age:

年齡

购物篮內容:

fruitveg水果蔬菜freshmeat新鲜肉品

dairy牛奶cannedveg罐装蔬菜

cannedmeat罐装肉品frozenmeal冷冻肉品

beer啤酒wine酒

softdrink苏打饮料fish鱼

confectionery糖果

过程:

2.Explore

使用web图和GRI节点来观察客户购买的商品之间的联系。

首先要在type节点中定义变量类型和方向,将candid设置为typeless,个人资料字段设置为none,其他购物篮内容设置为both(即可以作为输入也可作为输出)流程如下:

图3.1.1

GRI输出结果:

图3.1.2

从上面的结果中看出:

肉类、啤酒、罐装蔬菜关联性比较大。

提高此web图的门槛值,只留下最强的连接。

操作步骤如下:

(1)移动工具栏上的滑标,设置只有到达50个的连接才显示出来。

滑标上的工具提示目前的连接强度。

(2)选择显示若连接还是强连接。

单击工具条上的黄色箭头按钮,扩展对话方框来显示web输出概要和控制项。

(3)选择显示强/正常/弱的大小。

这将启动下面的滑标控制项。

(4)使用滑标或在文本框中指定一个数来设置低于90的弱连接。

(5)使用滑标或在文本框中指定一个数来设置高于100的强连接。

图3.1.3

从web和GRI分析结果来看可以找出三组强连接:

(1)beer、cannedveg、frozenmeal

(2)wine、confectionery

(3)fruitveg、fish

从而可以归纳出三类客户,通过derive节点生成一个标记字段来区别这三类客户,在derive节点中增加一个set类型字段,如下:

图3.1.4

更正:

上式中3对应得条件应为('frozenmeal'=='T'and'beer'=='T')and('cannedveg'=='T'and'beer'=='T')and('cannedveg'=='T'and'frozenmeal'=='T')

图3.1.5

另一种方法:

把鼠标放在连线上,线变成红色后点击右键的generatederivenodeforlink这时就生成了一个二分变量。

由web显示器生成三个二分变量来标记三种客户:

图3.1.6

3.model

欲描述这些客户群的特征,我们可以通过关联规则或决策树来观察,增加一个type节点,把关于客户资料的一些变量设置为in,beer_beans_pizza设置为out,其他的为none,通过C5.0节点,运行得到结果,可以看出,属于这类群的客户特征:

收入低于16900的女性

 

图3.1.7

4.Modelassessment

通过节点analysis来评价模型,可以使用另一个数据集来进行验证模型,这里继续使用原数据来看模型的效果。

在analysis节点中选择coincidencematices

图3.1.8

最后得到的效果如下:

Correct96796.7%

Wrong333.3%

Total1000

二、客户流失

下面的试验是对客户流失预警的模拟,数据资料来源于05年1月份以前,我们要做的是在试验当月(12月份)根据客户11月份及以前的数据,预测用户1月份的流失状态。

按如下规则抽样:

选取在网时长大于90天,11月份mou值大于零,且倒数第二位号码为0的客户10000人。

用户流失状态按如下定义:

1月份mou值为零则定义为流失,赋值输出变量为0,否则为不流失,赋值输出变量为1。

1.用节点SQL读取数据并编辑字段属性

我们选用SQL节点从oracle中读取数据。

如图1在SQL节点编辑中首先需要建立数据源和clementine的连接,在datasource下选择addnew就会弹出图3.2.1窗口,选择我们需要的数据源即可。

 

图3.1.1

 

图3.2.2

图3.2.2中的datasources都是已在ODBC中建立好的连接。

然后在tablename中选择数据表,如图3.2.3:

 

图3.2.3

接着在type标签里设置字段的类型和在模型中的角色(输入或输出),如图3.2.4:

 

图3.2.4

其中我们设置最后一个变量为flag(二值型),并当作目标输出。

2.选择抽样数据集

如图3.2.5所示在添加的sample节点中设置随机抽取50的样本,

 

图3.2.5

3.平衡数据集

由于流失与否的客户在样本中所占比例相差很大(约3:

7),这对许多训练模型来说会有错误的诱导趋势,使训练结果向比例大的一方转变,而忽视对比例小的一方的学习,比如神经网络等,这里我们用balance节点对数据集进行平衡处理,如图3.2.6:

 

图3.2.6

图6中表示的是目标变量为0的用户数增为原来的3倍,多于的部分复制原有客户即可;目标变量为1的客户取原来的0.6*100%,这样样本中目标为0和1的客户数量就基本持平了。

4.选择模型并训练

这里我们选择两个模型,神经网络(NN节点)和决策树(C5.0节点),分别设置它们的目标变量和输入变量(由于前面都已经设置好了,所以此处用默认值也可以),如图3.2.7:

左侧为C5.0,右侧为NN,他们选择输入和目标的方法相似,只是在NN设置时选择50%的样本为测试集,如右侧图中preventovertraining一栏。

 

图3.2.7

5.执行流并得到输出模型

到目前为止,我们的整个的处理过程已如下图所示:

 

图3.2.8

执行此流我们能得到如下图示的两个模型:

 

图3.2.9

6.评价所得模型

首先,把在第5步得到的模型(Models)加入到流中,直接从Model面板将其拖入流程区即可。

如图3.2.10所示连接,在串联了两个Model后,再增加一个Analysis节点,对模型进行评估。

Analysis节点只能判断模型总的准确率,而我们更关心的是模型对1和0分别进行预测的正确率,所以在两个Model下各自加入一个Matrix节点,他们的设置如图3.2.11,其中$N-SYH2NISOMOUZ和$C-SYH2NISOMOUZ分别是两个模型预测的结果,右面的Appearance标签中选中行列百分比。

 

 

图3.2.10

 

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1