2018年2月6日 星期二

[R]如何利用Apriori Algorithm進行關聯性分析,以文具公司執行去化庫存作業為範例?


決策事務是企業經營者和中高階管理層的重要工作之一,尤其是涉及營運策略的決策事務,更應該謹慎面對。如同唐內拉‧梅多斯(Donella H. Meadows)於系統思考(Thinking in Systems: A Primer)一書所提到的內容,管理層常遇到的問題屬性往往不是彼此獨立,而是具備多種層面並相互關聯的系統性和多維度問題。因此執行決策的前置工作往往須包含明確定義問題、彙整可能涉及該問題的相關資訊以及思考和分析各個層面於該問題的關聯性和影響程度等等相關工作。換句話說,若能藉由彙整資訊的分析工作,有效地評估各層面因子之間關聯性和影響程度,產出合理決策方案的機率相對提升。(OS: 除了上述因子,執行決策事務有時還會遭遇到及時性和資訊不確定性等等問題,總之決策工作是一門高深學問。)

Apriori Algorithm是常用於關聯性分析的演算法,其藉由三個評價指數來判斷頻繁性、因果關係和相依程度,以建立關聯性規則(Association Rule)並支持決策方案,評價指數的定義如下:
(a) support(支持性):
該評價指數說明該關聯性規則於原數據堆中出現的頻繁性,頻繁性越高表示該關聯性規則越具有支持性。一般以設定最小支持門檻值(min support)來篩選關聯性規則。
(b) confidence(信賴性):
該評價指數說明該關聯性規則於原數據堆中的因果關係,藉由比值計算符合A項目(item)的數據中,同時也符合B項目(item)關聯性規則的發生頻次。發生頻次越高表示該該關聯性規則越具備高度因果關係。一般以設定最小信賴門檻值(min confidence)來篩選關聯性規則。
(c) lift(相依性):
該評價指數說明該關聯性規則於原數據堆中的相依程度,lift-1│越大表示該關聯性規則的相依程度越高。

利用Apriori Algorithm在R中進行關聯性分析工作並將結果繪製成可視化圖表(visualization),將需要用到arules和arulesViz兩個套件,建議預先安裝。以文具公司執行去化庫存作業為範例,問題是紙張庫存品過多,根據歷史銷售數據應如何提出有效方案使以提升銷售速度,以達去化庫存目的。該範例簡易擷取100個歷史銷售數據進行分析,其數據格式如圖一所示,1表示購買品項,0表示未購買品項,單一橫列表示某位顧客當次購買的品項清單。

圖一 數據格式

以R實作歷史銷售數據分析的程式碼如圖二所示,說明如下:
(a)為了篩選和呈現少數有效的關聯性規則,經過幾次調整後,將min support訂為0.31,min confidence定義為0.7。
(b)為了解紙張與其他品項的連帶銷售關係,將關聯性規則以紙張售出為目標來呈現,因此使rhs設定為Paper=1。根據設定條件和目標而得到7條關聯性規則。
(c)藉由lift排序和可視化圖表,可進一步比較該7條規則的support和confidence關係,而彙整出關鍵且有效的少數規則,如圖三紅框、圖四和封面圖所示。

圖二 R程式碼
圖三 關鍵且有效的少數規則
圖四 support & confident & lift 可視化數據圖


由圖三紅框中的三條關聯性規則比較,可歸納為幾個可行方案以供決策用,說明如下:
(a)購買Printer和Envelope.bag,也會一併購買Paper的顧客,其confidence和lift均為三者之間最高,support為最低。該規則發生的頻次最低,若搭配進一步的時間分析,或許僅發生在某幾個特定時期,例如若針對農曆年前的研究所推甄作業和求職履歷投遞作業的高峰期,可將紙張和列表機與信封紙袋整合銷售,或許可解決紙張庫存過多的問題並帶來利潤。
(b)購買Printer和Ink.Cartridge,也會一併購買Paper的顧客,其confidence、lift和support均為次高。該規則說明將紙張和列表機與墨水夾的銷售有一定水準上的相關性,或許可於實體店面將三個品項置放於相鄰區域,亦或者於電商網頁中,主動建立三個品項的連結,應可有助於解決紙張庫存問題。
(c)購買Printer,也會一併購買Paper的顧客,其support最高,confidence和lift都是最低。該規則說明紙張是列表機的基本耗材之一,因此發生的頻次最高。

延伸閱讀:[書籍]系統思考:克服盲點、面對複雜性、見樹又見林的整體思考(Thinking in Systems: A Primer)

沒有留言:

張貼留言