Oglądałem prezentację specjalisty ds. ML od jednego z głównych sprzedawców detalicznych, gdzie opracowali model pozwalający przewidywać zdarzenia z magazynu.
Załóżmy przez chwilę, że z czasem ich model staje się bardzo dokładny, czy nie byłoby to w jakiś sposób „samobójcze”? Oznacza to, że jeśli model naprawdę działa dobrze, będą w stanie przewidywać zdarzenia braku zapasów i ich unikać, ostatecznie dochodząc do punktu, w którym będzie ich niewiele lub nie będzie ich wcale. Ale w takim przypadku nie będzie wystarczających danych historycznych, aby uruchomić ich model, lub ich model zostanie wykolejony, ponieważ te same czynniki przyczynowe, które wskazywały na brak akcji, już tego nie robią.
Jakie są strategie radzenia sobie z takim scenariuszem?
Dodatkowo można wyobrazić sobie odwrotną sytuację: na przykład system rekomendujący może stać się „samospełniającą się przepowiednią” ze wzrostem sprzedaży par pozycji wynikającym z wyników systemu rekomendującego, nawet jeśli te dwa przedmioty nie są tak naprawdę związane z.
Wydaje mi się, że oba są wynikiem swoistej pętli sprzężenia zwrotnego, która zachodzi między wyjściem predyktora a działaniami podejmowanymi na jego podstawie. Jak poradzić sobie z takimi sytuacjami?
źródło
Odpowiedzi:
Istnieją dwie możliwości wykolejenia modelu wykrywania braku zapasów (OOS):
Zależność między danymi wejściowymi a OOS może z czasem ulec zmianie. Na przykład promocje mogą prowadzić do wyższego OOS (sprzedaż promocyjna jest trudniejsza do przewidzenia niż zwykła sprzedaż, częściowo dlatego, że nie tylko średni wzrost sprzedaży, ale także wariancja sprzedaży, a „trudniejsze do przewidzenia” przekłada się często na OOS), ale system i jego użytkownicy mogą się tego nauczyć i zgromadzić dodatkowe zapasy na promocje. Po pewnym czasie pierwotny związek między promocjami i OOS już nie obowiązuje.
Jest to często nazywane „przesunięciem modelu” lub podobne . Możesz temu zaradzić, dostosowując swój model. Najczęstszym sposobem jest inne ważenie danych wejściowych, co daje mniejszą wagę starszym obserwacjom.
Nawet jeśli relacja między predyktorem a OOS się nie zmienia, rozkład predyktora może się zmienić. Na przykład wiele dni z zerową sprzedażą konkretnej jednostki magazynowej (SKU) może sygnalizować OOS - ale jeśli model działa dobrze, wówczas OOS może zostać zmniejszona w całym systemie, a po prostu może nie być tak wielu sekwencji zerowej sprzedaży .
Zmiany w rozkładzie predyktora nie powinny stanowić problemu. Twój model po prostu wyświetli niższe prawdopodobieństwo OOS.
W końcu prawdopodobnie nie musisz się zbytnio martwić. Nigdy nie będzie zero OOS. Występują mechanizmy sprzężenia zwrotnego, takie jak powyższe, ale nie będą działać, dopóki system operacyjny nie zostanie całkowicie wyeliminowany.
Tak się składa, że od ponad dwunastu lat pracuję w prognozowaniu sprzedaży detalicznej, więc mam pewien pomysł na temat takich wydarzeń.
Mogę być pesymistą, ale myślę, że bardzo podobne efekty działają w innych przypadkach użycia ML niż wykrywanie OOS. A może nie jest to pesymizm: oznacza to, że problemy prawdopodobnie nigdy nie zostaną „rozwiązane”, więc praca będzie dla nas jeszcze za dziesięciolecia.
źródło
Jeśli używasz modelu do wspierania decyzji o interwencji w systemie, to logicznie model powinien starać się przewidzieć wynik uwarunkowany daną interwencją. Następnie osobno powinieneś zoptymalizować, aby wybrać interwencję z najlepszym oczekiwanym rezultatem. Nie próbujesz przewidzieć własnej interwencji.
W takim przypadku model może przewidzieć popyt (zmienną, której nie kontrolujesz bezpośrednio), co w połączeniu z wyborem zapasu spowoduje wystąpienie zdarzenia braku zapasów lub nie. Model powinien nadal być „nagradzany” za prawidłowe przewidywanie popytu, ponieważ jest to jego zadanie. Out-of-stock wydarzeń zależeć będzie od tej zmiennej wraz ze swoim wyborze obsady.
źródło
Prawdopodobnie możesz śledzić, kiedy mają miejsce zdarzenia uzupełniania zapasów. Zatem kwestią arytmetyki jest ustalenie, kiedy zapasy zostaną wyczerpane, jeśli model nie zostanie użyty do uzupełnienia zapasów.
Zakłada się, że każdy dodatni poziom zapasów jest niezależny od poziomu sprzedaży. Komentator mówi, że to założenie nie ma zastosowania w rzeczywistości. Tak czy inaczej nie wiem - nie pracuję na detalicznych zestawach danych. Ale dla uproszczenia moje proponowane podejście pozwala na wyciąganie wniosków przy użyciu kontrfaktycznego rozumowania; to, czy to uproszczenie jest zbyt nierealne, aby dać sensowny wgląd, zależy od ciebie.
źródło
Twój scenariusz jest bardzo podobny do krytyki Lucasa w dziedzinie ekonomii. W uczeniu maszynowym jest to nazywane „ przesunięciem zestawu danych ”.
Możesz to przezwyciężyć, jak mówi @Sycorax, poprzez jawne modelowanie.
źródło
Należy pamiętać, że ML jest celem instrumentalnym. Ostatecznie nie chcemy przewidywać zdarzeń braku zapasów, chcemy zapobiegać zdarzeniom braku zapasów. Przewidywanie brakujących zapasów jest po prostu środkiem do osiągnięcia tego celu. Jeśli chodzi o błędy typu II, nie stanowi to problemu. Albo nadal mamy OOSE, w którym to przypadku mamy dane do wyszkolenia naszego modelu, albo nie mamy, w którym problem, do którego rozwiązania został stworzony model, został rozwiązany. Problemem mogą być błędy typu I. Łatwo wpaść w Bear Patrolbłędem jest to, że masz system X zbudowany w celu zapobiegania Y, nie widzisz Y, więc dochodzisz do wniosku, że X zapobiega Y, a wszelkie próby zamknięcia X są odrzucane na podstawie „Ale robi tak dobrą robotę zapobieganie Y! ” Organizacje mogą być zamykane na drogie programy, ponieważ nikt nie chce ryzykować powrotu Y. Trudno jest ustalić, czy X jest naprawdę konieczne, nie dopuszczając takiej możliwości.
Następnie staje się to kompromisem tego, ile jesteś skłonny od czasu do czasu zaangażować się (w zależności od modelu) w zachowanie nieoptymalne, aby uzyskać grupę kontrolną. Jest to część każdej aktywnej eksploracji: jeśli masz lek, który Twoim zdaniem jest skuteczny, musisz mieć grupę kontrolną, która nie otrzymuje tego leku, aby potwierdzić, że jest on faktycznie skuteczny.
źródło