2.6 KiB
8.1 关联规则与Apriori算法
什么是关联规则
顾名思义,关联规则就是发现数据背后存在的某种规则或者联系。举个例子:通过调研超市顾客购买的东西,可以发现 30% 的顾客会同时购买薯片和可乐,而在购买薯片的顾客中有 80% 的人购买了可乐,这就存在一种隐含的关系:薯片->可乐
,也就是说购买薯片的顾客会有很大可能购买可乐,因此商场可以将薯片和可乐放在同一个购物区,方便顾客购买。这样一来,很有可能会在无形之中提高超市的销售业绩。
怎样挖掘关联规则
想要从海量数据中挖掘出关联规则是一件比较麻烦的事情,因为主要问题在于,寻找物品的不同组合是一项十分耗时的任务,所需的计算代价很高,蛮力搜索方法并不能解决这个问题,所以需要用更智能的方法在合理的时间范围内找到频繁项集。而 Apriori 算法能够帮助我们从频繁项集中挖掘出关联规则。
频繁项集与关联规则
刚刚提到了一个新名词:频繁项集,频繁项集表示的是经常出现在一起的物品的集合。而关联规则指的是两个物品之间可能存在很强的某种关系。
假设现在这样的一份数据:
票号 | 商品 |
---|---|
233 | 薯片 西瓜 |
234 | 抹布 可乐 纸巾 电池 |
235 | 薯片 可乐 纸巾 果汁 |
236 | 西瓜 薯片 可乐 纸巾 |
237 | 西瓜 薯片 可乐 果汁 |
现在想要找到频繁项集,但是频繁应该怎样来定义或者量化呢?通常来说,会根据项集的支持度和可信度来衡量项集是否频繁。
一个项集的支持度表示的是数据集中包含该项集的记录所占的比例。从上表中可知,{薯片}
的支持度为 4/5 。{薯片, 可乐}
的支持度为 3/5 。很明显,支持度这个指标是针对于项集的。
而可信度是针对关联规则而言的。例如{可乐}->{纸巾}
的可信度为支持度({可乐,纸巾})/支持度({可乐})
,即{可乐}->{纸巾}
的可信度为 0.75 。这个 0.75 意味着对于包含可乐的所有记录,这个关联规则对其中 75% 的记录都适用。
支持度和可信度是用来量化关联分析是否成功的方法。假设想找到支持度大于 0.8 的所有项集 ,应该如何去做?一个办法是生成一个物品所有可能组合的清单,然后对每一种组合统计它出现的频繁程度,但当物品成千上万时,上述做法非常非常慢。此时就可以使用 Apriori 算法来寻找频繁项集,并从频繁项集中挖掘出关联规则。