关联分析
关联关系是一种非常有用的数据挖掘算法,它可以分析出数据内在的关联关系。其中比较著名的是啤酒和尿不湿的案例
交易号
清单
0
豆奶,莴苣
1
莴苣,尿布,啤酒,甜菜
2
豆奶,尿布,啤酒,橙汁
3
莴苣,豆奶,尿布,啤酒
4
莴苣,豆奶,尿布,橙汁
当超市在分析顾客的购物清单时发现一个比较奇怪的问题,为什么大部顾客在购买啤酒的时候还会买啤酒呢?后来经过超市的调查发现,顾客的妻子提醒丈夫买尿不湿时丈父会把自己的啤酒也一起带上。这是超市调查发现的尿不湿和啤酒的关系,如果数据量小我们还是可以处理的,但是涉及到大数据时,其复杂度就非常高,那我们有没有其它方式去寻找这种关系呢?其实我们可以使用关联算法去挖掘我们商品之间的关联关系,这些关系可以有两种形式:频繁项集或者关联规则。频繁项集(frequent item sets)是经常出现在一块的物品的集合(即经常被一起购买的商品),关联规则(association rules)暗示两种物品之间可能存在很强的关系。
支持度和置信度
为了有效定义频繁和关联,我们引入两个概念,支持度和置信度。
支持度(support),即事件发生的频率,记作
,例如一共有5条记录,啤酒和尿布出现的次数是3次,这样啤酒的支持度就是 3 / 5 = 0.6,支持度越大表格商品出现的次数就越多。
置信度(confidence),置信度揭事了如果事件A发生了,则事件B发生的的概率,记作
,
例如啤酒和尿布被购买时,橙汁也一起被购买的概率记作
,置信度的值表示事件A和B同时发生后的概率占了A事件出现的概率的百份比,值越大表明买了啤酒和尿刷的顾客购买橙汁的概率比较大。
Apriori原理
由上面的介绍可以知道,我们需要计算所有组合的支持度和置信度,从而计算出所有可能被购买的频繁项集这样我们就可以对商品进行合理的布局。
支持度
下面为了说明问题我们先假设我们有n种商品,那我们所有的商品排列组合为
其中k表示频繁集合中元素的个数,也就是说我们要运算出所有的频繁集合的话,时间复杂度为
,如下图(来自网络)例示我们有四种商品0, 1, 2, 3,那我们就有
种频繁集合,如果我们有1000种频繁集合的话,可想而知这个数据量是非常的庞大的。