年前给大家介绍了数据挖掘一个典型的应用—商品推荐《太可怕!“年货节”你想买啥,电商网站都知道》。
开年迎接新挑战,学点高难度知识,从更高层面了解关联规则挖掘技术。
当我们在某电商网站搜索“数据挖掘”的书时,商品页面会同时推荐一些其它类似的书籍,这里面就用到了“剁手党们”天天接触到的关联规则挖掘技术。

关联规则(Association Rules)是反映一个事物与其他事物之间的相互依存性和关联性,如果两个或多个事物之间存在一定的关联关系,那么,其中一个事物就能通过其他事物预测到。关联规则是数据挖掘的一个重要技术,用于从大量数据中挖掘出有价值的数据项之间的相关关系。
关联规则挖掘的最经典的例子就是沃尔玛的啤酒与尿布的故事。通过对超市购物篮数据进行分析,发现美国妇女们经常会叮嘱丈夫下班后为孩子买尿布,30%-40%的丈夫同时会顺便购买喜爱的啤酒,超市就把尿布和啤酒放在一起销售增加销售额。所以关联规则挖掘有时也叫购物篮分析。
关联规则挖掘方法
支持度和置信度
要了解关联规则,就要了解什么是“经常同时购买”。这是通过支持度(support)与置信度(confidence)来衡量的。
支持度:support(A-->B) = |AB|/|N|
商品A和B(如啤酒和尿布) 同时出现在同一个购物清单中的数量 / 总的购物清单数。
置信度:confidence(A-->B) = |AB|/|A|
同时出现在同一个购物清单中的数量/A出现的数量。即规则A-->B的可信度。
可信度是对关联规则的准确度的衡量,支持度是对关联规则重要性的衡量。
支持度说明了这条规则在所有事务中有多大的代表性,显然支持度越大,关联规则越重要。
关联规则有很多不同的算法,下面介绍两种最经典的算法。
Apriori算法
Apriori算法是一种对有影响的挖掘布尔关联规则频繁项集的算法,通过算法的连接和剪枝即可挖掘频繁项集。
Apriori算法将发现关联规则的过程分为两个步骤:
1. 通过迭代,检索出事务数据库中的所有频繁项集,即支持度不低于用户设定的阈值的项集;
2. 利用频繁项集构造出满足用户最小置信度的规则。
挖掘或识别出所有频繁项集是该算法的核心,占整个计算量的大部分。

FP-Growth算法
FP-Growth算法通过构造一个树结构来压缩数据记录,使得挖掘频繁项集只需要扫描两次数据记录,而且该算法不需要生成候选集合,所以效率会比较高。FP-Growth算法主要步骤:
1. 利用数据集中的数据构造FP-Tree。
从空集开始,将过滤和重排序后的频繁项集依次添加到树中。

2. 从FP-Tree中挖掘频繁模式。
构建好 FPFP 树后,即可抽取频繁项目集,其思路与 Apriori 算法类似——先从单元素频繁项目集开始,然后逐步构建更大的频繁项目集。

关联规则挖掘的步骤
接下来我们在WonderDM中介绍一下进行关联规则挖掘的步骤。
准备数据
我们准备了某超市的一些购物篮数据。

该数据集有7个字段。根据关联规则的挖掘特性,需要选择一个事务字段和一个事项字段。不然发现,CARD_NO(卡号)字段同一卡号购买过多种不同商品,可作为事务字段,而GOODS(购买商品)字段可作为事项字段。另外,界面信息显示,该数据集有2800条购买数据,由939个客户(卡号)购买了11种不同商品,符合“经常同时购买”的特征。
接下来我们开始用数据集训练一个合适的关联规则模型。
训练模型
先创建一个挖掘过程,选择关联规则FP-Growth进入挖掘过程界面。

系统内置了两种关联规则算法,他们的参数设置都一样。我们选择性能较好的FP-Growth算法。再选择“购物篮”数据集,选择CARD_NO字段为事务字段,GOODS字段为项字段,设置所有数据参与挖掘(100%抽样)。最低支持度设置为5项,最小可信度设置为40%。注意,这两个参数设置过大,可能挖掘不出关联规则,可根据实现情况调整。点击”训练模型”菜单查看训练出来的关联规则。

如上图所示,该模型挖掘到了100条关联规则。每条关联规则左边代表。
系统虽然内置了FP-Growth和Apriori两种挖掘算法,而且操作方法一样,但它们还是存在以下特点:
Apriori算法效率较低,计算过程中需要多次扫描整个数据集,占用较多的内存和计算时间;
FP-Growth算法效率较高,只需要扫描两次数据集,占用更少的内存和计算时间。但对于长事务(同一事务,很多事项),会造成FP树深度过大,计算时间显著增加。
所以在选择算法时,绝大部分情况下,可以优先选择FP-Growth算法。
模型应用
关联规则模型的应用同其它类型的挖掘模型,也是要先发布选择好的关联规则模型,再制作相应的模型应用用于关联规则的显示和查询。这里就不重复讲解了。
小 结
关联规则挖掘的应用领域非常多,但凡需要分析事物和事物间的频繁模式的场景,都可以用到关联规则挖掘。这项技术在一些众所周知的行业有了许多成熟应用,例如:
电商或零售业的商品推荐
百度文库推荐相关文档
医疗推荐可能的治疗组合
生物研究中,发现有毒植物的共性特征,识别有毒植物
银行推荐相关联业务
搜索引擎推荐相关搜索关键词
门户网站通过点击流分析热点新闻
看到这些应用,你是不是也想为你的系统增加智能推荐的神奇功能呢?


