引言:
在认识什么是关联分析之前。先了解一下关联分析能用来干什么吧:
演示样例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、
比如{Diaper, Beer}出如今事务002、003和004中。所以它的支持度计数是3。
6、
7、
比如阈值设为50%时,由于{Diaper, Beer}的支持度是75%,所以它是频繁项集。
8、
9、
10、
我们easy发现,假设一个项集是频繁项集。则它的子项集也都是频繁项集。假设一个项集是非频繁项集,则它的超集也一定是非频繁项集。(可用反证法证明,此处略)
比如{Diaper, Beer}是频繁项集。则{Diaper}、{Beer}也都是频繁项集。
比如{Egg}是非频繁项集。则{Cola, Egg}也是非频繁项集。
关联分析:
关联分析分为两个步骤:
<1> 利用支持度找出数据集中的频繁项集。
<2> 利用置信度从频繁项集中提取出强关联规则。
频繁项集的挖掘:
Apriori算法:
Apriori算法的思路是先找出候选项集,然后依据最小支持度阈值筛选出频繁项集。
比如先找出全部1-项集。然后筛选出里面的频繁1-项集; 依据频繁1-项集生成候选2-项集,然后筛选出里面的频繁2-项集; 再依据频繁2-项集生成候选3-项集。从里面筛选出频繁3-项集;·······
Apriori算法的缺点是须要不断扫描数据集,不断地求候选项集的支持度从而推断它是否是频繁项集。当数据集非常大的时候。这样的算法的效率将会非常低。
很多其它关于Apriori。请见Apriori算法的介绍。
FP-Growth算法:
FP-Growth算法仅仅须要扫描两次数据集。它的思想是把构造一棵FP-Tree。把数据集中的数据映射到树上,再依据这棵FP-Tree找出全部频繁项集。
很多其它关于FP-Growth,请见FP-Growth算法的介绍、FP_Growth算法python实现。
关联规则的生成:
从步骤一已经得到了频繁项集,而此时的任务就是在频繁项集里面挖掘出大于最小置信度阈值的关联规则。
怎么挖呢?把频繁项集分成前件和后件两部分,然后求规则前件→后件的置信度。假设大于最小置信度阈值,则它就是一条强关联规则。
可是把频繁项集分成前件和后件的情况有非常多,我们能够对其进行一些优化。
附加:
此处是针对购物篮演示样例来介绍关联分析,购物篮信息属于布尔型的,而现实生活中很多事物都是数值量化的,比如{购买1个时钟}→{购买2块电池}。
另外。对于产生的强关联规则,并非全部都是有价值的,还须要对关联规则进行评价。
很多其它内容兴许再补上。