Apriori的重要概念
Apriori的几个重要概念:支持度、置信度、提升度
什么是支持度
支持度是个百分比,它指的是某个商品组合出现的次数与总次数之间的比例。支持度越高,代表这个组合出现的频率越大
举个例子,商品列表:
在这个例子中,牛奶出现了4次,所以这5笔订单中,牛奶的支持度为 4/5 = 0.8
同样“牛奶+面包”出现了3次,所以这5笔订单中,牛奶+面包的支持度为 3/5 =0.6
什么是置信度
它指的是当你购买了商品A,会有多大的概率购买商品B
就拿上面那个例子来说
置信度(牛奶-啤酒) = 2/4=0.5,你在上面的购物单中,因为你购买了4次牛奶,而在这4次牛奶中,你有两次购买了啤酒,所以置信度为0.5
置信度(啤酒-牛奶)= 2/3 =0.67,代表了你购买了啤酒,会有多大的概率去购买牛奶
什么是提升度
我们在做商品推荐的时候,重点考虑的是提升度,因为提升度代表的是“商品A的出现,对商品B的出现概率提升的”程度。
具体的计算公式为:
提升度(A-B) = 置信度(A-B)/支持度(B)
这个公式是用来衡量A出现的情况下,是否会对B出现的概率,有所提升。
- 提升度(A-B)> 1:代表有提升
- 提升度(A-B)=1 :代表没有提升,也没有下降
- 提升度(A-B)<1 :代表有下降
Apriori的工作原理
Apriori算法其实计算查找频繁项集的过程
什么是频繁项集,频繁项集就是支持度大于等于最小支持度阈值的项集,所以小于最小值支持度的项目就是非频繁项集,而大于等于最小支持度的项集计算频繁项集。
Apriori算法的递归流程:
- K=1,计算K项集的支持度
- 筛选掉小于最小支持度的项集
- 如果项集为空,则对应K-1项集的结果为最终结果
Apriori的改进算法:FP-Growth算法
针对Apriori的缺点进行改良,主要有:
- 创建了一颗FP树来储存频繁项集,在创建前对不满足最小支持度的项进行删除,减少了存储空间
- 整个生成过程只遍历数据集2次,大大减少了计算量
原理
-
创建项头表为FP构建及频繁项集挖掘提供索引
-
构造FP树,FP树的根节点记为null节点
-
通过FP树挖掘频繁项集
到这里我们就得到了一个储存频繁项集的FP树,以及一个项头表。我们可以通过项头表来挖掘每个频繁项集。
- 通过FP树挖掘频繁项集
到这里我们就得到了一个储存频繁项集的FP树,以及一个项头表。我们可以通过项头表来挖掘每个频繁项集。
具体的操作会用到一个概念,叫“条件模式基”,它指的是以要挖掘的节点为叶子节点,自底向上求出FP树,然后将FP树的祖先节点设置为叶子节点之和