一. Apriori算法
Apriori是最常用的频繁项集挖掘算法,其计算逻辑简单易于直观理解。在实际应用中举例,其易于从大量订单数据中获取频繁出现的组合项集,以便于输出计算单元之间的关联度,从而给组套销售、上架摆放等提供建议。下面介绍下工作中总结的知识,和需要避开的问题。
1.1 评估频繁项集的标准
以订单数据为例。在大量的订单中,如何评价某一商品组合对的出现频繁?其组合出现的次数多于其它组合吗。若订单覆盖的商品品类丰富,那么需求量不高的品类的组合便会被淹没在快消品的组合里。所以在Apriori中有从三个不同的角度评价频繁项集,描述元素关联关系的指标:支持度、置信度、提升度。
1.2 Apriori频繁项集评估指标
在Apriori中有三个维度的频繁项集的指标:支持度、置信度、提升度。下面以二元的组合举例说明。
支持度:
- 描述某一组合AB在所有组合中出现次数的占比,相当于AB这一事件在整体中的发生概率。即AB同时被购买的次数占所有商品组合被购买的次数之比。
Support(A,B) = P(AB) = num(A,B)/num(AllSamples)
置信度:
- 置信度描述了事件A发生的情况下,事件B发生的概率。可以说置信度是一个条件概率。
Confidence(A←B)= P(A|B) = P(AB)/P(B)
置信度描述了用户在购买了B商品的前提下,同时购买A商品的概率。 - 置信度是有方向的
提升度:
- 提升度是两个概率的比,描述在B发生了的条件下A发生的概率,比上没有任何条件A发生的概率。
Lift(A←B)= P(A|B)/P(A) = P(AB)/(P(A)*P(B))
如果提升度大于1,则表示在B的发生的条件下,可以推测A有更大概率发生。即如果Lift(铲子←锅)>1,则表示一位买了锅的用户有更大可能买把铲子。 - 提升度没有方向,Lift(A←B)= Lift(B←A)
由全概率公式易证P(A|B)/P(A) = P(B|A)/P(B) - 当A与B为相互独立事件时,有Lift(A←B)= 1, 因为此时P(A|B) = P(A)
2. 注意事项
- 零事务对关联关系的影响
提升度受零事务的量影响。零事务可以理解为既没有买A也没有买B的订单,在实际业务的海量订单中,零事务量往往很大。 - 数据清洗:赠品、组套捆绑销售会使特定商品大量在同订单中出现,导致一些无效的关联关系,在数据清洗的步骤中应注意剔除。