【資料科學入門】購物車裡的秘密 — 關聯分析Apriori實作(PyCaret)

Rebecca
Taiwanese in Data Science
7 min readOct 12, 2020

文/Rebecca Lin、Iris Chuang

在這篇文章中,會介紹 PyCaret 這個開源套件,結合前幾週分享的 Apriori演算法探索式資料分析與資料視覺化 兩篇文章所使用的資料來進行實際操作。

1. PyCaret是什麼?

know more: PyCaret, PyCaret github

一般來說在資料分析會經過以下的流程:從資料探索、資料前處理、訓練模型,建立模型和部署等, 過程中會有些重複性的工作,尤其當你有個新的想法想要快速嘗試效果的時候,或是想把更多精力放在解決問題而非寫程式,這時候 PyCaret 會是個不錯的選擇。

PyCaret 可以讓資料科學家快速且有效率地執行 end to end 的實驗,與其他開源機器學習套件相比,PyCaret 只需幾行程式碼即可執行複雜的機器學習任務,適合有經驗的資料科學家也適合程式背景較弱,甚至沒有程式背景的新手。

除此之外,PyCaret 支持多種 Notebook 環境,包括 Jupyter Notebook和Google Colab 。PyCaret 封裝了多個機器學習的套件,如 Scikit-Learn、XGBoost、Microsoft LightGBM、spaCy 等。

不管是填缺失值、轉換類別資料、執行特徵工程設計,還是調參數,Pycaret 都能夠自動執行。

  • PyCaret 的函數可分為以下大類:初始化、模型訓練、集成、分析與部署等:
  • PyCaret 的功能分為6個部分

監督式學習

  1. Classification(分類)
  2. Regression(回歸)

非監督式學習

  1. Clustering(分群)
  2. Anomaly Detection(異常偵測)
  3. Natural Language Processing(自然語言處理)
  4. Association Rule Mining(關聯分析)

2. 實作環境介紹

為了避免環境不一樣的問題,以下使用 Google Colaboratory 做為實作的環境,文章中的程式碼改寫自:PyCaret github — Association Rule Mining Tutorial

2.0 Google Colaboratory介紹

Google Colaboratory(或簡稱 Google Colab)是 Google 提供的一項供使用者進行機器學習(Machine Learning)的工具服務, 只要有 Google 帳號就可免費使用 Google Colab,Google Colab 有點像是線上版的 Jupyter Notebook 使用介面幾乎一樣,開啟服務就可以直接開始撰寫 Python 3,可以省下初學者不少建置環境的時間。

2–1. 基本操作

  1. ctrl+enter
  2. shift+enter
  3. 按這個區塊的執行圖案

還想更深入了解Google Colab的朋友可以參考以下的文章:

  1. 第一次用 Google Colab 就上手
  2. 使用 Google Colab 進行機器學習吧!

3. 實作關聯分析

這個 colab 是以下所有的程式碼,點開後:執行階段->全部執行就可以了。

3–1. 安裝PyCaret

Pre — Requests

  1. Python 3.X
  2. PyCaret 最新的版本(目前為 2.1.0)
  3. 關聯規則的基礎知識

3–2. Data

這邊使用的資料是 University of California Irvine 機器學習資料庫的電子商務資料,資料內容為 2009 年 12 月 到 2011 年 12 月之間英國境內的電商交易紀錄,平台上的買家大多為批發商,商品則是以季節性禮品為主。

方法1. 先下載資料後利用 pandas 讀進來

自行到 University of California Irvine — Online Retail II 下載檔案後讀進來。

方法2. 直接從 UCI 把資料下載到 colab

下載後按重新整理就會看到 online_retail_II.xlsx 了。

注意:這個檔案不會儲存到你的雲端硬碟裡,關掉 colab 之後就會不見了

檔案中會有兩個sheet,所以這邊有個合併的步驟:

3–3. Apriori

根據【資料科學入門】如何開始用資料說故事?探索式資料分析與資料視覺化的結果,我們以下就只拿 France 來做,共 14,330 筆資料:

3–4. Setting up Environment in PyCaret

  • Transactions : 資料集中的唯一訂單編號,在這個資料集為 Invoice
  • Items : 資料集中的商品,在這個資料集為 Description
  • Ignore Items : 關聯規則中要忽略的商品。例如:運費,在這個資料集為 POSTAGE

3–5. Create Model

  • metrics:評估規則是否有意義的標準。預設為 confidence。其他可用的指標包括 support, lift, leverage, conviction
  • threshold:評估指標的最小閾值,可通過”metric”參數來決定是否排除候選規則
  • min_support:transactions_where_item(s)_occur / total_transactions,min_support 設的值越小,訓練時間會越久
  • round:四捨五入到小數點後幾位

都不輸入任何參數的話就會以default的參數帶入

create_model(metric=’confidence’, threshold = 0.5, min_support = 0.05, round = 4)

3–6. 關聯規則結果

在這個條件下有28個規則符合:

關聯性列表,第1欄與第2欄就是關聯性強的商品組合,後面欄位就是商品組合的統計量

3–7. 視覺化呈現

這邊圖上的點就是上面28個規則的分布情形,X軸為Support,Y軸為Confidence,點的顏色依照 Lift 值漸層:

4. 結論

  1. 透過 PyCaret 來進行機器模型的建立,能夠省去一些資料前處理以及資料轉換的時間,讓較不熟悉程式的人,可以利用這個套件快速上手如何建立完整分析流程。
  2. 透過 PyCaret 實作關聯分析,讓我們了解商品與商品間的相關程度,就可依照我們的需求來做下一步的決策,例如:
  • 應該將哪些商品擺在一起,方便顧客一起提貨。
  • 應該將哪些商品進行組合來做特價促銷,使得顧客一起採購的意願會增強。
  • 使用網站銷售時,當使用者瀏覽一項商品時,網頁應推薦哪一些其他商品供顧客瀏覽。

5. 延伸閱讀

  1. 其他實現Apriori的方法 — Frequent Itemsets via Apriori Algorithm
  2. PyCaret 其他功能 — Pycaret Tutorial — github
如果喜歡這篇文章,可以幫我們拍手 👏 👏👏 50下,並且follow我們的最新文章,支持我們繼續努力! (找找左側或左下角 “拍手符號👏”,長按可以連拍50下喔)

--

--