當零售業的「採購」遇到機器學習行銷資料科學實戰案例時?! (附Python程式碼)
「零售採購(Retail Procurement)」是零售業為了要實現銷售目標,而去探尋或預測市場產品/服務需求後,以最適合的時間與最低的成本,獲得零售業所要銷售的產品/服務數量。掌握採購數量與銷售數量這項任務對零售業可說是變動最大,且最需要經驗老到的人 — 採購者(Buyer)來執行,他們也正是企業中不可或缺的重要成員。
-
- 聘請採購者的成本
面對萬樣商品,採購團隊通常會聘請超過百人或千人團隊進行採購分析,以人為經驗不斷的臆測下期銷售量來推估採購數量。如此團隊便造成人事成本大增,如果人為採購所造成的庫存成本激增,很有可能將企業當期利潤全數併吞,甚至虧損。 - 風險控制
雖然採購成員多達百人至千人,但一旦採購數量預估錯誤,造成企業虧損或倒閉的風險其實非常高,但似乎企業又僅能仰賴人工採購,所以面對龐大的人事、購貨及存貨的風險,零售業業主每天做生意可謂是鐵索橫江,心驚肉跳。 - 促銷及活動考量
在促銷活動上(在此不探討如何搭配商品促銷達利潤極大化),採購者又應該如何精準針對萬樣商品評估採購數量?如果A商品配上B商品進行促銷,採購者通常預期兩樣商品銷售數量會達一致性而採購同數量,但現實往往不是如此,時常會發生A商品銷售數量高於B商品,而採購B商品造成庫存反而消耗掉促銷所帶來的利潤。
- 聘請採購者的成本
如欲了商品促銷之行銷策略,請參考:常貴客?新客? 讓RFM模型簡簡單單解釋一切!(附實現程式碼)
採購上種種變數,在人工未能完善的處理下,都可能是致使企業由盈轉虧的可能性。
亞馬遜這則新聞是2018年6月的新聞,這股「採購者職位調整」的風潮似乎離我們還很遙遠,相信許多讀者認為:
- 這是大公司僅存的現象,我任職的公司雖然雖然零售品有千樣以上,但建制這系統一定很昂貴,應該要幾億美金吧?
- 這種演算法一定是大公司才能負擔得起,我才不用擔心,採購很複雜,尤其是「銷售預測與評估」,機器根本不能跟人比,這就是唬人的消息!
- 唉~ 這種遠在天邊的消息,看看就好,不會真的實現。
面對如此質疑,讀者除了可以從下兩個連結詳盡參考亞馬遜的實際案例外,亦可同本文章作者使用「相對廉價(5萬元)」的電腦,為讀者實踐亞馬遜「簡化版」的「Python機器學習 — 自動採購與銷售預測」方法。
Seattle: Amazon.com Inc. has long used robots to help humans move merchandise around its warehouses. Now automation is…
亞馬遜用機器人裁員完倉庫管理員後,這次輪到被演算法取代的白領階級員工了 – INSIDE 硬塞的網路趨勢觀察
亞馬遜的機器和軟體讓不少倉庫管理員這種藍領職業下崗,然而現在,下崗潮已經輪到亞馬遜的白領員工們了。電腦自己知道需要採購什麼,什麼時候去採購,什麼時候去提供產品以及什麼時候不要去提供產品。這些演算法擁有大量的資料輸入,運轉起來通常比人類還要智…
- 日期 — 2018/1/1(還有過往10個月的資訊)
- 分店編號 — 5號分店、10號分店、15號分店均有出售
- 商品編號 — 55140
- 銷售量 — 20單位,一單位50元
- 促銷與否 — 目前沒促銷 …
- 建議5天後2018/1/5高麗菜的採購數量區間為27–34顆
- 預測銷售區間為1,250–1,700元
- 根據統計結果,機器準確率為82.25%,人為自訂準確率為64.27%,
因此建議您於本區間內執行採購。」
這時我們便有實在的數字依憑參考,讓機器成為輔助我們採購的好夥伴!
閱讀至此,讀者可以花幾秒整理思緒,想想我們這樣做的目的到底為何?
- 由機器預測萬種商品每天的銷售量,再由人工決定採購數量水位,協助採購者採購上猶豫的時間,節省人工每個月數千小時的估算。
- 可將大量商品相關標籤納入考量,提昇整體預測能力,例如:加入競爭對手、地理環境變數、各種利害關係人等標籤。
- 迅速掌握不同品項的「動態採購量」,便可根據時間週期調整商品供需。
本次機器學習模型主要以 LightGBM(lgb),分析預測。原因為資料變數多達633種,最後亦有超過1千萬比觀察值,所以以快速且精準的lgb進行建模。損失函數則使用RMSLE。
模型詳情可參考:即時動態定價「實做 2」 — 集成模型(附實現程式碼)
損失函數則可參考:行銷定價新型態:即時動態定價策略與實做(附實現程式碼)
- 日期 — 每件商品的日期
- 分店編號 — 每家分店編號
- 商品編號 — 每件商品編號,每一件商品都有他獨特的編號
- 促銷與否 — 每件商品的促銷狀況
- 生鮮與否 — 該商品是否為生鮮或者易腐食品
- 分類 — 商品分類

圖1
再來是另一個項目資料紀錄(items),圖2紀錄著各項商品分類代碼與生鮮與否,我們會將本資料進行對商品銷售紀錄進行關聯,將資料串連在一起。從下圖維度可見我們本次有4,100項商品讓我們進行分析。

圖2
最後則是分店紀錄(stores),圖3記載54家分店的城市、縣市及級別。

圖3

圖4
雖然認知憑借這些變數可以得出預測銷售與採購量,但是一旦上萬樣商品加入「領域知識的重要變數」,例如:間隔天數、生鮮與否、促銷與否、促銷內容、尺寸、顏色、經濟環境、競品狀況等,便使得預測評估變得更加複雜化起來,導致專家預測的銷售與採購量時常失準。
參考:由外部經濟環境,納入採購分析,讓內外部資料整合,預測更精準 — 環境分析與行銷資料科學
- 有半數(本文章使用的633個變數)皆為公司每產品的3, 7, 14, 30, 60, 140的採購天數間隔做平均、移動平均、最大值等當作變數(如圖5所示)。
- 另外半數(其他約600個變數)則是使用每產品的促銷文字敘述、商品文字敘述、尺寸、顏色、經濟環境指標、平台種類、外部網路輿情、產品新聞內容等形成另外的600個變數(部份類別資料進行one-hot encoding及重要文字資料以也當作欄位,所以資料維度就會擴大),這些變數的使用原因為這些便是消費者第一眼接觸到的資訊,所以這些資訊對現場人員整商品而言非常重要;其二,我們能透過機器學習的方法找出哪些資訊需要加強,方便現場人員調整這些可控變因。不過因為資料敏感性,故不在此文章使用。
「接著,機器就會自己學習」。
經過測試資料集的驗證確認後,就可得出每一家分店,每一樣商品,每天的銷售量,然後再反推採購數量。

圖5:我們將所有銷售與採購會用到的相關知識全部量到機器學習演算法的新增變數中。最後,我們透過領域知識的量化,最終神奇的從9個變數中,新增超過1200個變數(本次呈現633個變數供大家使用)
首先,我們直接以圖6的專家經驗法與機器學習法簡單觀看幾個商品觀察值查看差異,我們很快就可以查看到各自在銷售完後,雖然都有存貨(採購量-銷售量),但是明顯發現機器學習法在存貨控管上明顯比專家經驗法還要好。

圖6
第一家分店的811237號商品於2017/7/28的實際銷售量為20個,依照專家經驗法,當天鋪貨就進103個,機器學習法則鋪11個,直觀上的結果是機器學習的方法少了9項銷售的收入,但實則我們計算下來可以發現:
每一天為基底:
專家經驗法:20(銷售量)*27(均價)- 83(存貨量)*3.57(單位存貨成本)= 243.69
機器學習法:11(銷售量)*27(均價)- 0 = 297
機器學習法比專家經驗法的收入還要高上53.31元
讀者如果這樣思考沒錯,但如果該公司以往常每3天的進貨時間做考量,我們換個方向思考,以每三天為基底來計算的話:
每三天為基底8/4-8/6:
專家經驗法:(14+4+0)*27- (6+15+3)*3.57= 400.32
機器學習法:(14+4+0)*27- (-5+6+5)*3.57= 464.58
機器學習法比專家經驗法的收入還要高上64.58元
也就是說,機器學習自動採購能夠改善專家經驗法因為人工過量採購而帶來的庫存問題,進而節省庫存成本,轉化為更高的毛利。
接著我們統計實戰的2,680,240筆資料在2017/7/26到2017/8/10,單純計算以每一天為基底的存貨成本與銷售總和後所帶來的成效。
- 平均價錢:原始資料轉換後之各項價錢,真實情況依每一家分店及採購狀況而有所差異。
- 數量:以一天為基底為採購、存貨及銷售循環所統計的總數量。
- 小計:平均價錢 * 數量之總額。
- 利潤:銷貨收入扣除採購、存貨及人力成本之利益。
- 利潤方面 圖7發現54家分店實施機器學習法已經開始比20年專家經驗法的的利益還要高上約6千8百萬元 ($68,616,574)(未扣除租金、員工支出及其他營業成本,所以這的利潤會遠比淨利還高上好幾倍)。
- 成本方面 細觀圖7,會發現「機器學習法」雖然銷貨收入明顯較「專家經驗法」在銷貨收入上少了2億元,但「機器學習法」在採購成本及存貨成本相對「專家經驗法」來說,省下約2億7千萬元 ( $269,557,060),計算出利潤後,發現「機器學習法」效果明顯大於「專家經驗法」。
- 人力方面 節省人力方面,相較以往80人來說,有了「機器學習法」的協助,預計調整採購人員職位,將採購相關人員降低8倍,僅留10位專家,審核及調整機器學習法預測的採購數量,一口氣降低210萬的成本。

圖7
- 找出生命週期短的商品,思考改進策略,讓該商品成為長銷品,成為常銷品後,最後交由機器學習法進行採購計算。
- 找出銷量差的商品,思考銷售策略,決定該產品是否持續銷售或者進行下架,降低成本。
- 探討更多可量化之專家領域知識,加入機器學習法中,讓採購預測上更準確。例如:本文章資料使用633個變數,實際資料使用超過1,200個變數,利潤差異較633個變數還要好約2倍。

圖8:往後採購專家僅須根據表中「採購量」與預測銷售量「銷售量_log_pred」調整最終的採購數量即可
- Q1:這是大公司僅存的現象,我任職的公司雖然雖然零售品有千樣以上,但建制這系統一定很昂貴,應該要幾億美金吧? A1:我們僅用了5萬元「新台幣」、30G記憶體、8核心i7的CPU、1個人力成本在1個小時內就可以建起系統原型(Prototype),剩下的軟體如即時通報採購系統的Python架構,的確要花不少人力成本與時間,但是軟體全部都為open source免費,光在軟體層面完全不用花錢,省下相當的成本。所以不用以為真的要花到「幾億美金」才能建制,如果辦公室裡面有相仿的電腦設備,自己簡簡單單就可以建制一個自動採購系統。這相比那些動輒千萬,也不見得有效的ERP系統,這樣豈不是更能節省成本?
- 這種演算法一定是大公司才能負擔得起,我才不用擔心,採購很複雜,尤其是「銷售預測與評估」,機器根本不能跟人比,這就是唬人的消息! A2:其實重點不是複雜的演算法或者機器成本,反而是我們有沒有辦法將採購人員的領域知識量化成機器學習所需要的「變數」,直接讓演算法學習人類過往20幾年累積的經驗,產生1臺5–20萬元以內的機器就可以抵擋百人團隊,達到省成本的目的。
- 唉~ 這種遠在天邊的消息,看看就好,不會真的實現。 A3:我們已經在這篇文章以低成本5萬元電腦就可以簡單呈現一個機器學習-自動採購的原型,老闆如果有心想要嘗試或狠心節省成本,賺取更高利潤,或許花個幾十、百萬元來「一次調整」數百個採購專員一年千萬的花費,在短期內也不是不可能發生的。
「萬物同源,萬法同宗」,既然零售業都可以使用,難道傳產等產業(萬物)不能使用嗎?不同場景使用得演算法幾乎都是同一個樣子(同宗),最重要的還是我們對演算法的輸入(input)品質、領域知識的量化變數以及在不同情況下所使用的模型為何,僅抓這三點就可以實踐「萬物同源,萬法同宗」的精神,在任何資料科學任務上無往不利。
參考:資料品質的重要性 — 盡信資料,不如無資料
作者 : 鍾皓軒(臺灣行銷研究有限公司 共同創辦人)