相关性分析擅长寻找二组或多组线性变量之间的数据表现,但如果分析的多组事务不属于线性变量,而属于布尔型事务项集,就需要采取关联分析法,最典型算法就是购物篮分析。
购物篮分析算法有很多,最著名的是Apriori算法。
Apriori算法是由Agrawal和R.Srikant于1994年提出来的,是一种关联分析经典算法,至今依然是数据分析领域十大明星算法之一,可见其功能之强大。
Apriori名称来自于拉丁语,也有人写成A-priori,意思是“来自以前”,指的是根据过去频繁发生项目集合的先验知识,预测后续的事务关联关系。
Aprori算法主要用于关联规则数据挖掘,因此也被称为ARM算法(Association Rule Ming algorithms)。
Apriori算法用于寻找频繁项目集合,因此也被称为频繁模式算法(Frequent Pattern Algorithms),此处的频繁项目集合有二个含义:首先分析对象必须是频繁出现的事务项目集合(简称项集);其次频繁出现的项集预示着事物之间存在着关联关系,具体来说,Apriori算法采取了二阶段方法(Two-Phase Methodology):
第一阶段:找到频繁项集(Finding frequent itemsets),比如AB是ABCD、AB、ABD等项目的频繁项集 。
第二阶段:根据频繁项集生成关联规则(Generating association rules),比如A=>B。
Apriori算法来自于零售超市业态,目前已经应用到银行、保险、市场营销等不同领域,并获得了巨大的成功。
但是令人遗憾的是,当前Apriori算法在零售业的应用却处于停滞状况。
Apriori算法为沃尔玛、亚马逊等国际零售巨头的营销分析提供了新思路,使这些巨头们获得了巨大的成功。
为什么Apriori算法在零售业处于停滞状态?我们在后面会详细介绍。
我们以超市的购物篮为例,介绍Apriori算法的基本思路及指标体系。
假定有如下五个购物篮,购物篮数据已经按照Apriori算法的要求进行了数据预处理,购物篮及其中的商品构成如下:
1、Apriori算法对于购物篮的数据项及指标定义如下:
交易(transactional):单个顾客的单次购买行为构成一个独立的交易或一个独立的购物篮,比如上面有5个购物篮。
交易数据集(transaction dataset):一系列交易项组成的数据集就是交易数据集,零售业指的是购物篮数据集合,上面5个购物篮集合组成一个小交易数据集。
项和项集(item and itemsets):指的是交易中的项目和项目集合,对于零售业来说,就是购物篮中的商品和商品集合。
频繁项集(Frequent Itemset):经常在一起出现的交易项目集合,比如“啤酒与尿布”就是一种频繁项集;
非频繁项集(Infrequent itemset):指的是不经常一起出现的交易项目集合;
K-项集:含有K个项的项集称为K-项集,比如含有苹果、牛奶二个商品的购物篮被称为2-项集;
支持度计数(Sopport Conut):在一个数据集合中的某个项集出现在几个购物篮中,支持度计数就是几,比如{苹果、牛奶}出现在购物篮1、购物篮2中,所以{苹果、牛奶}的支持度计数为2,在零售业中支持度计数是一个非常重要的指标,可以表示交易集合在限定交易数据中的总量(购物篮数量),以此提示关联关系的商业价值,比如有些购物篮的关联规则看上去很强,但是购物篮总数不多,商业价值也不会太高。
支持度(support):指的是在特定交易集合中,特定数据项集出现的次数,比如上面5个购物篮中,{苹果、牛奶}的支持度计数为2,所以{苹果、牛奶}的支持度为2/5=40%,即40%的人同时购买了苹果和牛奶。表示为support 苹果=>牛奶=40%。 支持度公式为:Support A=(包含项目A的购物篮数量)/(购物篮总数)。
支持度的意义在于找出某个项集(比如啤酒、尿布)在整体交易中的占比 ,支持度 是关联规则的第一个指标,对于零售业来说,评估关联规则在交易中的占比非常重 要,前面讲述过的PI值(购物篮渗透率),其意义与支持度基本类似。
比如在某个超市的88163个购物篮中,含有橙汁、半脱脂牛奶、橙汁、半脱脂牛奶的支持度计数(Support count)、支持度(support)如下:
商品名称 Support count Support
上述数据表明,在88163笔交易中,半脱脂牛奶的购物篮数量最多,为2885个,购物篮占比为3.273%。
置信度(confidence):表示为购物篮中既有啤酒、又有尿布的情况,可以写成 (购物篮项目:“啤酒 ”) ? (购物篮项目:“尿布”) 。
置信度的公式表示为:Cofiddence(A=>B)=P(A/B);
或表示为置信度=(包含交易A和B的购物篮数量)/(所有含有A的购物篮数量)。
假定有50个购物篮中含有A商品,其中有25个购物篮中中同时有B商品,则(A=>B) 二个商品的置信度为50%。
提升度(Lift):简单理解就是含有苹果的购物篮条件下同时含有牛奶的概率,与含有牛奶的总体发生的概率比,是一种简单的相关度量方法,定义如下:
项集A的出现独立于项集B的出现,如果P(A∪B)=P(A)P(B);否则,作为事件,项集A和项集B是依赖的和相关的。
公式:lift(A,B)=P(A∪B)P(A)P(B)=P(B|A)P(B)=conf(A→B)sup(B).
以上面的购物篮为例,苹果与牛奶的提升度Lift(苹果->牛奶)=P(苹果/牛奶)/P(牛奶)=40%/60%=67%。
提升度有时也被称改善度,可以用来衡量二个事务之间关联关系的强弱、以及关联的方向(即正、负),提升度的指标含义如下:
提升度Lift >1,代表二个事务之间的关联关系为正向关联;
提升度Lift <1,代表二个事务之间的关联关系为负关联关系;
提升度Lift =1,代表二个事务之间的关联关系为无关关联关系;假定在一家店铺中,A是可口可乐,B是百事可乐,现在一共有200笔交易,可口可乐、百事可乐各自出现在100笔交易中,只有一个交易中同时有可口可乐、百事可乐;
则sup(A∪B)=1/200=0.005, sup(A)Xsup(B)=(100/200) x (100/200)=0.25, 则sup(A∪B)<sup(A)Xsup(B),此时可以说可口可乐与百事可乐是负关联。
? 频繁项集最小值:人为设置的关联指标门槛值,是数据分析时进行条件筛选的门槛,也称为阈值,比如将支持度最小值设置为30%,那么上述购物篮中的频繁项集{苹果、牛奶}的支持度40%就满足这一最小值。