求知 文章 文库 Lib 视频 iPerson 课程 认证 咨询 工具 讲座 Modeler   Code  
会员   
 
  
 
 
     
   
分享到
基于SPSS Modeler数据库内数据挖掘应用
 
作者 周艳,火龙果软件    发布于 2013-10-31
 

摘要: 最新发布的 IBMSPSS Modeler 14.2 版本对 Netezza Analytics 进行了集成,可以把 SPSS Modeler 的可视化和易用性与 Netezza 的功能和性能相结合,为用户提供更加便捷的数据仓库、商业智能应用分析工具。本文通过对一 ...

最新发布的 IBM SPSS Modeler 14.2 版本对 Netezza Analytics 进行了集成,可以把 SPSS Modeler 的可视化和易用性与 Netezza 的功能和性能相结合,为用户提供更加便捷的数据仓库、商业智能应用分析工具。本文通过对一个决策树模型的建立和分析,帮助读者了解如何利用 SPSS Modeler 方便快捷地在 IBM Netezza 数据库中构建和使用模型。

概要

IBM SPSS Modeler Server 支持对 IBM Netezza Analytics 的数据挖掘算法进行整合,您可以使用 IBM SPSS Modeler 在 IBM Netezza 数据库内构建、分析并使用模型。借助 IBM SPSS Modeler 您只需要理解数据挖掘算法本身而无需对 IBM Netezza 语法规则的深入了解,就能便捷的使用 IBM Netezza Analytics 数据库内数据挖掘算法
决策树 (Decision tree) 由一个决策图和可能的结果组成,用来创建到达目标的规划。决策树建立并用来辅助决策,并且这些决策易于理解和实现。本文通过建立一个药品决策模型的实例来展示如何使用 IBM SPSS Modeler 在 IBM Netezza 数据库内进行数据挖掘。在示例中,您将学到如何使用 IBM SPSS Modeler 在 IBM Netezza 数据库内建立、分析及使用模型。

SPSS Modeler 与 IBM Netezza Analytics 集成介绍

IBM Netezza Analytics 数据库内数据挖掘算法集成在 IBM SPSS Modeler 数据库建模模块中,从而通过 IBM SPSS Modeler 的图形用户界面和面向工作流的开发环境使用 IBM Netezza Analytics 数据挖掘算法。可以用与其它 IBM SPSS Modeler 建模模块相同的方式添加 IBM Netezza 数据库建模模块到工作流中生成模型块。

IBM Netezza 模型块与其他 IBM SPSS Modeler 模型块的使用方式基本一样。但是 IBM SPSS Modeler 中创建的每个 IBM Netezza 模型实际引用的是存储在数据库服务器上的模型表,因此要使流正常工作,必须将其连接到创建模型所在的数据库,并且模型表未被外部进程修改

集成 IBM Netezza Analytics 的要求

以下是使用 IBM Netezza Analytics 执行数据库内建模的必备条件:

运行 IBM SPSS In-Database Analytics 数据包的 IBM Netezza Performance Server 6.0 或更高版本。

连接到 IBM Netezza 数据库所需的 ODBC 数据源。

IBM SPSS Modeler 中启用的 SQL 生成和优化。

IBM Netezza Analytics 数据库内数据挖掘建模节点介绍

在 IBM SPSS Modeler 的“数据库建模”选项卡(图 1)中可以找到目前集成的 IBM Netezza Analytics 数据挖掘算法:“Netezza 决策树”和“Netezza K- 均值”,在新版本中将支持更多的算法。建模节点主要用于设置构建模型的指定字段和参数,具体设置将在后边的示例中逐步涉及。

图 1. 数据库建模选项卡

IBM Netezza Analytics 数据库内数据挖掘模型块介绍

利用 IBM SPSS Modeler 的数据处理节点和 IBM Netezza 数据库内数据挖掘建模节点构成工作流,通过简单的设置之后就可生成 IBM Netezza 数据库内数据挖掘模型块,并且该模型块映射到在 IBM Netezza 数据库内存储的模型表,从而可视化的对该数据模型进行分析与应用。在 IBM SPSS Modeler 中,模型块图标如图 2 所,模型块的主要用途为对数据进行评分以生成预测,或允许进一步设置模型属性,模型块的具体参数将在后边的示例中逐步涉及。

图 2. 模型块

用 IBM SPSS Modeler 在 IBM Netezza 数据库内构建决策树模型

问题分析

假设已有一组患有同一疾病的患者的数据。在治疗过程中,每位患者均对五种药物中的一种有明显反应。我们的任务就是通过决策树模型进行数据挖掘找出适合治疗此疾病的药物 . 此示例使用的数据字段如图 3 所示。本文使用的示例数据 DRUG1n 可在 IBM SPSS Modeler 安装目录的 Demos 中找到。

表 1. 示例数据

数据字段 描述
Age (数值)
Sex 男或女
BP 血压:高、正常或低
Cholesterol 血液中的胆固醇含量:正常或高
Na 血液中钠的浓度
K 血液中钾的浓度
Drug 对患者有效的处方药

构建模型

上载数据

分析数据可以来源于 IBM SPSS Modeler 支持的所有数据文件或数据库中,但是如果分析数据与 IBM Netezza Analytics 不在同一数据库内则会涉及数据的迁移,IBM Netezza Analytics 通常用于大型数据集。在数据库之间传输大量数据,或者从数据库中取出或存入大量数据,可能非常耗时,因此推荐首先将数据导入数据库内再进行数据挖掘从而提高数据处理效率。

数据要求:

数据源中的字段必须包含连续或分类变量。

目标字段。只能选择一个字段作为目标可指定的输出(目标)字段。

记录 ID 字段。指定用于作为各个观测值唯一标识的字段。

建立上载数据工作流

经过商业理解、数据理解后,发现钠与钾的比值似乎可以用来预测何时使用某种药品,因此为每条记录导出一个包含此比值的字段 Na /K。

IBM Netezza 数据挖掘需要一个唯一记录字段,因此使用导出节点将新字段添加到名为 ID 的数据集中,此处使用 @INDEX 函数生成 ID 字段。

添加“分区”节点,分区节点用于生成分区字段,将数据分割为单独的子集或样本,以供模型构建的训练、测试和验证阶段使用。通过用某个样本生成模型并用另一个样本对模型进行测试,可以预判此模型对类似于当前数据的大型数据集的拟合优劣。

添加“数据库导出”节点,把数据上传到 Netezza 数据库服务器中。

如图 3 上载数据工作流所示,对数据进行预处理并将数据从纯文本文件上传到 Netezza 数据库服务器。

图 3. 上载数据工作流

构建模型

把数据上传到数据库后,使用“数据源”节点、“类型”节点、“Netezza 决策树”节点建立构建模型工作流(图 4)。

图 4. 构建模型工作流

双击“类型”节点,设置各字段的角色(图 5),字段的角色用于指定其在模型构建过程中的用法。设置字段“ID”的角色为“id 记录 ID”。设置字段“Drug”的角色为“目标”,设置目标字段后,建模节点名称自动标记为目标字段“Drug”。 设置字段“Partition”的角色为“分区”。

按图 5-图 8 设置各选项卡后执行建模节点“Drug”,模型块被添加到流,同时添加到位于窗口右上角的“模型”选项板。

图 5. 类型节点

建模节点的设置

双击建模节点(“Drug”),打开建模节点属性对话框, 在各选项卡中可以浏览和设置建模节点的属性。

字段选项卡:

用于设置各字段的角色。图 6 中各字段已经按“类型”节点的设置放在不同的角色区域。此处保持默认值

图 6. 字段选项卡

服务器选项卡:

服务器选项卡(图 7)用于设置数据分析服务器,并指定存储模型的表格。

使用上游连接:(默认)使用上游节点中指定的连接详细信息。

移动数据到连接:将数据移动到您在此处指定的数据库。您已经将数据上载到数据分析服务器内,所以此处使用上游连接。

“表名称”:用于指定在数据库中存储模型的表名,它必须为新表名。此处定义为“DTree”。

图 7. 服务器选项卡

构建选项选项卡:

通过“构建选项”选项卡(图 8),可以设置构建模型的参数,当然也可采用默认选项来构建模型。此处使用默认值。

图 8. 构建选项选项卡

“模型选项”选项卡:

通过“模型选项”选项卡(图 9),设置模型块的相关信息,勾选“包含输入字段”从而在使模型块节点输出用于建模的“输入字段”,这些字段可以用于模型评估。

图 9. 模型选项选项卡

SQL 生成与数据库内数据挖掘的结合

模型块生成后,点击 Modeler 桌面最底端中间靠右的 [ 显示流消息 ] 按钮打开“流属性”对话框(图 10), 在消息选项卡中,可以查看构建模型所使用的 SQL 以及所用的时间等信息。从消息中我们可以清楚的看到数据库内数据挖掘的流程,同时构建模型的可视化参数设置体现在 IBM Netezza Analytics 数据挖掘算法的输入参数中。

图 10. 流运行消息

数据库内构建模型的流程如下:

数据准备,读取输入数据中字段"Partition" = '1_Training'的数据用于构建模型

构建模型,调用 IBM Netezza Analytics 数据库内数据挖掘算法 nza..GROW_DECTREE 和 PRUNE_DECTREE 构建模型, 建模参数体现在算法的输入参数中。

模型浏览,调用 IBM Netezza Analytics 数据库内数据挖掘算法 nza..PMML_DECTREE 和 nza..PRINT_DECTREE 用于模型浏览

清单 1. 数据准备 SQL

CREATE VIEW "MODELER_5_ri5y7vYD_La5ojKCFphB2J"… WHERE ("T0"."C7" = '1_Training'...) 

清单 2. 构建模型 SQL

CALL nza..GROW_DECTREE('model="DTree", intable="..", id="ID", target="Drug", 
eval=entropy,minimprove=0.010000, minsplit=2, maxdepth=62') 
CALL nza..PRUNE_DECTREE('model="DTree", valtable="..", id="ID",target="Drug", 
	  qmeasure=Acc') 

清单 3. 模型浏览 SQL

CALL nza..PRINT_DECTREE('model="DTree"') 
CALL nza..PMML_DECTREE('model="DTree", target="Drug", outtable="…"')

浏览模型

双击模型块图标,模型选项卡以决策树形式显示 “Netezza 决策树” 节点所生成的规则集(图 11)。

图 11. 浏览模型

评估模型

使用分析节点评估模型的精确度。将分析节点(从输出节点选项板)附加到模型块(图 12),运行分析节点。 分析节点输出(图 13)显示:使用训练数据集(1_Training),此模型正确率为 100%;使用测试数据集(2_Testing),正确率为 99.5%,分析节点辅助确定模型的精确度能否满足使用要求。

图 12. 评估模型

图 13. 分析结果

通过 IBM SPSS Modeler 使用 IBM Netezza 数据库内决策树模型

通过 IBM SPSS Modeler 构建的 IBM Netezza 数据模型保存在数据库服务器中,通过模型块可以引用这些远程模型。 因此,对于数据库内数据挖掘,模型使用始终发生在数据库内部,并由 IBM Netezza Analytics 执行。在位于主窗口右上角的“模型”选项板中可以找到模型块。

假设需要依据患者实际信息预测适用药物, 可以从“模型”选项板中拖拽“Drug”模型块到工作区,并把待分析数据与模型块连接后添加表节点(图 14),运行表节点。注意在模型使用中仅需要构建模型时角色为“输入”和“id 记录 ID”的数据,“目标”和“分区”字段并不是必须的。

图 14. 模型块使用工作流

SQL 生成与数据库内数据挖掘的结合

建立工作流后,单击运行"表"节点后。在流消息选项卡中,可以查看使用模型的 SQL 以及所用的时间等信息。从消息中我们可以清楚的看到数据库内数据挖掘的流程如下:

数据准备,读取输入数据,该数据并不需要“Drug”( 目标 ) 和“Partition”(分区)字段。

使用模型,模型存储在表"DTree" 中,通过调用 IBM Netezza Analytics 的 nza..PREDICT_DECTREE 算法得到的预测分析结果存储在 outtable 中。

输出预测结果,从 outtable 中读取预测分析结果

清单 4. 数据准备 SQL

CREATE VIEW " MODELER_WnYJeUB89QAn7WwPcnjLq2Jc " AS  
  (SELECT T0."Age" AS "Age",T0."Sex" AS "Sex",T0.BP AS BP,T0."Cholesterol" 
  AS "Cholesterol", T0."Na/K" AS "Na/K",T0.ID AS ID FROM CLEMQA."Drug1nID" T0) 

清单 5. 使用模型 SQL

CALL nza..PREDICT_DECTREE('model="DTree", intable=" MODELER_WnYJeUB89QAn7WwPcnjLq2Jc ", 
id="ID", outtable=" MODELER_0lT8XwX58o3Eik9FezKygUwg ", prob=FALSE')

清单 6. 输出预测结果 SQL

Select *, "T1"."CLASS" AS "$I-Drug" FROM "MODELER_WnYJeUB89QAn7WwPcnjLq2Jc"
"T0" INNER JOIN "MODELER_0lT8XwX58o3Eik9FezKygUwg" AS "T1" ON ("T0"."ID" = "T1"."ID))

预测结果

在表节点的输出中(图 15),字段 $I-Drug 为依据病人的具体信息预测的适合治疗此疾病的药物。

图 15. 预测结果

结束语

通过本文,您了解了如何通过 IBM SPSS Modeler 创建基于 IBM Netezza 数据库内数据挖掘模型,并了解到如何设置、创建、分析和应用模型。这样,您就可以通过 IBM SPSS Modeler 可视化的数据流风格方便快速地创建和应用一个 IBM Netezza 数据库内数据挖掘模型。

本文中的药物模型示例,用一个完整的工作流演示了怎样通过 IBM SPSS Modeler 提供的工具预处理、上载数据、设置模型参数、分析和使用模型。通过此示例,您可以立刻动手创建和使用自己的 IBM Netezza 数据库内数据挖掘模型。

相关文章 相关文档 相关视频



我们该如何设计数据库
数据库设计经验谈
数据库设计过程
数据库编程总结
数据库性能调优技巧
数据库性能调整
数据库性能优化讲座
数据库系统性能调优系列
高性能数据库设计与优化
高级数据库架构师
数据仓库和数据挖掘技术
Hadoop原理、部署与性能调优
 
分享到
 
 
     


MySQL索引背后的数据结构
MySQL性能调优与架构设计
SQL Server数据库备份与恢复
让数据库飞起来 10大DB2优化
oracle的临时表空间写满磁盘
数据库的跨平台设计
更多...   


并发、大容量、高性能数据库
高级数据库架构设计师
Hadoop原理与实践
Oracle 数据仓库
数据仓库和数据挖掘
Oracle数据库开发与管理


GE 区块链技术与实现培训
航天科工某子公司 Nodejs高级应用开发
中盛益华 卓越管理者必须具备的五项能力
某信息技术公司 Python培训
某博彩IT系统厂商 易用性测试与评估
中国邮储银行 测试成熟度模型集成(TMMI)
中物院 产品经理与产品管理
更多...