在大數據時代,各行各業每天都在不斷地產生著大量各色各樣的數據。對這些數據進行有效的挖掘,能夠促進企業更好更精準的發展。這些數據能夠幫助我們更精準地了解用戶,從而制定出更貼合用戶的運營策略,提升用戶在平臺的使用體驗。購物籃分析是數據挖掘技術在零售業的典型應用之一,旨在從零售記錄中分析出顧客經常同時購買的商品的組合,挖掘出購物籃中有價值的信息。
一、背景
關聯規則就是從一種行為中發現與之相關聯的另一種行為,即A→B,并用一定的概率度加以保證。關聯規則廣泛的應用在零售業、金融業和互聯網行業。最典型的運用是購物籃分析,挖掘一般顧客在購買X產品的同時還會購買其他什么產品,于是制定相應營銷策略,進行捆綁銷售,增加銷售量。又如金融業中,預測銀行客戶需求,如果數據庫中顯示,某個高信用限額的客戶更換了地址,這個客戶很有可能新近購買了一棟更大的住宅,因此會有可能需要更高信用限額,更高端的新信用卡,或者需要一個住房改善貸款,這些產品都可以通過信用卡賬單郵寄給客戶。電子購物網站也使用關聯規則進行挖掘,一些購物網站使用關聯規則設置相應的交叉銷售,也就是購買某種商品的顧客會看到相關的另外一種商品的廣告。
二、重要概念和原理
首先我們來看,什么是規則?規則形如"如果…那么…(If…Then…)",前者為條件,后者為結果。例如一個顧客,如果買了牙刷,那么他也會購買牙膏。
如何來度量一個規則是否足夠好?有兩個量,置信度()和支持度(Support)。
舉個例子。假設有10000個訂單,其中購買了A產品的訂單數是1000單,購買了B產品的訂單數是2000單,同時購買了A產品和B產品的訂單數是800單。
支持度(support):
簡單的字面理解就是支持的程度。在所有的事務中同時出現A和B的概率,即P(AB)。支持度揭示了A和B同時出現的頻率,如果A和B一起出現的頻率非常小,那么就說明了A和B之間的聯系并不大;但若一起出現的頻率非常頻繁,那么A和B總是相關聯的知識也許已經成為常識而存在了。因此,上面例子的支持度就是:800/10000*100%=8%。
置信度():
置信度也稱為可靠度,置信度表示了這條規則有多大程度上值得可信。所有事務中,在A出現的情況下B出現的概率,即P(B|A),P(B|A)=P(AB)/P(A)。因此,上面例子的置信度就是:P(AB)=8%,P(A)=1000/10000*100%=10%,P(B|A)=8%/10%=80%
置信度揭示了B出現時,A是否一定會出現,如果出現則其大概有多大的可能出現。如果置信度為100%,則說明了B出現時,A一定出現。那么,對這種情況而言,假設A和B是市場上的兩種商品,就沒有理由不進行捆綁銷售了。如果置信度太低,那么就會產生這樣的疑問,A和B關系并不大,也許與B關聯的并不是A。
三、目的
購物籃分析(market basket )的目的在于在一個數據集中找出項之間的關聯關系。例如,購買鞋的顧客,有10%的可能也會買襪子,60%的買面包的顧客,也會買牛奶。這其中最有名的例子就是"尿布和啤酒"的故事了。
四、應用
購物籃分析的主要應用如下:
①電商:
②超市
③電信與金融服務業:經由購物籃分析能夠設計不同的服務組合以擴大利潤;
④保險業:能藉由購物籃分析偵測出可能不尋常的投保組合并作預防。
五、案例詳解
【數據源】
利用R進行購物籃分析,R中關聯分析函數為arules,我們采用內置的的數據集。數據集的每一行表示一次交易記錄,行中的每一列代表一個商品。將數據集導出csv,數據格式如下圖1所示。
library(Matrix)
library(arules)
data(Groceries)
frequentsets=eclat(Groceries,parameter=list(support=0.05,maxlen=10))
inspect(sort(frequentsets,by="support")[1:10])
圖1 數據集格式
【數據統計】
對數據集進行描述性統計分析。輸出結果如下圖2所示,可從結果中提取到以下四部分有效信息:
①說明交易數據包含9835條交易記錄,涉及到169種商品;
②列出了出現在購物籃中最為頻繁的幾種商品,如whole milk(全脂牛奶)出現在2513個交易記錄中;
③列出購物籃中包含商品數量的交易條數,如有2159條交易僅購買1種商品,僅有1條交易購買32種商品;
④對購物籃中交易的商品數量進行匯總,包括五數和均值,Mean表示所有購物籃中平均含有4~5件商品;
summary(Groceries) #用summary函數對數據進行描述性統計分析
圖2 描述性統計分析結果
【Apriori關聯分析】
Apriori算法實現基本流程:
①選出滿足支持度最小閾值的所有項集,即頻繁項集;
②從頻繁項集中找出滿足最小置信度的所有規則。
算法用法:
apriori(data, parameter = NULL, appearance = NULL, control = NULL)
參數介紹:
data:數據;
:設置參數,默認情況下=list(support=0.1,=0.8,maxlen=10,minlen=1,target=”rules”)
supp:支持度(support)
conf:置信度()
maxlen,minlen:每個項集所含項數的最大最小值
target:“rules”或“ ”(輸出關聯規則/頻繁項集)
:對先決條件X(lhs),關聯結果Y(rhs)中具體包含哪些項進行限制,如:設置lhs=beer,將僅輸出lhs含有beer這一項的關聯規則。默認情況下,所有項都將無限制出現。
control:控制函數性能,如可以設定對項集進行升序sort=1或降序sort=-1排序,是否向使用者報告進程(verbose=F/T)
算法使用:
接下來就是用apriori算法計算結果了。其實apriori算法特別好理解,就是只計算頻繁集都特別高的子集。比如在我們數據集中,頻繁集最高的單個商品是whole milk(全脂牛奶),那么,在計算并集的時候,從這個商品開始入手計算。節省了運行次數和空間。
由于默認的支持度為10%,可信度為80%,對于當前的9835條交易記錄來說過高,使得沒有這樣的交易滿足這兩個條件。因此,如果使用Apriori算法的默認參數設置時將產生0條規則。故需要人為調整支持度和可信度,這里不妨將支持度設置為1%,即認為某種商品在購物籃中至少出現98次,可信度設置為30%,即認為同時出現某幾種商品組合的概率為30%。
rule<-apriori(data=Groceries,parameter=list(support=0.01,confidence=0.3,minlen=2))
圖3 輸出結果圖1
ruleinspect(rule)#查看頻繁規則集
圖4 輸出結果圖2
【結果導出】
導出數據,R結果如下,可以將結果導出到Excel表中,根據support大小來排序查看更有意思的結果。
write(rule, file = "C:/Users/THINK/Desktop/finalRule.csv", sep = ",",col.names = NA)
部分結果如下圖5所示。
圖5 最終關聯規則結果圖
由以上可知,如果客戶購買了citrus fruit和root ,那么他有59%的概率買other 。
六、購物籃分析注意事項
1. 如果對于大零售超市或商場,其SKU數一般都是幾十萬甚至上百萬,產品梳理工作是一項很痛苦的工作,但如果要從數據角度進行產品運營,建議可以開展相應的產品梳理咨詢項目,通過產品梳理,形成標準化的產品梳理流程及產品目錄。在對某商場的產品梳理時候,發現目前的產品體系還是漏洞百出,很多還是很不規范的。做好關聯分析或數據運營,請從產品梳理工作開始。
2. 注意購買產品贈送禮品的人為因素影響規則。有些挖掘師或分析師在做出關聯分析后,看到了幾條提升度及置信度都很高的規則,就興奮不已地告訴客戶:我覺得產品A和產品B有很大的關聯性,從數字上看,捆綁銷售肯定能夠取得很好的銷售效果。當拿到這樣的結果的時候,客戶很鎮定地說:“你不知道我們在某月的時候,大量開展了購買產品A即可免費贈送產品B的活動么?”。對于這個時候的挖掘師是很悲催的。在篩選關聯規則的時候,必須對該企業過去一年開展的活動有了解,還必須對不同時間段的主推產品進行提前溝通,確保關聯規則不受人為因素影響。
3. 注意產品之間的位置擺放是否有很大的影響。在零售大商場中,產品擺放的位置對產品關聯銷售會產生很大的影響的,因為關聯分析就是為了更方便地讓顧客找到其需要的產品,購買更多其需要的產品。人流較大的兩個相隔貨架之間的產品關聯性比較大,在我們項目中會發現不少的這樣規則。但其結果表明了貨架關聯性比較大,擺放在一起就肯定比較合理的。但在進行關聯分析的時候,客戶更希望能從其他不相隔的貨架之間找出更好的關聯銷售機會,這決定了后期的關聯規則挑選難題。
4. 注意關聯推薦的規則合理性及流失成本的大小。后期的關聯推薦應用于主要是三個方面:①重購:繼續購買原來的產品;②升級:購買更高檔次的產品;③交叉銷售:購買相關的產品。如果該規則的客戶本來是買了50塊錢的產品的,發現關聯規則里面出現了推薦其購買30塊的同類型產品,這等于給客戶降檔推薦了,會讓銷售額大幅減少,銷售機會白白浪費并且造成了損失,所以在進行關聯推薦的時候,那些涉及到了降檔的規則一定要剔除。
后記
建議大家看完文章之后,找個時間動手嘗試下,這樣記憶更深刻。R語言直接在官網免費下載,數據源也在R語言內。本文用到的代碼文件已整合好放在公眾號內,在公眾號后臺發送“購物籃分析”即可獲得。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。