1.基礎概念
項集: 購物籃也稱爲事務數據集,它包含屬於同一個項集的項集合。在一籃子商品中的一件消費品即爲一項(Item),則若干項的集合爲項集(items),如{啤酒,尿布}構成一個二元項集。
關聯規則: X爲先決條件,Y爲相應的關聯結果,用於表示數據內隱含的關聯性。如:尿 布 − > 啤 酒 [ 支 持 度 = 8 % , 置 信 度 = 80 % ] 尿布->啤酒[支持度=8\%,置信度=80\%] 尿 布 − > 啤 酒 [ 支 持 度 = 8 % , 置 信 度 = 8 0 % ]
支持度Support: 在所有項集中{X, Y}出現的可能性,即項集中同時含有X和Y的概率。是建立強關聯規則的第一個門檻,衡量了所考察關聯規則在"量"上的多少。用於刪去無意義的規則。
S u p p o r t ( X ) = 購 買 X 的 訂 單 數 總 訂 單 數 Support(X)=\frac{購買X的訂單數}{總訂單數} S u p p o r t ( X ) = 總 訂 單 數 購 買 X 的 訂 單 數
S u p p o r t ( X , Y ) = 同 時 購 買 X 和 Y 的 訂 單 數 總 訂 單 數 Support(X,Y)=\frac{同時購買X和Y的訂單數}{總訂單數} S u p p o r t ( X , Y ) = 總 訂 單 數 同 時 購 買 X 和 Y 的 訂 單 數
置信度Confidence: 在先決條件X發生的條件下,關聯結果Y發生的概率P ( Y ∣ X ) P(Y|X) P ( Y ∣ X ) 。是生成強關聯規則的第二個門檻,衡量了所考察的關聯規則在“質”上的可靠性。
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)} C o n f i d e n c e ( X − > Y ) = S u p p o r t ( X ) S u p p o r t ( 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)} C o n f i d e n c e ( Y − > X ) = S u p p o r t ( Y ) S u p p o r t ( X , Y )
提升度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)} L i f t ( X − > Y ) = L i f t ( Y − > X ) = S u p p o r t ( X ) ⋅ S u p p o r t ( Y ) S u p p o r t ( X , Y ) = S u p p o r t ( Y ) C o n f i d e n c e ( X , Y )
出錯率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)} C o n v i c t i o n ( X − > Y ) = 1 − C o n f i d e n c e ( X − > Y ) 1 − S u p p o r t ( Y )
例:有1000個人買了尿布,有2000個人買了啤酒,有800個人同時購買了尿布和啤酒。
尿 布 X ⇒ 啤 酒 Y [ 支 持 度 = 8 % , 置 信 度 = 80 % ] 尿布X\Rightarrow啤酒Y[支持度=8\%,置信度=80\%] 尿 布 X ⇒ 啤 酒 Y [ 支 持 度 = 8 % , 置 信 度 = 8 0 % ]
S u p p o r t ( X , Y ) = 800 10000 = 8 % Support(X,Y)=\frac{800}{10000}=8\% S u p p o r t ( X , Y ) = 1 0 0 0 0 8 0 0 = 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\% C o n f i d e n c e ( X − > Y ) = 1 0 0 0 / 1 0 0 0 0 8 0 0 / 1 0 0 0 0 = 8 0 %
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 L i f t = ( 1 0 0 0 / 1 0 0 0 0 ) ⋅ ( 2 0 0 0 / 1 0 0 0 0 ) 8 0 0 / 1 0 0 0 0 = 0 . 2 0 . 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 C o n v i c t i o n ( X − > Y ) = 1 − 0 . 8 1 − 2 0 0 0 / 1 0 0 0 0 = 4
2.購物籃分析:指標用法
支持度: 可以知道哪些商品或組合商品出現的概率比較高。
置信度: 思考商品連帶性。是(買了X,會再去買Y),還是(買了Y,再去買X)的概率更高。
提升度: 看看XY之間的相關性到底強不強,有多強。
沖銷量:選擇支持度、置信度大的
隨機推薦:提升度大的
3.規則生成基本流程
3.1.找出頻繁項集
Apriori算法的先驗規則:一個頻繁項集的所有子集必須也是頻繁的。
例:如果{啤酒,尿布}是頻繁集,那麼{啤酒}、{尿布}也得是頻繁集。
n n n 個item,可以產生2 n − 1 2^{n-1} 2 n − 1 個項集(itemset)。某商品想要進入後續的規則整理,該商品的被採購頻率必須大於等於一個閾值(apriori函數裏的support參數)。
方法: 指定最小支持度,過濾掉非頻繁項集 ,既能減輕計算負荷又能提高預測質量。
3.2.找出上步中頻繁項集的規則
n n n 個item,總共可以產生3 n − 2 n + 1 + 1 3^n - 2^{n+1}+ 1 3 n − 2 n + 1 + 1 條規則,指定最小置信度,來過濾掉弱規則 。
4.Python實現:mlxtend
from mlxtend. frequent_patterns import apriori
from mlxtend. frequent_patterns import association_rules
frequent_itemsets = apriori( basket_sets, min_support = 0.5 , use_colnames = True )
rules = association_rules( frequent_itemsets, metric = "confidence" , min_threshold = 0.01 )
參考
https://www.jianshu.com/p/1e9ce1b24626
https://www.jianshu.com/p/cdf90ce7100c