数据分析工具生成pmml调研报告V1008.docx
《数据分析工具生成pmml调研报告V1008.docx》由会员分享,可在线阅读,更多相关《数据分析工具生成pmml调研报告V1008.docx(21页珍藏版)》请在冰豆网上搜索。
数据分析工具生成pmml调研报告V1008
DW开源工具
调研
目录
第一章、概述3
1.1、PMML概述:
3
1.2、支持PMML的收费工具:
4
1.3、支持PMML的开源工具:
4
1.4、目前不支持的PMML工具:
4
1.5、内容安排:
4
第二章、收费DM工具5
2.1、SAS公司的EnterpriseMiner:
5
2.1.1工具说明5
2.1.2使用方式说明5
2.2、IBM公司的IntelligentMiner8
2.2.1工具说明8
2.2.2使用方式说明9
2.3、IBMSPSSModeler:
13
2.3.1工具说明13
2.3.2使用方式14
第三章、开源DM工具14
3.1、Weka:
14
3.1.1程序界面14
3.1.2代码16
3.2、R:
18
3.3、knime:
18
3.1.2程序界面18
第四章、总结19
第一章、概述
1.1、PMML概述:
数据挖掘任务主要由以下步骤组成:
◆定义数据字典:
定义对分析问题有价值的数据变量。
◆预处理数据:
通过对现有变量的衍生、映射、合并等操作,产生适合于建模的变量。
◆制定挖掘模式:
指定数据挖掘建模过程处理异常值和缺失值的策略。
◆表示数据挖掘模型:
记录模型的结构和参数等信息。
◆预测评价:
将测试数据集应用于所获得的模型,以各种准则获得性能评。
根据数据挖掘任务的需要,国际组织制定了数据挖掘的描述标准语言PMML。
PMML(PredictiveModelMarkupLanguage)是一个开放的工业标准,它以XML为载体将上述数据挖掘任务标准化,可以把某一产品所创建的数据挖掘方案应用于任何其它遵从PMML标准的产品或平台中,而不需考虑分析和预测过程中的具体实现细节。
使得模型的部署摆脱了模型开发和产品整合的束缚,为商业智能产品、数据仓库和云计算中的数据挖掘模型的应用环境开拓了新的篇章。
PMML标准是数据挖掘过程的一个实例化标准,它按照数据挖掘任务执行过程,有序的定义了数据挖掘不同阶段的相关信息:
◆头信息
◆数据字典
◆数据转换
◆模型表示
◆预测评价
有关具体的PMML标准的描述参见“pmml详解.doc”,此次调研的工具都支持到pmml3,不支持pmml4
1.2、支持PMML的收费工具:
ØSAS公司的EnterpriseMiner,具ML,部分支持,支持预测评价的pmml生成
ØIBM公司的IntelligentMiner,全部支持,支持pmml格式的生成和导入
ØSPSS公司的Clementetine(已经被IBM公司收购),支持pmml格式的生成和导入
1.3、支持PMML的开源工具:
ØR,网上的信息说支持,但是实际没有找到支持方式,Version15.1。
ØWeka,部分支持,在gui界面下不支持pmml文件,但是可以通过命令行方式使用pmml。
ØKNIME支持,可以使用weka的算法,在gui界面上提供了pmml的加载插件,支持部分数据挖掘算法
1.4、目前不支持的PMML工具:
ØRapidMiner下载后没找到使用pmml的方式,正在查他的文档
ØOrange正在下载
ØSqlserver数据挖掘工具,使用自身的数据挖掘模型,在192.168.7.181上有安装
1.5、内容安排:
各个章节的描述内容:
✧第二章介绍收费工具对于PMML的支持。
✧第三章介绍开源工具对于PMML的支持。
✧第四章对于PMML的支持进行了总结。
第二章、收费DM工具
本章介绍SAS公司的EnterpriseMiner,具ML,IBM公司的IntelligentMiner,SPSS公司的Clementetine(已经被IBM公司收购),对于pmml的支持。
2.1、SAS公司的EnterpriseMiner:
SAS的EnterpriseMiner支持PMML的模型Assess--评分,由于没有下载到SASEnterpriseMiner因此以下信息取自网络。
SASEnterpriseMiner支持对于以下算法的PMML模型评分
包括:
1,关联分析算法
2,分类算法
3,聚类算法
SASEnterpriseMiner在Assess模型的时候生成PMML文件,Assess也是SASEnterpriseMiner的一个模块。
可以拖到画布上。
2.1.1工具说明
SASEnterpriseMiner把统计分析系统和图形用户界面(GUI)集成在一起,并与SAS协会定义的数据挖掘方法——SEMMA方法,即抽样(Sample)、探索(Explore)、修改(Modify)建模(Model)、评价(Assess)紧密结合,其中评价(Assess)对于SAS提供的所有数据挖掘算法都支持生成PMML。
SASEnterpriseMiner简称EM,它的运行方式是通过在一个工作空间(workspace)中按照一定的顺序添加各种可以实现不同功能的节点,然后对不同节点进行相应的设置,最后运行整个工作流程(workflow),便可以得到相应的结果。
2.1.2使用方式说明
EM中工具分为七类:
⏹ Sample类 包含InputDataSource、Sampling、DataPartition
⏹ Explore类 包含DistributionExplorer、Multiplot、Insight、
Association、VariableSelection、LinkAnalysis
(Exp.)
⏹ Modify类 包含DataSetAttribute、TransformVariable、Filter
Outliers、Replacement、Clustering、SOM/Kohonen、
TimeSeries(Exp.)
⏹ Model类 包括Regression、Tree、NeuralNetwork、
Princomp/Dmneural、UserDefinedModel、Ensemble、
Memory-BasedReasoning、TwoStageModel
⏹ Assess类 包括Assessment、Reporter
⏹ Scoring类 包括Score、C*Score
⏹ Utility类 包括GroupProcessing、DataMiningDatabase、SAS
Code、Controlpoint、Subdiagram
其中的Assess类支持生成PMML。
使用方式为:
EM用来评估模型的工具是Assessment节点,Assessment节点通过运行Test数据可以对所有模型的精确性进行检验。
(1) 将Assessment节点拖到工作区中,放到Regression节点的下面,分别连接Regression和Tree节点到Assessment节点。
(2) 右键单击Assessment节点,选择Run,运行过程中从Replacement到Assessment节点四周会出现绿色方框,运行结束在弹出对话框中选择“是”,会出现AssessmentTool窗口
(3) 按住Shift键,选择Tree和Regression两个模型,单击SAS主菜单中的“工具”选择“升降图”出现LiftChart窗口
2.2、IBM公司的IntelligentMiner
DB2数据挖掘方法使用IntelligentMiner,后者是InfoSphere®Warehouse的一部分。
IntelligentMiner®将这些结果存储为预测模型标记语言(PredictiveModelMarkupLanguage,PMML)格式,这种格式基于XML。
自DB29发布以来,存储为XML格式的信息就可以使用XQuery进行有效处理。
了解如何轻松使用DB2XQuery,根据您的数据挖掘结果创建您自己的访问方法。
数据挖掘任务的结果称为数据挖掘模型,它们存储在使用PMML标准的表中。
这个标准基于XML,允许在不同数据挖掘提供者之间轻松交换数据。
这样一个模型然后可以应用到新数据上,这称为记分(scoring)。
2.2.1工具说明
IntelligentMiner通过UDF和STP集成到DB2中。
您可以使用一组SQL语句或InfoSphereWarehouseDesignStudio图形界面来创建一个数据挖掘模型。
图形界面是一种更加方便的方法。
PMML模型存储在DB2表中,这些表既可用于记录新数据,也可用于提取信息。
创建模型之后,可以使用IntelligentMinerVisualizer以图形方式查看模型,也可以使用现有的IntelligentMiner提取功能来通过SQL获得一些信息。
例如,您可以提取集群模型的一个概述,其中显示集群数量、使用的字段和模型质量。
Eg:
SELECT
"ID"AS"CLUSTERID",
CAST("NAME"ASCHAR(20))AS"CLUSTERNAME",
"SIZE",
CAST("HOMOGENEITY"ASDEC(5,2))AS"HOMOGENEITY"
FROMTABLE
(IDMMX.DM_getClusters((
SELECT"MODEL"
FROMIDMMX."CLUSTERMODELS"
WHERE"MODELNAME"='BANK.CUSTOMERS_SEGMENTS')))
AS"CLUSTERS"
ORDERBYSIZEDESC;
2.2.2使用方式说明
结合使用XQuery和IntelligentMiner
大多数信息都可以使用可用的数据挖掘函数提取,但是还有一些信息无法提取。
您可以结合使用XQuery函数和IntelligentMiner函数来直接从PMML模型读取这些隐藏的部分。
IntelligentMiner目前不允许提取集群附加字段的细节。
一个字段可以是活动的,也可以是附加的,具体取决于它对于计算集群的价值。
例如,充当DB2中的主键且始终具有不同值的字段会自动移动到附加字段,因为它们无法提供有助于了解集群的信息。
您可以在PMML模型的XML节点MiningField中找到隐藏的信息。
如果属性usageType具有值Supplementary,那么它表示一个附加字段。
活动字段是默认的使用类型,因此它不会在PMML文件中表示出来。
一个PMMLMiningSchema示例。
...
下面的例子展示了如何在DB2中实现一个UDF来提取所有集群字段,以及显示这些字段的使用类型。
CREATEFUNCTIONgetClusterMiningFields(mnamevarchar(128))
RETURNSTABLE(namevarchar(20),
usagetypevarchar(20))
LANGUAGESQL
BEGINATOMICRETURN
selectX.name,
CASEWHENX.usageTypeISNULLTHEN'active'
ELSEX.usageTypeEND
fromXMLTable('$DATA//*:
MiningField'PASSING
XMLPARSE(document(
selectIDMMX.DM_expClusModel(cm.MODEL)
fromIDMMX.CLUSTERMODELScm
whereMODELNAME=mname))as"DATA"
columns
namevarchar(20)path'@name',
usageTypevarchar(20)path'@usageType')asX;
END@
UDF被声明为一个表函数,这意味着它返回一个临时表,而不是一个值。
因为它是使用SQL编写的,所以LANGUAGE属于SQL。
UDF的主体在BEGIN与END标记之间实现。
所有结果列都在SQL/XQuery语句的选择部分中指定。
在示例中,这些列是X.name和X.usageType,它们是XMLTABLE表达式的输出列。
X.usageType的case语句表示活动的XML属性没有写入PMML文档。
XMLPARSE是必需的,因为PMML文档本身没有直接存储在一个XML列中。
该文档需要使用IDMMX.DM_expClusModel函数从一个BLOB列中导出,然后应该使用XMLPARSE函数将其复制到一个XML值中。
一旦文档可以作为XML值使用,您就可以使用XQuery来处理它,XQuery示例所示。
要调用创建函数语句,将这些语句放入一个文件中,并使用清单16中所示语法调用这个文件。
注意,没有使用传统的语句结束字符,因为在UDF中需要使用该字符。
调用包含创建函数语句的文件
db2-td@-vfcreateClusterFieldUDF.db2
当在一个select语句中调用UDF时,您将获得字段的信息,包括哪些字段是活动的,哪些是附加的,如清单17所示。
清单.读取字段信息
db2selectt1.name,t1.usagetypefromtable
(getClusterMiningFields('BankCustomerSegments'))t1
NAMEUSAGETYPE
----------------------------------------
AGEactive
NBR_YEARS_CLIactive
GENDERactive
MARITAL_STATUSactive
PROFESSIONactive
SAVINGS_ACCOUNTactive
HAS_LIFE_INSURANCEactive
INT_CREDITCARDactive
ONLINE_ACCESSactive
JOINED_ACCOUNTSactive
BANKCARDactive
CLIENT_IDsupplementary
AVERAGE_BALANCEactive
NO_CRED_TRANSactive
NO_DEBIT_TRANSactive
15record(s)selected.
相同的功能也可以添加到一个STP中。
创建STP的语法看起来稍有不同,但代码本身完全一样,如清单18所示。
清单.使用一个STP
CREATEPROCEDUREgetClusterMiningFields
(
inmnamevarchar(128)
)
LANGUAGESQL
RESULTSETS1
BEGIN
DECLAREcursor1CURSORWITHRETURNFOR
selectX.name,
CASEWHENX.usageTypeISNULLTHEN'active'
ELSEX.usageTypeEND
fromXMLTable('$DATA//*:
MiningField'PASSING
XMLPARSE(document(
selectIDMMX.DM_expClusModel(cm.MODEL)
fromIDMMX.CLUSTERMODELScm
whereMODELNAME=mname))as"DATA"
columns
namevarchar(20)path'@name',
usageTypevarchar(20)path'@usageType')asX;
OPENcursor1;
END@
您可以使用call语句从DB2命令行窗口调用STP。
输出(如清单19所示)与您在UDF实现中看到的结果完全一样。
清单.从DB2命令行窗口调用STP的结果
db2callgetClusterMiningFields('BankCustomerSegments')
Resultset1
--------------
NAME2
----------------------------------------
AGEactive
NBR_YEARS_CLIactive
GENDERactive
MARITAL_STATUSactive
PROFESSIONactive
SAVINGS_ACCOUNTactive
HAS_LIFE_INSURANCEactive
INT_CREDITCARDactive
ONLINE_ACCESSactive
JOINED_ACCOUNTSactive
BANKCARDactive
CLIENT_IDsupplementary
AVERAGE_BALANCEactive
NO_CRED_TRANSactive
NO_DEBIT_TRANSactive
15record(s)selected.
ReturnStatus=0
结合使用XQuery和IntelligentMiner轻松编写您自己的PMML提取函数,以及将结果作为关系数据传入您的SQL。
所有操作无需编程语言,并且创建UDF的过程更加简单,因为它受图形工具支持。
2.3、IBMSPSSModeler:
IBMSPSSModeler工具完全支持pmml模型,用户生成的数据挖掘的配置文件可以直接保存为pmml文件。
同时他支持pmml文件的导入。
2.3.1工具说明
IBMSPSSModeler工具使用数据流方式进行数据挖掘,通过将可视化的模块串联进行数据挖掘的配置。
由于IBMSPSSModeler完全支持pmml因此具体的使用方式就不列出,具体请参考使用手册。
2.3.2使用方式
完全支持,配置完成后,可以直接保存为pmml格式的xml文件。
具体使用方式参考用户手册。
第三章、开源DM工具
3.1、Weka:
Weka代码中支持从pmml文件导入模型,和导出pmml模型,但是gui目前的配置文件保存方式是kfml文件,因此gui方式下无法对pmml格式的文件进行操作。
但是在命令行方式下可以进行pmml的操作。
3.1.1程序界面
Weka中对于数据做分析的界面有两个一个是explorer,一个是knowledgeflow,其中knowledgeflow可以完全包含explorer中的功能。
Explorer界面:
Explorer中不支持导出pmml功能
Knowledgeflow界面如下:
加载配置的文件时只能是weka自定义的配置文件,不支持导出pmml功能
3.1.2代码
1,工厂方法:
weka使用工厂方式根据pmml文件生成挖掘模型。
类名为
工厂类中支持加载,并导出pmml文件。
2,pmml实现类,在pmml包中,目前支持的算法为
REGRESSION_MODEL("Regression"),
GENERAL_REGRESSION_MODEL("GeneralRegression"),
NEURAL_NETWORK_MODEL("NeuralNetwork"),
TREE_MODEL("TreeModel"),
RULESET_MODEL("RuleSetModel"),
SVM_MODEL("SupportVectorMachineModel");
3,测试类的测试方法如下:
PMMLModelmodel=getPMMLModel(args[0],null);
System.out.println(model);
if(args.length==2){
//loadanarfffile
InstancestestData=newInstances(newjava.io.BufferedReader(newjava.io.FileReader(args[1])));
InstancesminingSchemaI=model.getMiningSchema().getFieldsAsInstances();
if(miningSchemaI.classIndex()>=0){
StringclassName=miningSchemaI.classAttribute().name();
for(inti=0;iif(testData.attribute(i).name().equals(className)){
testData.setClassIndex(i);
System.out.println("Foundclass"+className+"intestdata.");
break;
}
}
}
System.out.println(applyClassifier(model,testData));
3.2、R:
R主要使用命令行方式,使用数据包中提供的函数集,进行数据处理,和数据挖掘。
在R的样例代码中没有找到和pmml相关的内容,在R的使用手册中也没有找到相关内容。
经过调研,R需要手动下载支持pmml的包,并安装pmml包后可以有函数支持pmml。
选择安装程序包后,弹出下图
选择pmml,确定后zip包开始下载。
下载完毕后选择安装zip包,选定刚才下载的2个包,即可。
提供的方法为pmml(),程序帮助如下:
pmml(model,model.name="Rattle_Model",app.name="Rattle/PMML",
description=NULL,copyright=NULL,transforms=NULL,dataset=NULL,
...)
参数