购物篮分析(Apriori算法):Mlxtend实现

1.基础概念

  1. 项集: 购物篮也称为事务数据集,它包含属于同一个项集的项集合。在一篮子商品中的一件消费品即为一项(Item),则若干项的集合为项集(items),如{啤酒,尿布}构成一个二元项集。
  2. 关联规则: X为先决条件,Y为相应的关联结果,用于表示数据内隐含的关联性。如:尿>[=8%=80%]尿布->啤酒[支持度=8\%,置信度=80\%]
  3. 支持度Support: 在所有项集中{X, Y}出现的可能性,即项集中同时含有X和Y的概率。是建立强关联规则的第一个门槛,衡量了所考察关联规则在"量"上的多少。用于删去无意义的规则。
    Support(X)=XSupport(X)=\frac{购买X的订单数}{总订单数}
    Support(X,Y)=XYSupport(X,Y)=\frac{同时购买X和Y的订单数}{总订单数}
  4. 置信度Confidence: 在先决条件X发生的条件下,关联结果Y发生的概率P(YX)P(Y|X)。是生成强关联规则的第二个门槛,衡量了所考察的关联规则在“质”上的可靠性。
    Confidence(X>Y)=Support(X,Y)Support(X)Confidence(X->Y)= \frac{Support(X,Y) }{Support(X)}
    Confidence(Y>X)=Support(X,Y)Support(Y)Confidence(Y->X)= \frac{Support(X,Y) }{Support(Y)}
  5. 提升度Lift: 衡量X,Y的相关性,反映了商品之间的真实联系。
     a. 提升度 >1 且越高,表明正相关性越高(一般>3才有价值)
     b. 提升度 <1 且越低,表明负相关性越高
     c. 提升度 =1 ,表明没有相关性
    Lift(X>Y)=Lift(Y>X)=Support(X,Y)Support(X)Support(Y)=Confidence(X,Y)Support(Y)Lift(X->Y) =Lift(Y->X) =\frac{Support(X,Y)}{Support(X)\cdot Support(Y)} =\frac{Confidence(X,Y)}{Support(Y)}
  6. 出错率Conviction: 度量规则预测错误的概率,表示X出现而Y不出现的概率。
    Conviction(X>Y)=1Support(Y)1Confidence(X>Y)Conviction(X->Y)=\frac{1-Support(Y)}{1-Confidence(X->Y)}

例:有1000个人买了尿布,有2000个人买了啤酒,有800个人同时购买了尿布和啤酒。
尿XY[=8%=80%]尿布X\Rightarrow啤酒Y[支持度=8\%,置信度=80\%]
Support(X,Y)=80010000=8%Support(X,Y)=\frac{800}{10000}=8\%
Confidence(X>Y)=800/100001000/10000=80%Confidence(X->Y)=\frac{800/10000}{1000/10000}=80\%
Lift=800/10000(1000/10000)(2000/10000)=0.80.2=4Lift=\frac{800/10000}{(1000/10000)\cdot (2000/10000)}=\frac{0.8}{0.2}=4
Conviction(X>Y)=12000/1000010.8=4Conviction(X->Y)=\frac{1-2000/10000}{1-0.8}=4

2.购物篮分析:指标用法

支持度: 可以知道哪些商品或组合商品出现的概率比较高。
置信度: 思考商品连带性。是(买了X,会再去买Y),还是(买了Y,再去买X)的概率更高。
提升度: 看看XY之间的相关性到底强不强,有多强。

冲销量:选择支持度、置信度大的
随机推荐:提升度大的

3.规则生成基本流程

3.1.找出频繁项集

Apriori算法的先验规则:一个频繁项集的所有子集必须也是频繁的。
例:如果{啤酒,尿布}是频繁集,那么{啤酒}、{尿布}也得是频繁集。

nn个item,可以产生2n12^{n-1}个项集(itemset)。某商品想要进入后续的规则整理,该商品的被采购频率必须大于等于一个阈值(apriori函数里的support参数)。
方法: 指定最小支持度,过滤掉非频繁项集,既能减轻计算负荷又能提高预测质量。

3.2.找出上步中频繁项集的规则

nn个item,总共可以产生3n2n+1+13^n - 2^{n+1}+ 1条规则,指定最小置信度,来过滤掉弱规则

4.Python实现:mlxtend

from mlxtend.frequent_patterns import apriori
from mlxtend.frequent_patterns import association_rules

# 生成频繁项目集,指定最小支持度为0.5
frequent_itemsets = apriori(basket_sets, min_support = 0.5, use_colnames = True)

# 生成关联规则,最小置信度为0.01
rules = association_rules(frequent_itemsets, metric = "confidence", min_threshold = 0.01)

参考

https://www.jianshu.com/p/1e9ce1b24626
https://www.jianshu.com/p/cdf90ce7100c

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章