技术开发 频道

InfoSphere 和Cognos检测偏差

    【IT168 技术文章】

    使用 InfoSphere Warehouse 进行偏差检测

    什么是偏差检测?

    偏差检测是一项在大型数据集中发现异常数据记录的任务。这些记录称为离群值。“异常” 的确切定义还有待讨论,但它与应用偏差检测的领域有关。通常而言,偏差检测的目标是发现不符合大多数数据记录整体统计分布的数据记录。根据应用领域不同,偏差可能是:

    不正确的数据(例如,如果一个人的年龄为 300,这很可能是数据库中一个不正确的条目)

    异常行为(例如,不符合通常模式的信用卡事务)

    相应地,偏差检测可用于不同的任务。如果您猜测数据集包含不正确的数据,那么可以应用偏差检测进行数据清洗,从而发现数据库中不正确的条目。在第二种情况下,数据是正确的,但是反映出某个过程表现出异常的行为。这可用于检测欺诈,这是偏差检测的第二个主要应用。前面已指出,异常的行为不一定是欺诈。例如,也可能表明新兴的模式,比如 “过度使用在线拍卖的老年客户”。尽早检测出新兴模式有助于公司尽早提供新的产品或服务,从而获得竞争优势。在财务部门就可以发现类似的应用。可以使用偏差检测来发现有前景的投资,这种投资不符合通常的模式,因而到目前为止还没有人意识到。在所有这些案例中,必须由分析师来检查离群值,看看是数据是否正确,是否需要采取措施避免欺诈,或者利用还没有人意识到的机遇。接下来将了解 InfoSphere Warehouse 如何检测离群值,以及如何对数据应用偏差检测。本文剩下的内容讨论如何在 Cognos 中交互式地可视化离群值。

    InfoSphere Warehouse 中的偏差检测

    近年来产生了很多不同的用于检测偏差的方法。InfoSphere Warehouse 使用一种特别强大的方法来进行偏差检测,这种方法基于数据集群。集群是一种数据挖掘技术,这种技术根据数据记录的属性将相近的数据记录指定到集群中。我们来看看 图 1。图中每个点表示一个客户。在这个简单的案例中,客户只以年龄和平均余额来描述。InfoSphere Warehouse 使用一个统计集群算法将在这两个维上相近的客户分到集群中。可以看到,有些集群比其他集群更大,更集中(集群 1 相对于集群 3)。InfoSphere Warehouse 结合一些属性为每个集群赋予一个 “偏差” 度。这个度越高,则该集群中的记录越有可能是离群值。

    图 1. 基于集群的偏差检测

    离群值与非离群值之间并没有明显的区别。实际上,用户必须指定一个阈值,以便界定离群值。偏差度高于这个阈值的所有集群被标记为离群值集群,它们的成员都是离群值。这个阈值可通过两种方式来设置。首先,如果检查离群值的专家有限,那么可以使用具有最高偏差度的集群的数据记录。如果要寻找有投资前景的公司,那么可以先从具有最高偏差度的集群开始,然后在资源允许的情况下,逐渐转向偏差度较低的集群。其次,阈值可以是固定的。一个例子就是警报场景,在此场景中,当有新的数据记录分配到具有高于给定阈值的偏差度的集群时,则需要采取行动。InfoSphere Warehouse 同时支持这两种方式,您只需为每个数据记录赋予一个集群 id 和相应的偏差度。您可以过滤记录,也可以对它们进行排序,从而获得想要查看或必须检查的离群值。接下来的小节将提供一个例子,以逐步演示如何用 InfoSphere Warehouse 发现离群值,以及如何为各个数据记录赋予偏差度。

    一个实例

    接下来的例子对关于银行客户的条目应用偏差检测。图 2 中显示了相应表中的示例数据。表 BANK.BANKCUSTOMERS 是 InfoSphere Warehouse 的示例中附带的。

    图 2. BANK.BANKCUSTOMERS 表中的示例数据

    为了检测这个表中的离群值:

    像 将 InfoSphere Warehouse 数据挖掘与 IBM Cognos 报告集成,第 1 部分:InfoSphere Warehouse 与 Cognos 集成架构概述 中描述的那样,创建一个新的挖掘流。

    同样,像上一篇文章那样,您必须将一个 table source 操作符拖到编辑器中。

    双击打开这个操作符,指定 BANK.BANKCUSTOMERS 作为源数据库表,并单击 OK 确认。

    现在,将一个 “Find Deviations” 操作符拖到画布上 table source 旁边的位置,并将 table source 的输出端连接到 “Find deviations” 的输入端。将 “Find Deviations” 操作符生成的集群模型的模型名称改为 IDMMX.OUTLIERMODEL。双击该操作符打开属性,在向导的第二页更改模型名称。

    最后,从 “Find Deviations” 操作符输出端的右键菜单中选择 “Create Suitable Table...”,创建适当的目标表。在向导的第一个页面上,选择模式 BANK,并输入表名 CUSTOMERS_OL。单击 Finish。一个 “Table Target” 操作符将被连接到流中。如果想要多次运行这个流,那么可以在 “Table Target” 操作符的属性中勾选复选框 “Delete Previous Content”。

    这个流装载客户表,将它传递到偏差检测算法,并将结果写到一个新表中(如 图 3 所示)。在 图 4 中可以看到具体的结果。

    图 3. 用于检测偏差的挖掘流

     可以看到,这里有两个附加列,即 DEV_DEGREE 和 CLUSTER_ID。前一个列表明记录倾向于离群值的程度。cluster id 是记录所属的 “离群值” 集群的 id。可以通过分析 find deviation 操作符内部创建的集群模型,提取关于这些集群的更多信息。(本文还将对此进行详细讨论)。

图 4. 结果表 BANK.CUSTOMER_OL 中的示例数据

0
相关文章