如何處理“自我挫敗”的預測模型?
我正在觀看一家大型零售商的 ML 專家的演講,他們在那裡開發了一個模型來預測缺貨事件。
讓我們假設一下,隨著時間的推移,他們的模型變得非常準確,這不是“弄巧成拙”嗎?也就是說,如果模型確實運行良好,那麼他們將能夠預測缺貨事件並避免它們,最終達到很少或根本沒有缺貨事件的地步。但如果是這種情況,將沒有足夠的歷史數據來運行他們的模型,或者他們的模型會脫軌,因為用於指示缺貨事件的相同因果因素不再如此。
處理這種情況的策略是什麼?
此外,人們可以設想相反的情況:例如,推薦系統可能成為“自我實現的預言”,在推薦系統的輸出驅動下,物品對的銷量增加,即使這兩個物品並不是真的那樣有關的。
在我看來,兩者都是在預測器的輸出和基於它所採取的行動之間發生的一種反饋循環的結果。如何處理這樣的情況?
缺貨 (OOS) 檢測模型可能會自行脫軌有兩種可能性:
- 輸入和 OOS 之間的關係可能會隨著時間而改變。例如,促銷可能會導致更高的 OOS(促銷銷售比常規銷售更難預測,部分原因是不僅平均銷售額增加,而且銷售差異也很大,“難以預測”通常轉化為 OOS),但是系統及其用戶可能會了解到這一點並為促銷增加額外的庫存。久而久之,促銷和OOS之間的原有關係就不再成立了。
這通常被稱為“模型轉換”或類似的。您可以通過調整模型來克服它。最常見的方法是對輸入進行不同的加權,對較早的觀察值給予較低的權重。 2. 即使預測變量和 OOS 之間的關係沒有改變,預測變量的分佈也可能發生變化。例如,特定庫存單位 (SKU) 的多天銷售為零可能表示 OOS - 但如果模型表現良好,則 OOS 可能會全面減少,並且可能根本不會出現那麼多零銷售序列.
預測變量分佈的變化應該不是問題。您的模型只會輸出較低的 OOS 概率。
最後,您可能不需要過多擔心。OOS 永遠不會為零。確實會出現上述反饋機制,但在完全消除 OOS 之前它們將不起作用。
一些未決的 OOS 可能根本無法避免。“我在貨架上有一個單位,未來一周可能會面臨五個的需求,但下一次交貨要從今天開始一周。”
一些 OOS 將很難預測,即使它們是可以避免的,如果它們被及時知道的話。“如果我們知道我們會將托盤從叉車上掉下來並銷毀所有產品,我們會再訂購一個。”
零售商確實明白他們需要以高服務水平為目標,但 100% 是不可能實現的。人們確實會進來併購買您在某些產品上的全部庫存。這很難預測(見上文)並且非常罕見,以至於您不想在這種情況發生的情況下填滿您的貨架。比較帕累托定律:80%(甚至 90%)的服務水平很容易達到,但要達到 99.9%則要困難得多。有些OOS是有意識地允許的。
類似於摩爾定律的東西成立:ML 變得更好,期望值就會增加,人們就會更加努力地為模型創造生命。雖然 OOS 檢測(和預測)算法有所改進,但零售商正忙於讓我們的生活變得更加困難。
- 例如通過變體增殖。在四種口味的酸奶上檢測 OOS 比檢測二十種不同口味的酸奶更容易。為什麼?因為人們不吃五倍的酸奶。相反,現在幾乎沒有變化的總需求分佈在五倍多的 SKU 上,每個 SKU 的庫存是以前的五分之一。長尾正在擴大,信號越來越弱。
- 或者通過允許使用您自己的設備進行移動結帳。這可能會大大降低入店行竊的心理障礙,因此系統庫存將比現在更糟,當然,系統庫存可能是 OOS 的最佳預測指標,因此如果它們關閉,模型將惡化。
我碰巧從事零售銷售預測工作已經超過 12 年了,所以我對這樣的發展確實有一些想法。
我可能很悲觀,但我認為與 OOS 檢測相比,其他 ML 用例的效果非常相似。或許這不是悲觀主義:這意味著問題可能永遠不會“解決”,所以即使幾十年後我們仍然有工作要做。