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

更新於 2024/12/07閱讀時間約 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])
執行結果:
關於關聯分析就先講到這裡啦,在資料的世界裡,有太多太多關聯等著我們去挖掘,每個細微的地方,都可能隱藏著商機,這也是為甚麼有越來越多公司花大錢也要進行資料探勘,常見的電影推薦、購物網站商品推薦,其實都是關聯分析的運用。
avatar-img
14會員
17內容數
還在為不知道怎麼面試而煩惱嗎? 還在為苦無面試機會而沮喪嗎? 別擔心~讓我們一起面對! 在專題中,我將以自身經驗傳授如何撰寫履歷以及分享面試經驗。
留言0
查看全部
avatar-img
發表第一個留言支持創作者!
格蘭特的沙龍 的其他內容
在工作中遇到的問題實在是千奇百怪,跟C++搏鬥了好一陣子了,仍然還是跟它不是很熟,最近工作上更遇到了bug之王的segmentation fault錯誤,雖然還沒找出root cause,不過在找了一陣子未果後,想說透過更系統性的方法來調查甚麼原因會導致segmentation fault。
在工作中遇到的問題實在是千奇百怪,跟C++搏鬥了好一陣子了,仍然還是跟它不是很熟,最近工作上更遇到了bug之王的segmentation fault錯誤,雖然還沒找出root cause,不過在找了一陣子未果後,想說透過更系統性的方法來調查甚麼原因會導致segmentation fault。
你可能也想看
Google News 追蹤
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
近年研究越來越重視多階層模型的效果量。本文將介紹三種常見的效果量概念和R語言操作,並附上佐證文獻。
Thumbnail
實務中,我們很難決定要使用哪一種多層次模型更好,這時候可以透過模型比較方式給我們有用的建議。本文章將介紹如何透過R語言,使用ranova()和anova()來比較不同的多層次模型,並提供實際範例。
Thumbnail
在使用R跑多層次模型時,有時候會遇到連續調節變項,這時候分析會和類別調節變項有所差異,本文在介紹遇到連續調節變項時,如何進行簡單斜率分析,以及如何畫交互作用圖,最後再說如何使用Johnson-Neyman法。
Thumbnail
如同迴歸一樣,跑多層次分析時同樣也會可能檢定交互作用,當交互作用顯著時,我們習慣透過簡單斜率和交互作用圖來做進一步檢視。本文將介紹如何使用R語言做多層次模型的簡單斜率和交互作用圖。因為是第一次教學,所以先說比較容易懂的類別調節變項和連續自變項的交互作用。
Thumbnail
在進行多層次線性模型(MLM)當中,有時候我們不只會加入層次1的預測變項。我們也會想加入層次2預測變項。本文將介紹加入層次2預測變項的各種模型,並解釋其公式和R語言操作方法。因為內容比較多,所以篇幅比較長。 多層次線性模型(MLM),截距是表示所有學校的平均值。斜率是指模型中自變量的係數,表
Thumbnail
在開發應用程式時,經常會遇到需要調整圖片大小以節省空間或加快加載速度的情況。本教學將介紹如何使用 C# 語言來壓縮圖片並調整其大小,以便在應用程式中使用。
Thumbnail
如果你曾經嘗試學習多種語言, 你會發現每種語言都有其獨特之處。 在我26至28歲期間, 我系統地學習了語言學知識, 以此來輔助我學習俄語、法語、德語、義大利語和西班牙語。 這個過程中, 我發現了大語言模型(LLMs)在語言學習上的巨大潛力。
Thumbnail
年報(Annual Reports)對於公開上市公司的財務狀況提供了重要的資訊。 年報不僅是公開上市公司每年必須發布的法定文件,更是投資者、股東和分析師評估一家公司財務狀況和未來發展潛力的重要來源。 年報包括了獲利表現、資產狀況、業務策略和風險因素等,這些都會對公司的股價產生直接或間接的影響。
Thumbnail
在某間前外商公司的最終面試前,知道面試官總經理是新加坡人,但不知道為何明明在台灣面試她卻一開口就說英語。
Thumbnail
*合作聲明與警語: 本文係由國泰世華銀行邀稿。 證券服務係由國泰世華銀行辦理共同行銷證券經紀開戶業務,定期定額(股)服務由國泰綜合證券提供。   剛出社會的時候,很常在各種 Podcast 或 YouTube 甚至是在朋友間聊天,都會聽到各種市場動態、理財話題,像是:聯準會降息或是近期哪些科
Thumbnail
近年研究越來越重視多階層模型的效果量。本文將介紹三種常見的效果量概念和R語言操作,並附上佐證文獻。
Thumbnail
實務中,我們很難決定要使用哪一種多層次模型更好,這時候可以透過模型比較方式給我們有用的建議。本文章將介紹如何透過R語言,使用ranova()和anova()來比較不同的多層次模型,並提供實際範例。
Thumbnail
在使用R跑多層次模型時,有時候會遇到連續調節變項,這時候分析會和類別調節變項有所差異,本文在介紹遇到連續調節變項時,如何進行簡單斜率分析,以及如何畫交互作用圖,最後再說如何使用Johnson-Neyman法。
Thumbnail
如同迴歸一樣,跑多層次分析時同樣也會可能檢定交互作用,當交互作用顯著時,我們習慣透過簡單斜率和交互作用圖來做進一步檢視。本文將介紹如何使用R語言做多層次模型的簡單斜率和交互作用圖。因為是第一次教學,所以先說比較容易懂的類別調節變項和連續自變項的交互作用。
Thumbnail
在進行多層次線性模型(MLM)當中,有時候我們不只會加入層次1的預測變項。我們也會想加入層次2預測變項。本文將介紹加入層次2預測變項的各種模型,並解釋其公式和R語言操作方法。因為內容比較多,所以篇幅比較長。 多層次線性模型(MLM),截距是表示所有學校的平均值。斜率是指模型中自變量的係數,表
Thumbnail
在開發應用程式時,經常會遇到需要調整圖片大小以節省空間或加快加載速度的情況。本教學將介紹如何使用 C# 語言來壓縮圖片並調整其大小,以便在應用程式中使用。
Thumbnail
如果你曾經嘗試學習多種語言, 你會發現每種語言都有其獨特之處。 在我26至28歲期間, 我系統地學習了語言學知識, 以此來輔助我學習俄語、法語、德語、義大利語和西班牙語。 這個過程中, 我發現了大語言模型(LLMs)在語言學習上的巨大潛力。
Thumbnail
年報(Annual Reports)對於公開上市公司的財務狀況提供了重要的資訊。 年報不僅是公開上市公司每年必須發布的法定文件,更是投資者、股東和分析師評估一家公司財務狀況和未來發展潛力的重要來源。 年報包括了獲利表現、資產狀況、業務策略和風險因素等,這些都會對公司的股價產生直接或間接的影響。
Thumbnail
在某間前外商公司的最終面試前,知道面試官總經理是新加坡人,但不知道為何明明在台灣面試她卻一開口就說英語。