2017年3月13日 星期一

使用Perl的Apriori Algorithm module做購物籃分析(Market Basket analysis)

【常見應用】
  1. 如果一個消費者買了產品A,那有多大的機會購買產品B?
  2. 如果買了A也買了B,那麼他還會購買什麼產品?
  3. 針對X產品做推廣,用以增進Y產品的銷售。


【原理】
關聯規則分析(Association)有很多種演算法,目的就是在眾多交易中找出品項與品項之間的關係,也被稱為購物籃分析 (Market Basket analysis)。

其中,最常用的就是 Apriori Algorithm (Apriori 演算法),透過支持度(support)、信賴度(confidence)、增益值(lift),作為找尋行銷組合的標準。

詳細內容網路上都有資源,我們就直接進入正題,各個程式語言都有相關的module可以用,舉凡 R、Python、PHP都有,接下來以 Perl 的 Data::Mining::Apriori module做示範。



【資料準備】
  • 將「產品ID與描述」寫到 hash table reference :
1,產品A
2,產品B
...

Data-Mining-Apriori-keyItemsDescription


  • 給予「交易資料」,每一行代表一個交易,都要至少有兩個品項:

1,2,3
2,3
1,3
...



【實作】
將資料整理後,接下來是配合需求調整參數。

Data-Mining-Apriori-support-and-confidence-and-lift


因為如果只用default值,會跑出太多組相關性不高的組合。


【結果】
原則上我會以高支持度、高增益值( > 1) 來做篩選,最後就會剩下這八組較為相關的組合,提供活動或推薦系統使用。

Data-Mining-Apriori-results-and-rules

Rule R1 顯示產品A與產品C有高度相關:

Data-Mining-Apriori-rules-and-items



【補充說明】
增益值 > 1,表示X與Y呈現正相關,規則才具有實用性。
增益值 = 1,表示X與Y呈現不相關,結果與亂數取得方式相似。
增益值 < 1,表示X與Y呈現負相關,比亂數取得之結果更差。



【小結】
不只是購物籃,只要能夠減少使用者選擇路徑,就能增加銷售與轉換,一樣也是可以用於遊戲中的「點數分配」、「裝備推薦」等。



以上介紹到這裡,還請各位大神多多給予指教。