今天想跟大家唠唠关联分析。大数据时代,我们身边常常被大量数据围绕。怎样挖掘出其中隐藏的关系呢?
关联分析又称关联挖掘,就是在交易数据、关系数据或其他信息载体中,查找存在于项目集合或对象集合之间的频繁模式、关联、相关性或因果结构。或者说,关联分析是发现交易数据库中不同商品(项)之间的联系。
关联分析的一个典型例子是购物篮分析。通过发现顾客放入其购物篮中的不同商品之间的联系,我们可以分析顾客的购买习惯。
通过了解哪些商品频繁地被顾客同时购买,这种关联的发现可以帮助零售商制定营销策略。
1、事务:每一条交易称为一个事务,例如示例1中的数据集就包含四个事务。购物篮分析里,每一条购买记录就是一个事务;医疗数据里,每个患者每次就诊记录,就是一个事务。 2、项(item):交易的每一个物品称为一个项,例如Cola、Egg等。 3、项集(itemset):包含零个或多个项的集合叫做项集,例如{Cola, Egg, Ham}。 4、k−项集:包含k个项的项集叫做k-项集,例如{Cola}叫做1-项集,{Cola, Egg}叫做2-项集。 5、支持度计数:一个项集出现在几个事务当中,它的支持度计数就是几。例如{Diaper, Beer}出现在事务 002、003和004中,所以它的支持度计数是3。 6、支持度:支持度计数除于总的事务数。例如上例中总的事务数为4,{Diaper, Beer}的支持度计数为3,所以它的支持度是3÷4=75%,说明有75%的人同时买了Diaper和Beer。 7、频繁项集:支持度大于或等于某个阈值的项集就叫做频繁项集。例如阈值设为50%时,因为{Diaper, Beer}的支持度是75%,所以它是频繁项集。 8、前件和后件:对于规则{Diaper}→{Beer},{Diaper}叫做前件,{Beer}叫做后件。 9、置信度:对于规则{Diaper}→{Beer},{Diaper, Beer}的支持度计数除以{Diaper}的支持度计数,为这个规则的置信度。例如规则{Diaper}→{Beer}的置信度为3÷3=100%。说明买了Diaper的人100%也买了Beer。 10、强关联规则:大于或等于最小支持度阈值和最小置信度阈值的规则叫做强关联规则。关联分析的最终目标就是要找出强关联规则 。
对支持度和置信度分别设置最小阈值minsup和minconf。然后在所有规则中找出支持度≥minsup和置信度≥minconf的所有关联规则。
有一点我们需要注意的是,由简单关联规则得出的推论并不包含因果关系。我们只能由A→B得到A与B有明显同时发生的情况,但不能得出A是因,B是果。也就是说我们只能从案例中获得。
根据上面对于关联规则的定义,有一个原始而又简单粗暴粗暴的算法就是,找出所有的规则,对每一个规则计算支持度和置信度,然后再从中提取符合条件的规则。但是这个方法存在一个很致命的问题:如果一个数据集有d个项,这个数据包含的规则总数就太大了。
因此为了控制需要计算支持度和置信度的规则数量,目前关联规则的挖掘过程大致可以总结为两步: 1.找出所有频繁项集。 2.由频繁项集产生规则,从中提取置信度高的规则。
Apriori算法的优点是可以产生相对较小的候选集,而它的缺点是要重复扫描数据库,且扫描的次数由最大频繁项目集中项目数决定,因此Apriori适用于最大频繁项目集相对较小的数据集中。
(源于公众号:谁说菜鸟不会数据分析)
|