在认识什么是关联分析之前,先了解一下关联分析能用来干什么吧:
示例1:如下是一个超市几名顾客的交易信息。
TID Items 001 Cola, Egg, Ham 002 Cola, Diaper, Beer 003 Cola, Diaper, Beer, Ham 004 Diaper, Beer TID代表交易流水号,Items代表一次交易的商品。
我们对这个数据集进行关联分析,可以找出关联规则{Diaper}→{Beer}。
它代表的意义是:购买了Diaper的顾客会购买Beer。这个关系不是必然的,但是可能性很大,这就已经足够用来辅助商家调整Diaper和Beer的摆放位置了,例如摆放在相近的位置,进行捆绑促销来提高销售量。
所以,关联分析的任务就是从数据集中挖掘出频繁项集,然后从频繁项集中提取出事物之间的强关联规则,辅助决策。
1、
2、
3、
4、
5、
6、
7、
8、
9、
10、
我们容易发现,如果一个项集是频繁项集,则它的子项集也都是频繁项集。如果一个项集是非频繁项集,则它的超集也一定是非频繁项集。(可用反证法证明,此处略)
例如{Diaper, Beer}是频繁项集,则{Diaper}、{Beer}也都是频繁项集。
例如{Egg}是非频繁项集,则{Cola, Egg}也是非频繁项集。
关联分析分为两个步骤:
<1> 利用支持度找出数据集中的频繁项集。
<2> 利用置信度从频繁项集中提取出强关联规则。
Apriori算法的思路是先找出候选项集,然后根据最小支持度阈值筛选出频繁项集。
例如先找出所有1-项集,然后筛选出里面的频繁1-项集; 根据频繁1-项集生成候选2-项集,然后筛选出里面的频繁2-项集; 再根据频繁2-项集生成候选3-项集,从里面筛选出频繁3-项集;·······
Apriori算法的缺点是需要不断扫描数据集,不断地求候选项集的支持度从而判断它是否是频繁项集。当数据集很大的时候,这种算法的效率将会非常低。
FP-Growth算法只需要扫描两次数据集。它的思想是把构造一棵FP-Tree,把数据集中的数据映射到树上,再根据这棵FP-Tree找出所有频繁项集。
从步骤一已经得到了频繁项集,而此时的任务就是在频繁项集里面挖掘出大于最小置信度阈值的关联规则。
怎么挖呢?把频繁项集分成前件和后件两部分,然后求规则前件→后件的置信度,如果大于最小置信度阈值,则它就是一条强关联规则。
但是把频繁项集分成前件和后件的情况有很多,我们可以对其进行一些优化。
此处是针对购物篮示例来介绍关联分析,购物篮信息属于布尔型的,而现实生活中许多事物都是数值量化的,例如{购买1个时钟}→{购买2块电池}。
另外,对于产生的强关联规则,并不是全部都是有价值的,还需要对关联规则进行评价。
更多内容后续再补上。
原文地址:http://blog.csdn.net/bone_ace/article/details/46648965