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

目录

  • 1.基础概念
  • 2.购物篮分析:指标用法
  • 3.规则生成基本流程
    • 3.1.找出频繁项集
    • 3.2.找出上步中频繁项集的规则
  • 4.Python实现:mlxtend
  • 参考

1.基础概念

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

例:有1000个人买了尿布,有2000个人买了啤酒,有800个人同时购买了尿布和啤酒。
尿 布 X ⇒ 啤 酒 Y [ 支 持 度 = 8 % , 置 信 度 = 80 % ] 尿布X\Rightarrow啤酒Y[支持度=8\%,置信度=80\%] 尿XY[=8%=80%]
S u p p o r t ( X , Y ) = 800 10000 = 8 % Support(X,Y)=\frac{800}{10000}=8\% Support(X,Y)=10000800=8%
C o n f i d e n c e ( X − > Y ) = 800 / 10000 1000 / 10000 = 80 % Confidence(X->Y)=\frac{800/10000}{1000/10000}=80\% Confidence(X>Y)=1000/10000800/10000=80%
L i f t = 800 / 10000 ( 1000 / 10000 ) ⋅ ( 2000 / 10000 ) = 0.8 0.2 = 4 Lift=\frac{800/10000}{(1000/10000)\cdot (2000/10000)}=\frac{0.8}{0.2}=4 Lift=(1000/10000)(2000/10000)800/10000=0.20.8=4
C o n v i c t i o n ( X − > Y ) = 1 − 2000 / 10000 1 − 0.8 = 4 Conviction(X->Y)=\frac{1-2000/10000}{1-0.8}=4 Conviction(X>Y)=10.812000/10000=4

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

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

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

3.规则生成基本流程

3.1.找出频繁项集

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

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

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

n n n个item,总共可以产生 3 n − 2 n + 1 + 1 3^n - 2^{n+1}+ 1 3n2n+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

你可能感兴趣的:(python,算法,python,机器学习,数据分析,大数据)