使用R語言進行購物籃分析(Market Basket Analysis)

2022/12/08閱讀時間約 5 分鐘
在資料分析領域中,購物籃分析又稱關聯分析,從大量的交易資料中,探勘出在資料間具有相關性的隱藏規則與商業知識。購物籃分析最經典的就是啤酒與尿布的例子了!
世界最大的零售商沃爾瑪(Wal-mart)就運用關聯分析的技術,從每日大量的商品交易資料中進行消費者購買商品間的關聯分析,結果竟然意外發現星期四晚上通常同時購買啤酒與尿布。
現在就來看看要如何利用R語言進行關聯分析吧!
首先,先載入關聯分析所需要用到的arules相關套件:
install.packages("arules")
library(arules)
install.packages("arulesViz")
library(arulesViz)
下載後打開該資料檔,會發現它跟我們平常用來分析的資料檔並不一樣,是屬於交易資料形式。
因此我們必須採用read.transaction來讀取(交易資料與一般data frame不同,為每次買了甚麼商品)
groceries = read.transactions("C:\\Users\\user\\Desktop\\groceries.csv",sep=",")
讀取完後可以使用summary函式看一下資料的摘要。
summary(groceries)
執行結果如下,可以發現統計出了幾個比較頻繁出現的字詞,
接下來呢,我們用inspect函式來看前面五筆資料。
inspect(groceries[1:5])
除了看商品品項之外,也可以使用size函式,來看單次購買的品項有幾種商品。
接著呢,我們再利用itemFrequency函式,去列出每一項品項佔的比例,藉由這個函數,也可以找出出現頻率比較高的商品。
itemFrequency(groceries)
接下來就是重頭戲拉!  看到密密麻麻的比例我們要怎麼讓它變得比較好理解呢?
因此我們接著來進行畫圖的動作。
用itemFrequencyPlot繪出產品佔的比例圖,support參數是支持度的意思(通常會默認是0.1,如果不使用的話,則會列出所有產品品項,會很亂喔。)
itemFrequencyPlot(groceries,topN = 10)
itemFrequencyPlot(groceries,topN = 10,type = "absolute")
itemFrequencyPlot(groceries,topN = 10,horiz = T,
main = "Item Frequency",xlab = "Relative Frequency")

itemFrequencyPlot(groceries,support = 0.1,
main = "Item Frequency with S = 0.1",ylab = "Relative Frequency")
跑完code後圖就會出來啦!
一看就知道原來whole milk出現的頻率是最高的
再來,便是載入在關聯分析中最重要的演算法之一 —> Apriori:
Apriori是最經典的關聯分析挖掘演算法,原理清晰且實現方便,可以說是學習關聯分析的入門演算法,但效率低;而Eclat演算法則在運行效率方面有所提升。
載入以下程式碼:
apriori(groceries)

rule1 = apriori(groceries,parameter = list(support = 0.006,confidence = 0.3))
summary(rule1)
apriori演算法大概是這樣運作的,我們必須要設定support以及confidence:
  • 支持度(support):「規則」在資料內具有普遍性,也就是這些 A 跟 B 同時出現的機率多少。
  • 信賴度(confidence):「規則」要有一定的信心水準,也就是當購買 A 狀態下,也會購買 B 的條件機率。
等rule跑出來之後,要觀察需要使用inspect()的函式:
inspect(rule1[1:5])
執行結果如下,
lhs=>rhs 代表買左邊也會買右邊的意思,而支持度與信賴度,則分別代表了普遍性與信心水準。
例如,第一個關聯規則可以解釋為,「若某人單次消費購買的是pot plants=> 也會購買whole milk」
而lift=1.5 > 1,表示了這個規則相當具有正相關。
除此之外,我們也可以針對特定商品產生關連規則。
例如: 用yogurt這個產品來產生一個相關聯的rules
其中%pin%"yog",代表的意思是尋找找商品名稱有 “yog"的品項,
yogurtr1 = subset(rule1,items %pin% "yog")
summary(yogurtr1)
inspect(yogurtr1[1:15])
執行結果:
關於關聯分析就先講到這裡啦,在資料的世界裡,有太多太多關聯等著我們去挖掘,每個細微的地方,都可能隱藏著商機,這也是為甚麼有越來越多公司花大錢也要進行資料探勘,常見的電影推薦、購物網站商品推薦,其實都是關聯分析的運用。
格蘭特
格蘭特
Hi 我是格蘭特,一個熱愛文學、閱讀與資訊科技的男孩,可以追蹤我一起悠遊書海、學習資訊科技唷! 這是我的部落格: https://grantliblog.wordpress.com/
留言0
查看全部
發表第一個留言支持創作者!