嚴選時序預測算法實踐
時序預測算法在電商場景中有着大量的應用場景,基於嚴選的實際業務需求,我們開發沉澱了一套時序預測算法系統,實現了 “數據 - 模型 - 服務” 的完整鏈路,並落地於網易嚴選的補貨、調撥、投放、搜索、推薦等多個業務場景。
1 背景
我們把不同時間收到的,描述一個或多種特徵隨時間發生變化的數據稱爲時間序列數據,例如商品的每天的銷量,股價每天的漲跌等等。對於這類數據,我們往往會希望通過算法去預測其未來的走勢,這類算法統稱爲時序預測算法。
時序預測算法在電商場景中有着大量的應用場景,例如我們需要預測商品未來的銷量,來決定補多少貨;需要預測 APP 未來的流量,來決定具體的搜推策略等等。
基於上述需求背景,我們開發沉澱了一套時序預測算法系統,實現了 “數據 - 模型 - 服務” 的完整鏈路,並落地於網易嚴選的補貨、調撥、投放、搜索、推薦等多個業務場景。
2 嚴選應用
時序預測算法再嚴選主要有以下應用場景:
2.1 商品銷量預測
-
支持嚴選 10 萬多 SKU 預測未來 360 天銷量,準確率業內領先;
-
落地於採購補貨、營銷策略等多種場景。
2.2 倉間商品調撥量預測
-
支持按省份、按倉庫的預測;
-
實現全國倉庫的庫存均衡,商品就近發貨。
倉間調撥業務
2.3 倉庫單量預測
-
支持嚴選 2000 多倉庫未來 60 天的各倉庫日維度單量預測,包含新倉的冷啓動預測,準確率業內領先;
-
支撐業務側進行倉庫產能評估和安排、物流車輛資源儲備和調度等決策。
2.4 廣告流量預測
-
嚴選自建 DSP 廣告投放平臺,平臺接入流量每天百億級,對接上千家媒體,廣告位十萬級;
-
實現了小時級的大規模預測,預測每個廣告位在未來兩天每小時的流量,準確率業內領先。
DSP 後臺系統
2.5 App 流量預測
- 預測嚴選 APP 內 7 大流量入口包括搜索頁、推薦頁、類目頁、商詳頁、個人頁等關鍵流量入口的流量。
(相關技術已發表專利 7 篇)
3 時序預測算法實踐
要讓時序預測的算法在嚴選場景中更好的落地,產生業務價值,主要需要解決以下幾個問題:
-
特徵數據的構建、收集、落地;
-
算法模型的設計、實現;
-
算法服務的整合、開發。
圍繞上述問題,我們開發了一套完整的算法服務系統,一方面對外提供統一的預測服務接口,助力算法落地應用;另一方面給算法開發提供了標準化的範式和便利的工具,提升了迭代開發效率。
3.1 整體架構
算法系統的整體架構如下圖所示:
預測系統整體架構
3.2 數據特徵
時序預測算法的基礎是大量的數據,特別是歷史時序數據。在網易嚴選,一方面圍繞着用戶對嚴選商品的瀏覽、購買等各種行爲,每天可以產生海量的用戶行爲數據;另一方面嚴選自身的經營運作也沉澱了大量的商品數據以及業務數據。這些在嚴選產生的數據可以通過數倉、後端的基建方便的收集到。此外,我們還收集了許多外部數據,與嚴選數據彙總到一起,主要包括:
-
用戶數據
-
用戶屬性:性別、年齡、地區、手機型號、消費水平、社會身份、類目偏好、社交關係……
-
用戶行爲:瀏覽、點擊、加購、購買、評論、分享……
-
商品數據
-
商品特性:類目、迭代關係、相似性、價格、毛利、文案……
-
商品銷售:銷量、折扣、促銷、好評、復購、退貨、地域、履約……
-
業務數據
-
後端倉配:選址、容量、人力、配送……
-
前端營銷:預算、計劃、競爭關係、渠道屬性、經營模式、市場計劃……
-
外部數據
-
行業相關:節假日、自然氣候、原材料……
-
流量媒體:屬性、類型、規模……
通過從嚴選內部及外部收集了上述數據,我們進行了初步的清洗以及特徵抽取,構建了預測算法的基礎數據特徵庫。並且,基於預測算法的實際取數特點,抽象出了一套專用的數據模型用於特徵數據的結構化,並最終基於 ES 集羣和 Redis 集羣,實現了數據的存儲落地。
3.3 算法模型
在嚴選的實踐中,用到了很多不同的時序預測算法模型。我們基於具體的應用場景,會使用不同的一種或多種具體模型。總的來說,這些算法模型可以分爲以下三種類型:
3.3.1 經典統計學時序模型
這類模型具有悠久的歷史,是時序預測領域最經典、最常見的一類模型,普遍應用於傳統零售、製造業。這類模型往往基於一定的先驗假設,通過相對簡潔、直觀的計算公式給出預測結果。
-
優點:預測結果具有較好的可解釋性,計算效率高。
-
缺點:算法本身處理複雜場景能力有限,需要額外的預處理、後處理環節,通過一些策略規則對預測數據進行補充優化,需要引入大量的專家經驗。
-
應用模型:Linear-Regression、ARIMA、Holt-Winters、Prophet……
Prophet 模型對歷史時序數據的分解
3.3.2 傳統機器學習模型
這類模型隨着機器學習算法的發展而逐步運用於大型企業的複雜預測場景當中。這類模型算法通過 “特徵 - 樣本點” 的形式對預測問題進行建模,通過在大量數據上進行訓練,模型可以學習到繁雜歷史特徵之間的複雜關係,找出其中規律並將其推廣到未來,以實現時序數的預測。傳統機器學習模型也是目前電商行業使用最廣泛的一種算法模型。
-
優點:可以處理複雜的業務場景,較爲方便的考慮時序或非時序的各種特徵數據,目前在大部分實際應用中有更高的預測準確率。
使用傳統機器學習模型預測結果包含了更多細節
-
缺點:預測結果的可解釋性較差,同樣需要一定的專家經驗來進行特徵工程,對訓練用的歷史數據有一定要求,數據量(數量 & 質量)不夠時很難學到有效的預測模型
-
應用模型:XGBoost、LightGBM……
對商品銷量預測問題樣本點建模
3.3.3 深度學習模型
近幾年來,深度學習算法在各個領域大放異彩。我們在嚴選的時序預測場景中同樣也開始引入了深度學習算法。這類模型是在傳統機器學習模型基礎上演變而來,具有更加複雜的模型結構。
- 優點:可以處理更加複雜的情況,對人工經驗、特徵工程的依賴更少,具有較高的自由度,可以端到端的解決各種預測問題。
基於深度模型實現時間序列的概率分佈預測
-
缺點:預測結果的可解釋性最差,對歷史數據的要求最高,並且訓練過程計算量最大,效率較低。
-
應用模型:DeepTCN、MASS、DeepAR、LSTNet、TFT、Informer……
基於 Seq2Seq 思想,包含多模態 Attention 機制的的 MASS 模型結構
需要特別說明的是,我們在長期的時序預測實踐中發現,預測效果的好壞並不會隨着模型複雜度的上升而變好。特別是深度學習模型,在 NLP、CV 領域帶來了革命性效果提升的同時,在時序預測應用中卻並沒有體現出顯著優勢。近期學術界的一些研究也提出並驗證了這一觀點。在實際應用中,目前取得最好預測效果的依然是諸如 XGBoost 等傳統機器學習模型。此外,對於嚴選的大部分落地場景,算法預測的可解釋性幾乎和準確性同等重要,因此,具體預測模型一定是結合業務需求選擇最適合的,不能盲目追求 “高大上” 的算法。
3.4 算法服務
由於 Python 對各類算法模型的友好性以及數據處理的易用性,因此我們基於 Tornado 框架開發了預測算法的服務框架。爲各種不同的算法模型定義了統一的輸入輸出接口標準,不同的算法模型可以以插件的形式靈活接入服務,大大提升了開發效率,保障算法模型的敏捷迭代上線。
與此同時,定義了預測任務的標準範式,支持了預測任務的自動拆解,進而實現了大型預測任務的分佈式計算。例如當執行一次全量商品的銷量預測任務時,會自動按 SKU 將預測拆分成多個子任務,分發到多個服務實例上並行的執行預測計算,大大提升了預測服務性能。
算法服務框架
此外,通過一系列的工程優化,這套服務框架還支持了算法參數的配置化與熱更新、算法熱插拔、橫向可拓展等特性,並且以 Tornado 爲基礎,抽象封裝出了一套更適合線上算法服務的 Python 服務 SDK——Typhoon,並開源發佈。
Typhoon SDK
4 後記
在大部分用到時序預測的應用場景中,提升預測的準確率似乎是解決業務痛點的最佳手段。例如在供應鏈補貨場景中,如果能把未來的銷量預測的十分準確,那麼所有滯銷、缺貨的問題一下子都能迎刃而解。然而,預測的準確率並不能無限制的提升,幾乎所有的預測場景,都會在幾輪迭代後快速的到達瓶頸。本質上來看,存在兩方面原因:
-
未來與歷史的差異性
所有的預測算法都是基於 “歷史與未來的規律一致” 這一假設前提才得以成立的。然而在實際場景中,規律本身也是在不斷變化的,未來發生的事情並不一定能在歷史上找到參考。例如當下流行的帶貨直播,這一形式在早幾年的數據中並沒有可供參考的樣本,同時也一定程度的改變了當下用戶的消費習慣,這對於商品銷量預測帶來了很大的挑戰。
-
未知事件影響
實際業務場景中產生的時序數據,都是在各種 “事件” 的綜合影響下產生的。時間時序預測算法可以預測時序數據的走勢、時序數據在不同 “事件” 下的變化表現,卻無法預測 “事件” 本身的發生。大到疫情的發生,小到某次促銷活動,這些 “事件” 本身並不具備可預測性,卻對數據影響巨大。
綜上所述,對於各種時序預測場景來說,需要理性看待預測算法的價值和邊界,不能沉迷於算法的迭代優化乃至準確率的提升,應當更多從全盤業務的角度,用更全面的手段來解決實際問題。
以採購補貨爲例,基於概率分佈預測,在相同準確率下對成本的 TRADE OFF
本文由作者授權嚴選技術團隊發佈
網易有數 網易有數是網易數帆旗下大數據技術與服務品牌,以 “數據價值” 爲導向,聚焦於企業 “看數”、“管數”、“用數”等業務場景,提供全鏈路大數據技術及產品服務,致力於盤活企業數據生產力,加速實現數字化轉型。
本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源:https://mp.weixin.qq.com/s/Dqlq069Qq-XwxAembyyggw