【資料科學入門】購物車裡的秘密 — 關聯分析Apriori實作(PyCaret)
文/Rebecca Lin、Iris Chuang
在這篇文章中,會介紹 PyCaret 這個開源套件,結合前幾週分享的 Apriori演算法、探索式資料分析與資料視覺化 兩篇文章所使用的資料來進行實際操作。
1. PyCaret是什麼?
一般來說在資料分析會經過以下的流程:從資料探索、資料前處理、訓練模型,建立模型和部署等, 過程中會有些重複性的工作,尤其當你有個新的想法想要快速嘗試效果的時候,或是想把更多精力放在解決問題而非寫程式,這時候 PyCaret 會是個不錯的選擇。
PyCaret 可以讓資料科學家快速且有效率地執行 end to end 的實驗,與其他開源機器學習套件相比,PyCaret 只需幾行程式碼即可執行複雜的機器學習任務,適合有經驗的資料科學家也適合程式背景較弱,甚至沒有程式背景的新手。
除此之外,PyCaret 支持多種 Notebook 環境,包括 Jupyter Notebook和Google Colab 。PyCaret 封裝了多個機器學習的套件,如 Scikit-Learn、XGBoost、Microsoft LightGBM、spaCy 等。
不管是填缺失值、轉換類別資料、執行特徵工程設計,還是調參數,Pycaret 都能夠自動執行。
- PyCaret 的函數可分為以下大類:初始化、模型訓練、集成、分析與部署等:
- PyCaret 的功能分為6個部分
監督式學習
- Classification(分類)
- Regression(回歸)
非監督式學習
- Clustering(分群)
- Anomaly Detection(異常偵測)
- Natural Language Processing(自然語言處理)
- 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. 基本操作
- ctrl+enter
- shift+enter
- 按這個區塊的執行圖案
還想更深入了解Google Colab的朋友可以參考以下的文章:
3. 實作關聯分析
這個 colab 是以下所有的程式碼,點開後:執行階段->全部執行就可以了。
3–1. 安裝PyCaret
Pre — Requests
- Python 3.X
- PyCaret 最新的版本(目前為 2.1.0)
- 關聯規則的基礎知識
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個規則符合:
3–7. 視覺化呈現
這邊圖上的點就是上面28個規則的分布情形,X軸為Support,Y軸為Confidence,點的顏色依照 Lift 值漸層:
4. 結論
- 透過 PyCaret 來進行機器模型的建立,能夠省去一些資料前處理以及資料轉換的時間,讓較不熟悉程式的人,可以利用這個套件快速上手如何建立完整分析流程。
- 透過 PyCaret 實作關聯分析,讓我們了解商品與商品間的相關程度,就可依照我們的需求來做下一步的決策,例如:
- 應該將哪些商品擺在一起,方便顧客一起提貨。
- 應該將哪些商品進行組合來做特價促銷,使得顧客一起採購的意願會增強。
- 使用網站銷售時,當使用者瀏覽一項商品時,網頁應推薦哪一些其他商品供顧客瀏覽。
5. 延伸閱讀
- 其他實現Apriori的方法 — Frequent Itemsets via Apriori Algorithm
- PyCaret 其他功能 — Pycaret Tutorial — github
如果喜歡這篇文章,可以幫我們拍手 👏 👏👏 50下,並且follow我們的最新文章,支持我們繼續努力! (找找左側或左下角 “拍手符號👏”,長按可以連拍50下喔)