【IT168 技术文章】
市场购物篮分析及关联规则挖掘
关联规则及其应用
关联规则描述了哪些项目经常同时发生。在这种上下文环境中,交易的概念就显得极其重要。到商店的一次访问就应被视作是一次交易,而在这次访问期间所购买的所有商品都是同时发生的,被称作是一个市场购物篮。当然,也可以将某顾客在一年内所有的购物视作是一次交易。这取决于所采用的规则。
让我们看一个简单的例子。下表展示了商品的交易。每次交易都包含顾客在一次到店期间所购买的所有商品。

图 1. 示例交易
可以看出,pc 的购买次数很频繁。而 pc 和显示器的组合则占到了所有交易的 20%。另外,在购买了 pc 和显示器的情况中,有 50% 还会购买鼠标。如果我们采用如下规则,即 [PC, Monitor]->Mouse,其中 [Pc,Monitor] 是主体,而 Mouse 则是头或目标,那么同时涉及主体和头的交易数量除以所有交易的数量得到的就是 support (20%)。 这种测量方法能告诉我们该规则在数据内发生的频率。但它并不能告所我们该规则的准确度。confidence 描述了规则的主体和头在交易内同时发生次数的百分比。这能给出有关规则准确度的信息。关联规则挖掘要求用户要能说明最少 support 和 confidence。算法还能准确表述出满足这些标准的项目和规则的组合。
关联规则挖掘的应用场景很多。其中最为突出的就是我们已经提到过的零售业。关联规则可用来进行超级市场内的商品摆放,以便经常同时购买的产品的位置能够彼此靠近。更为重要的是,关联规则还可用在电子商务中,通过向用户建议他们可能感兴趣的其他商品来进行潜在的交叉销售。另一个应用的领域是健康医疗,利用关联规则找出经常同时发生的健康问题,以便诊断出患一种疾病的患者还能进行额外的检查,从而判断该患者是否存在其他与此疾病经常连带发生的身体问题。其他的应用领域还包括侵入检测、Web 日志分析、数据库访问模式等等。
序列规则是关联规则的一种,与关联规则稍有不同。序列规则不只能表明哪些实体同时发生,而且还能表明就其出现的时间而言这些事件是如何关联的。比如,序列规则可能会表明先购买笔记本再购买笔记本包的顾客,很有可能在 6 个月内还会购买一个便携鼠标。本文所展示的大部分内容也都适用于序列规则。
InfoSphere Warehouse 内的关联规则挖掘
对关联规则挖掘的调用是通过调用一个存储过程完成的,与 InfoSphere Warehouse 内的所有其他挖掘操作无异。受支持的交易格式各异,在本文的后续章节,我们将使用如下所示的这种交易格式。

图 2. 交易表
要执行挖掘,必须先告知算法,在哪些列能找到实际的商品,在哪一列包含如何将商品组合成交易的相关信息。在本例中,此列的名字是 TRANSID,用途是根据每个顾客购物的情况对商品进行组合。我们也可以使用顾客 id 作为组的 id 来根据顾客购物的完整历史寻找关联。使用 SQL 命令 IDMMX.BuildRuleModel 或 DesignStudio 内的 Associations 操作符,就能调用挖掘。但必须提供模式名、交易表名、组列、最小 support 和 confidence 以及最大的规则长度。请注意,商品是由 id 描述的。商品的名称可以通过一个名称映射表添加,该表包含商品 id 及相应的描述。此外,还有很多其他的可选项,比如分类法、商品重量等。更多细节,请参考 InfoSphere Warehouse 教程。
与分类或集群模型类似,规则模型也可以在 DesignStudio 被可视化。我们还可以将此模型内包含的信息提取到表内,这与 集群的情况是一样的。通过命令 IDMMX.DM_getRules 或 DesignStudio 内的 Rule Extractor 操作符可实现此目的。在结果集内,每个记录包含一个规则,并具有如下信息:
head
body
confidence
support
lift
length
而包含被提取后的规则的表则非常类似于:

图 3. 规则表