目录
1.名词概念
2.频繁项集发现
3.Apriori算法关联分析
4.代码实现
5.参考文章
通过组合交叉变量制定风控策略时有两种方法:一是通过决策树分箱进行变量交叉,可以见文章一个函数实现自动化风控策略挖掘;二是通过apriori算法进行关联分析。
关联分析是从大规模数据集中寻找物品间的隐含关系,比如著名的例子“啤酒和尿布”,即发现买啤酒的顾客同时也会买尿布,商店通过挖掘这些规则更加了解客户的购买行为。但是,关联分析需要从大量数据集中寻找组合关系,计算代价很高,于是Aprior算法就应用于用合理的算法高效发掘组合规则(又叫频繁项集)。
假设一个简单的交易清单如下,分别代表5笔交易情况。
下面是关联分析中用到的一些名词概念。
1.项与项集
项,指我们分析数据中的一个对象,如豆奶;项集,就是若干项的项构成的集合,如集合{豆奶,莴苣}是一个2项集。
2.支持度
某项集在数据集中出现的概率。即项集在记录中出现的次数,除以数据集中所有记录的数量。如豆奶的支持度为4/5,{豆奶,尿布}的支持度为3/5。
支持度体现的是某项集的频繁程度,只有某项集的支持度达到一定程度,我们才有研究该项集的必要。
3.置信度
又叫可信度,是针对一条关联规则定义的。关联规则{A->B}的置信度为A与B同时出现的次数,除以A出现的次数。即在A发生的条件下,B发生的概率。
比如{尿布->葡萄酒}=支持度(尿布->葡萄酒)/支持度(尿布)=3/5除以4/5=0.75。即在购买尿布的情况下,有75%的概率会购买葡萄酒。
4.提升度
关联规则{A->B}中,提升度是指{A->B}的置信度,除以B的支持度。提升度体现的是组合(应用关联规则)相对不组合(不应用关联规则)的比值,如果提升度大于1,则说明应用该关联规则是有价值的。如果提升度小于1,说明应用该关联规则起到了负面影响。
比如{尿布->葡萄酒}=置信度(尿布->葡萄酒)/支持度(葡萄酒)=0.75/0.6=1.25
寻找频繁项集
一般支持度和置信度是用来量化关联分析是否成功的方法。比如对只有4个物品的集合{0,1,2,3},想要获得每种可能集合的支持度。首先,需要列出4个物品可能的组合数,一共有15种组合方法。
比如需要计算{0,3}项集的支持度,就需要遍历每条记录,检查记录是否包含0和3,如果包含则计数值加1。如此便可以得到{0,3}项集的支持度,要获得每种可能集合的支持度需要重复上述过程。
对于N种物品的数据集一共有 2 N − 1 2^N-1 2N−1种项集组合,计算量巨大。为了降低计算所需的时间,可以采用Apriori来发现频繁项集。
Apriori算法原理
Apriori在拉丁语中指“来自以前”,即先验知识或者假设条件。它的原理是如果某个项集是频繁的,那么它的所有子集也是频繁的。
如上图中,如果{0,1}是频繁的,那么{0}、{1}也一定是频繁的。因为{0}、{1}的支持度一定大于或等于{0,1}。反过来,如果某一个项集是非频繁项集,那么它的所有超集也是非频繁的。如下图:
如果{2,3}是非频繁的,那么{0,2,3}、{1,2,3}、{0,1,2,3}也一定是非频繁