基于 IBM SPSS Modeler 的 IBM Netezza Analytics 数据库内数据挖掘应用

Modeler 中 Netezza Analytics 数据库内数据挖掘示例

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

周艳, 软件工程师, IBM

周艳的照片周艳,IBM 软件工程师,西安理工大学毕业,2009 年加入 SPSS,从事统计分析软件的开发,目前专注于 modeler 与数据库的集成开发。



付同堂, 软件工程师, IBM

付同堂的照片付同堂,中国科学院硕士,2010 年加入 IBM 以来致力于 Modeler 开发工作,目前专注于 Modeler 与数据库的集成开发和产品的国际化支持。



吴健新, 软件工程师, IBM

吴健新吴健新,西北工业大学毕业,2007 年加入 SPSS(IBM),一直从事 Modeler 的开发工作,主要使用 Java 和 C++ 开发。



2012 年 6 月 07 日

简介

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 数据库内建立、分析及使用模型。

IBM 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 数据库内数据挖掘模型。

参考资料

学习

获得产品和技术

  • 下载 IBM 软件试用版,体验强大的 DB2®,Lotus®,Rational®,Tivoli®和 WebSphere®软件。

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=820246
ArticleTitle=基于 IBM SPSS Modeler 的 IBM Netezza Analytics 数据库内数据挖掘应用
publish-date=06072012