購物籃分析(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

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