Klassisk ML slår fortsatt en LLM på etterspørselsprognoser

En innkjøper limer inn et års månedlige salgstall for ett produkt i en chatassistent og spør hvor mange enheter som skal bestilles til neste kvartal. Svaret er ett selvsikkert tall med en fornuftig forklaring: Det er noe sesongvariasjon, en svak stigende trend, og det er lagt til en sikkerhetsmargin. Innkjøperen legger inn bestillingen.
Tallet kan til og med ligge nær. Det er ikke problemet. Problemet er at ingen vet hvor nær det sannsynligvis er, fordi ingenting ved det kan måles. Det finnes ingen oversikt over hvordan metoden ville ha truffet i fjor, ingen feilmargin og ingen kunnskap om kampanjen som er planlagt neste måned, de tre ukene varen var utsolgt, eller leverandørens nye leveringstid.
Etterspørselsprognoser er et statistisk problem om tall over tid, med kjent struktur: trend, sesong, kampanjer, prisendringer og utsolgtsituasjoner som skjuler den reelle etterspørselen. Klassiske metoder ble laget for nettopp den strukturen. Eksponentiell glatting, ARIMA-lignende modeller og gradient boosting-trær med godt valgte variabler er billige å kjøre, og fremfor alt kan feilen deres måles på historikken før noen stoler på dem. En generell språkmodell genererer sannsynlig tekst. Et tall inne i den teksten kommer uten feilmargin og uten backtest.
Der det går galt å spørre en chatmodell
Ingen backtest. Du vet ikke hvor feil metoden ville ha tatt på fjorårets data, så du kan ikke sammenligne den med noe – heller ikke med å ikke gjøre noe smart i det hele tatt.
Salg er ikke etterspørsel. Da hylla var tom, var salget null, men det var ikke etterspørselen. En modell som leser rå salgshistorikk, lærer at tapt etterspørsel er lav etterspørsel. Prognoseløyper håndterer utsolgtsituasjoner eksplisitt; en innlimt tabell gjør det ikke.
Det som får plass i en prompt, er ikke historikken. Et reelt sortiment består av mange varer på mange lokasjoner, med et hierarki av kategorier som deler mønstre. Det får ikke plass i en samtale, så modellen lager prognose for hver vare isolert, ut fra det lille den fikk se.
Nytt svar hver gang. Språkmodeller trekker utdataene sine fra en sannsynlighetsfordeling. Spør to ganger, og du kan få to tall – uten noen prinsipiell måte å velge mellom dem på.
Forklaringer som høres riktige ut. Modellen nevner sesongvariasjon enten dataene har det eller ikke, fordi prognoser pleier å nevne sesongvariasjon. Forklaringen er en stil, ikke en analyse.
Kostnad og hastighet i stor skala. Å kjøre hver vare hver uke gjennom en stor modell koster langt mer enn en klassisk modell som kjører uten problemer på vanlig maskinvare.
Hvor hver type modell hører hjemme
Klassiske modeller lager tallene. Begynn med naive referanser: samme periode i fjor og snittet av de siste periodene. Prøv deretter eksponentiell glatting og en gradient boosting-modell med variabler for pris, kampanjer, kalender og utsolgtsituasjoner. Behold den som slår referansene i en backtest, og fortsett å måle den.
Språkmodellen samler inn og forklarer. Den leser leverandørens e-post om lengre leveringstid og gjør den om til en parameter. Den gjør kampanjeplanen salg har skrevet, om til variabler prognosen kan bruke. Den forklarer en prognose for innkjøperen med enkle ord og lager utkast til innkjøpsordren for godkjenning. Det er der språkmodeller er sterke, som beskrevet i der språkmodeller gjør nytte for seg.
Grunnmodeller for tidsserier er en egen kategori. Modeller som er forhåndstrent spesifikt på tidsserier, er ikke chatassistenter, og noen av dem er verdt å teste. Behandle dem som enhver annen kandidat: samme referanse, samme backtest, og behold dem bare hvis de vinner på dine data.
Et menneske bestemmer bestillingen. Prognosen, usikkerheten og begrensningene (minste bestillingsmengde, holdbarhet, budsjett) blir til et forslag til innkjøpsordre. Noen med ansvar godkjenner det.
Det er den kjeden Hurukans moduler er designet rundt. Lagerbeholdning, reservasjoner og varetellinger i Lager og logistikk gir historikken og utsolgtsituasjonene; Innkjøp gjør en prognose om til et forslag til innkjøpsordre som venter på godkjenning. Laget Superintelligens sender hver oppgave til riktig type modell: en språkmodell til å lese og skrive utkast, en prognosemodell til tallene. Dette er under utvikling. En prognosemodell av denne typen er også et godt eksempel på en modell som kan kjøre på egen maskinvare, som drøftet i små modeller på egen maskinvare.
En test du kan kjøre i dag
Ta ett produkt med minst to års historikk. Hold tilbake de siste tre månedene, og lat som om du ikke kjenner dem.
Lag prognose for de tre månedene på tre måter, bare med dataene fra før perioden du holdt tilbake:
- De samme tre månedene året før.
- Snittet av de tre månedene rett før perioden du holdt tilbake.
- Den metoden du bruker i dag, enten det er et planleggingsverktøy, et regneark eller en chatassistent.
Sammenlign hver prognose med det som faktisk skjedde, med gjennomsnittlig absolutt avvik per måned.
Slår ikke dagens metode begge de naive referansene, vil ingen modelloppgradering hjelpe før du forstår hvorfor. Uansett hva som vinner, har du nå et tall for hvor feil metoden pleier å ta, og det tallet er det som gjør en prognose brukbar: Det forteller deg hvor stort sikkerhetslager du bør ha, og hvor mye du kan stole på neste tall.
- etterspørselsprognoser
- maskinlæring
- backtesting
- innkjøp