分类: 系统运维
2009-03-18 16:01:21
2009 年 2 月 12 日
数据挖掘为从大量数据中提取出有用的信息提供先进的分析技术。在过去,数据挖掘一直由统计和数据分析专家来完成。另一方面,数据挖掘的结果又常常与公司中各种不同的用户有关联。本系列的文章谈到了将 IBM® InfoSphere™ Warehouse 数据挖掘与 IBM Cognos® 报告相结合的总体架构和商业机遇。这种集成使公司中的不同人员可以利用数据挖掘的结果。本系列的第 1 篇文章介绍基本的集成架构,并提供一个简短的技术案例研究,使您基本了解如何完成这种集成。
数据挖掘使专家、分析师和用户可以洞察大量数据集中存在的模式,并使之成为日常业务流程中的一部分。在过去,数据挖掘一直是统计和数据分析专家的任务。另一方面,数据挖掘的结果又常常与公司中各种不同的用户有关联。
考虑以下场景。您收集关于符合特定的人口特征(例如年龄、职业和居住地点)的客户以及过去的事务(例如售出的产品以及合同)的数据。商场营销部门希望针对具有相似特点的特定客户群开发新的定制产品。如何发现那样的独特用户群?数据集群为这个问题提供了一个解决方案。它自动根据数据集的属性或特征对数据集进行分组。然后,分析师查看这些组,并交互式地对它们进行微调,直到满足他/她的需要。而市场营销专家将发现,有一群为数不多、但是在经济上有重大意义的客户,他们的年龄超出了平均年龄,不使用 Internet 银行。根据这样的信息,可以为这些客户开发专门的产品。在分析过程中,一个关键的步骤就是让用户理解数据集群步骤的结果。专业的分析师通常并不擅长低级的数据库编程。
如何将数据挖掘的结果交付给需要它的分析师和雇员?如何显示结果,以反映用户所涉及的业务流程?如何满足安全性需求,使每个用户只看到他/她应该看到的内容。对于这些问题,要想给出令人满意的答案,必须将视角从统计分析转变到实际的终端用户以及他/她所涉及的业务流程上来。InfoSphere Warehouse 是企业数据仓库的强有力的基础。InfoSphere Warehouse 直接在存储数据的底层 DB2 数据库中提供数据挖掘功能。整个数据挖掘功能可以通过一个容易使用的、基于 Eclipse 的工具平台来访问,而且部署任务可以直接在工具中触发。
IBM Cognos 是报告解决方案中的领先者之一。在很多公司中,报告扮演着一个重要的角色,因为它有助于以不同的方式为不同的目标人群合并和可视化相关信息。报告的结果通常是通过对存储在数据仓库中的信息应用基本的算术运算而得到的(例如,每月的平均销售额)。对于高级的分析,例如上面的例子,则超出了报告框架的范围和能力。因此,可以将两者相结合,既使用 InfoSphere Warehouse 的可伸缩的、高级的分析功能,又使用 IBM Cognos 已有的、先进的报告功能。接下来的小节展示如何灵活地将 IBM InfoSphere Warehouse Data Mining 与 IBM Cognos 相结合,以实现这个目标。这种集成不需要任何复杂的编程或设置,只需使用纯 DB2 SQL 就能完成。
接下来的小节简要地介绍 InfoSphere Warehouse 和 IBM Cognos 的基本架构。然后将描述如何集成它们。最后,通过一个简单的、逐步讲解的来自医疗保健领域的例子来演示这种集成。这个系列接下来的文章将描述这种集成的一些更高级的技巧和概念。
|
InfoSphere Warehouse 以 DB2 作为数据存储。它提供了数据库分区功能(DPF),以便以可伸缩的、安全的、高性能的方式存储数据仓库中的数据,并将在线事务处理(OLTP)数据库的优点与大型数据仓库的存储需求相结合。InfoSphere Warehouse 提供了很多不同的用于仓库管理和分析的工具。这些分析组件有:
InfoSphere Warehouse Design Studio 是基于 Eclipse 的工具平台,用于为数据挖掘和文本分析设计工作负载规则、数据转换流和分析流。然后,可以将这些流部署到 InfoSphere Warehouse 管理控制台,以根据需要进行调度和运行。InfoSphere Warehouse 数据挖掘是用 DB2 存储过程和用户定义函数构建的,以利用 DB2 作为执行环境,从而获得高性能的数据库内执行。可以通过 SQL 接口或通过 InfoSphere Warehouse 的挖掘流访问它。
数据挖掘是一项从大型数据集中发现有用信息的任务。一个典型的场景是医疗保健,本文将用它作为实例。如今可以收集到大量的卫生保健数据,这些数据描述很多不同的病人数年来的状态。这种数据的一个重要用途是在早期发现潜伏性疾病的指标。例如,出于这个目的,可以收集患有心脏病的病人的数据,并分析什么因素与这种疾病有关,例如血压和体重。这种数据必须在收集后进行转换,使之能用于数据挖掘。更具体而言,需要有一个表,每个病人对应于其中的一行记录,表中有一些列,表示关于病人的信息。而且,还应该有一个专门的列表明这个病人是否真正患病。图 1 显示了一种可能的模式:
基于这种数据,InfoSphere Warehouse 中的存储过程可以构建一个模型,对于任何新的病人,该模型可以预测他/她是否可能有潜伏性心脏病。这个过程称作 “建模”。这样得到的 XML 数据挖掘模型存储在数据库中,可以通过 SQL/XQuery 进行访问。这个模型可用于两个目的:首先,可以从这个模型提取信息,以洞察哪些是心脏病的重要指标以及其他统计信息。其次,可以将该模型自动应用到新的数据记录上。因此,对于在心脏病这一列上还没有值的任何记录,可以自动添加这个值,另外再添加一个表示预测的置信度的一个值。这个过程称作 “评价”。图 2 通过示意图显示了这个过程:
InfoSphere Warehouse 几乎包含目前所有数据挖掘算法的极为高效的实现。要调用数据挖掘,首先要将数据写到一个表中。然后创建一个模型,再将这个模型应用到目标值尚且未知的记录上,以产生一个预测和该预测的置信度值。所有数据挖掘函数都是作为常规的 SQL 命令来调用的,后面您将看到这一点。这样便很容易集成到几乎所有的设置中,例如 Web 服务。
IBM Cognos 8 Business Intelligence 提供一套完整的商业智能(BI)功能,并且基于一个灵活的面向服务架构(SOA)。它的主要功能有报告、分析、指示板(dashboard)和计分卡(scorecarding)。
报告用于聚合关于业务流程的相关数据,并将它分发给最能从这种特定信息中受益的人。在数据挖掘环境中,这意味着将结果传递给最能从生成的业务洞察力中受益的人。
创建和发布业务报告所需的 Cognos 8 组件有:
要将这种数据放入报告中,需要执行两个步骤:
能够从关系数据源创建报告是 InfoSphere Warehouse 数据挖掘与 IBM Cognos 集成的关键。
|
如前所述,Cognos 报告的内容由一个关系数据源交付的一个结果集组成。一个特定报告的内容由针对一个或多个数据源的一个(动态的)SQL 查询决定。可以通过以下方式,利用这个基本的通信模式将数据挖掘与 Cognos 报告集成:
图 3 总结了所有这些案例中使用的调用模式。
可以通过一个存储过程调用来调用数据挖掘,数据挖掘将在数据库中创建一个 XML 挖掘模型。可以根据新的数据记录这个模型,或者将模型信息提取到一个表中。然后,Cognos 可以使用这些表。从 Cognos 报告中,用户可以通过调用数据库上相应的存储过程,交互式地调用数据挖掘。
这种集成带来了很多好处:
接下来的小节是这种集成的一个逐步讲解的例子,这也是最简单的例子:对数据库中的记录进行评价,并将结果显示在一个 Cognos 报告中。模型信息的提取和从 Cognos 中对数据挖掘的动态调用将在本系列接下来的文章中谈到。
|
这个例子分析一家医院的病人数据。这家医院的心脏科有他们的病人的主记录,以及一些度量指标,例如心率、血压、胆固醇等。这家医院针对四种不同的心脏病对病人进行检查。病人的记录中有一个列表明他们是否患有四种心脏病之一,y 表示是,n 表示否。图 1 中描绘了相应的心脏病数据库表。这个表可以在 InfoSphere Warehouse 附带的例子中找到。
分析的目标是预测新的病人患上这四种心脏病之一的风险。如果风险较高,则应该立即进行体检。
这里启用了风险管理,虽然没有针对这四种心脏病之一做过专门的检查,但是已经从一些早期的在其他地方做的体检得到度量指标。
首先,基于 HEART 表创建一个预测模型,通过该模型可以预测病人患上心脏病的风险。
创建一个 Data Warehouse 项目:
右键单击 Project Explorer,并选择 New > Data Warehouse Project(如下面的图 4 所示)。
在接下来的向导中,输入项目名称,例如:AdvancedAnalytics。然后单击 Finish。
创建一个空的挖掘流:
创建挖掘流:
这时会打开 Mining Flow 编辑器。在挖掘编辑器的右侧可以看到一个面板,其中有一些操作符(见图 5)。可以通过将这些操作符拖放到编辑器画布上来构建一个挖掘流。
为了创建用于预测病人患病风险的挖掘模型,可遵循以下步骤:
现在,挖掘流已经可以执行了。
执行挖掘流:
可以执行整个挖掘流编辑器,或者通过右键单击一个操作符并选择 Run to this step… 只执行挖掘流中特定的路径。在这个场景中,右键单击 Tester 操作符,选择 Run to this step…,然后单击 Finish。这个流生成一个模型,该模型预测患上心脏病的风险,并将它存储在数据库中。先在 80% 的数据上对它进行训练,然后在剩下的数据上对它进行测试。这样可以估计该模型在新数据上执行的效果。这里只需右键单击 Tester 操作符的 Test Result 端。您也可以看看模型本身。为此,右键单击 Predictor 操作符的 Model 端。
评价是指将之前经过学习的模型应用到新数据上。新的数据没有分类别(这里是指还没有做过心脏病检查),评价过程根据挖掘模型将一个预测赋给每个新的记录。
为评价创建一个新的挖掘流:
执行与创建新的挖掘流中相同的步骤,但是为它提供另一个名称,例如 Classify New Patients。
创建评价流:
为了创建用于对新病人分类的评价流,可执行以下步骤:
执行这个流后,下方的视图会显示有评价信息的表中的示例数据(见图 6)。如果向右滚动,可以看到 scorer 添加的两个列。
第一个附加的列 PREDICTED_CLASS 包含预测。它表明挖掘模型将当前病人归为哪种类型,将患上(y)还是不会患上(n)这种病。第二个附加的列 CLASS_CONFIDENCE 包含介于 0 到 1 之间的数字,它表明 scorer(根据模型)对于预测有多大的确定性。1 表示 “100% 确信预测的类别是正确的”。
在使用挖掘结果创建报告之前,需要定义应该使用哪些资源(数据库、表或视图???。Framework Manager 还允许通过定义连接和新列(用表达式)来增加数据源。
这个简单的例子创建一个 Cognos Framework Manager 报告。定义有评价信息的结果表,并发布元数据。
打开 Framework Manager 并创建一个新项目:
在 Project Viewer 的左侧,可以浏览新创建的项目。现在,定义一个附加列,以组合评价流创建的 2 个预测列的洞察力。其思想是以一种容易理解的方式为医生提供挖掘出的洞察力。
为此,执行以下步骤:
IF ( [DWESAMP].[NEW_PATIENT_CLASSIFICATION].[PREDICTED_CLASS] = 'y') THEN (IF ([DWESAMP].[NEW_PATIENT_CLASSIFICATION].[CLASS_CONFIDENCE]>0.83) THEN('necessary') ELSE('maybe')) ELSE (IF([DWESAMP].[NEW_PATIENT_CLASSIFICATION].[CLASS_CONFIDENCE] > 0.9) THEN('not necessary') ELSE('maybe')) |
创建一个包并发布它:
Cognos Report Studio 是一个完全基于 Web 的应用程序。可以通过从桌面双击 Internet Explorer 图标(左上角)启动 Report Studio。
为创建一个简单的挖掘报告,必须执行以下步骤:
图 11 显示最后的报告。最右边的列显示风险类别。
|
本文描述了可以将 InfoSphere 数据挖掘简单地集成到 Cognos 报告中的基本架构。集成对于接受数据挖掘有重要的影响,因为结果的使用者不必知道关于挖掘过程的任何细节。本文提供了源于卫生保健部门的一个实用的例子,这个例子展示了如何通过很少的开发实现简单的集成。
除此之外,还有其他可能性。接下来的文章将讨论一些更高级的话题,例如钻取、framework manager 中度量指标的使用以及从 Cognos 报告中动态调用数据挖掘。
chinaunix网友2009-03-18 16:07:24
本文的意义在于:通过不同查询主题的关联,实现深层钻取功能。 实际范例: 1.时间维度, 首先展示1年内的数据统计,根据时间维度钻取当年所有月份的统计,然后钻取当月所有日期的统计,然后钻取特定日期 2.机构维度。。。