InfoSphere与Cognos集成架构概述
在 Cognos 报告中使用数据挖掘结果:卫生保健部门的一个例子
这个例子分析一家医院的病人数据。这家医院的心脏科有他们的病人的主记录,以及一些度量指标,例如心率、血压、胆固醇等。这家医院针对四种不同的心脏病对病人进行检查。病人的记录中有一个列表明他们是否患有四种心脏病之一,y 表示是,n 表示否。图 1 中描绘了相应的心脏病数据库表。这个表可以在 InfoSphere Warehouse 附带的例子中找到。
分析的目标是预测新的病人患上这四种心脏病之一的风险。如果风险较高,则应该立即进行体检。
这里启用了风险管理,虽然没有针对这四种心脏病之一做过专门的检查,但是已经从一些早期的在其他地方做的体检得到度量指标。
创建预测模型
首先,基于 HEART 表创建一个预测模型,通过该模型可以预测病人患上心脏病的风险。
创建一个 Data Warehouse 项目:
右键单击 Project Explorer,并选择 New > Data Warehouse Project(如下面的图 4 所示)。

图 4. 创建一个 Data Warehouse 项目
在接下来的向导中,输入项目名称,例如:AdvancedAnalytics。然后单击 Finish。
创建一个空的挖掘流:
展开新创建的项目。
右键单击文件夹 Mining Flows,并选择 New > Mining Flow。
在出现的向导中,输入挖掘流的名称 Heart Disease Risk。
在这个例子中,您将使用数据库。因此,保留默认设置,单击 Next。
选择 DWESAMP 数据库,并单击 Finish。
创建挖掘流:
这时会打开 Mining Flow 编辑器。在挖掘编辑器的右侧可以看到一个面板,其中有一些操作符(见图 5)。可以通过将这些操作符拖放到编辑器画布上来构建一个挖掘流。

图 5. Design Studio 中的挖掘流
为了创建用于预测病人患病风险的挖掘模型,可遵循以下步骤:
在面板中,从 Sources and Targets 区中选择一个 Table Source 操作符,将它拖到编辑器上。
在表选择对话框中,展开 HEALTHCARE 模式并选择 HEART 表,然后单击 Finish。
在面板中,从 Preprocessing Operators 区中选择一个 Random Split 操作符并将它拖到编辑器上。
通过拖动鼠标,将第一个操作符的 Output 端连接到第二个操作符的 Input 端。
选择 Random Split 操作符。
在挖掘编辑器下面的 Properties 选项卡中,将测试数据属性 Percentage 设为 20。这意味着之后我们将使用 20% 的数据来验证我们的模型。因此,在构建预测模型之前,必须先划分数据。
在面板中,从 Mining Operators 区选择一个 Predictor 操作符并将它拖到编辑器上。
将 split 操作符的 Training Output 端与 Predictor Input Port 相连。
选择 Predictor 操作符。
在挖掘编辑器下面的 Properties 选项卡中,选择左边的 Mining Settings 选项卡。
在 Target column 选择列表中,选择 DISEASED 作为要预测的列。
Design Studio 自动识别出您要预测一个标称值列,并自动提供可用于这一目的设置(在同一个选项卡中)。在 Algorithm 选择列表中,选择 Na?ve Bayes。
在 Mining Settings properties 选项卡上,选择 Model Name 选项卡。保留前缀,但是将模型名称改为 HeartDiseasePrediction。
另外,从面板中的 Mining 区选择 Tester 操作符,并将它拖到编辑器上。
将 Predictor 的 Model output 端与 Tester 的 Model input 端相连,再将 Random Split 的 Test output 端与 Tester 的 input 端相连。
保存挖掘流,例如单击编辑器区并按 Ctrl+S。
现在,挖掘流已经可以执行了。
执行挖掘流:
可以执行整个挖掘流编辑器,或者通过右键单击一个操作符并选择 Run to this step… 只执行挖掘流中特定的路径。在这个场景中,右键单击 Tester 操作符,选择 Run to this step…,然后单击 Finish。这个流生成一个模型,该模型预测患上心脏病的风险,并将它存储在数据库中。先在 80% 的数据上对它进行训练,然后在剩下的数据上对它进行测试。这样可以估计该模型在新数据上执行的效果。这里只需右键单击 Tester 操作符的 Test Result 端。您也可以看看模型本身。为此,右键单击 Predictor 操作符的 Model 端。
使用挖掘模型对新数据进行评价
评价是指将之前经过学习的模型应用到新数据上。新的数据没有分类别(这里是指还没有做过心脏病检查),评价过程根据挖掘模型将一个预测赋给每个新的记录。
为评价创建一个新的挖掘流:
执行与创建新的挖掘流中相同的步骤,但是为它提供另一个名称,例如 Classify New Patients。
创建评价流:
为了创建用于对新病人分类的评价流,可执行以下步骤:
在面板中,从 Sources and Targets 区选择一个 Model Source 操作符并将它拖到编辑器上。
在挖掘模型选择对话框中,展开 classification 模型,并选择 AdvancedAnalytics.HeartDiseasePrediction 模型。
从面板的 Sources and Targets 区中将一个 Table Source 操作符拖到编辑器上。
在表选择对话框中,展开 HEALTHCARE 模式并选择 HEART 表。可以每晚将这个表装载到仓库中,或者每当有新的病人来医院,并且有必要的度量指标时实时地将这个表装载到仓库中。
从面板的 Mining Operators 区中将一个 Scorer 操作符拖到编辑器上。
将模型和 table source 操作符连接到 scorer。
scorer 附加 2 个列,其中一个列包含类别(y 和 n),另一个列指定这个类别的确定性。为了存储这个有评价信息的表,必须以 Table Target 操作符的形式创建一个包含这些列的适当的表。
为此,右键单击 scorer 的输出端,并选择 Create Suitable Table…。
在出现的对话框中,指定新表的名称:NEW_PATIENT_CLASSIFICATION,以及将在其中创建这个表的模式:HEALTHCARE。 单击 Finish。
保存评价流。
最后,通过右键单击 table target 操作符并选择 run to this step,执行这个流。
执行这个流后,下方的视图会显示有评价信息的表中的示例数据(见图 6)。如果向右滚动,可以看到 scorer 添加的两个列。

图 6. 有示例结果的评价流
第一个附加的列 PREDICTED_CLASS 包含预测。它表明挖掘模型将当前病人归为哪种类型,将患上(y)还是不会患上(n)这种病。第二个附加的列 CLASS_CONFIDENCE 包含介于 0 到 1 之间的数字,它表明 scorer(根据模型)对于预测有多大的确定性。1 表示 “100% 确信预测的类别是正确的”。