Klassisk ML slår fortfarande en LLM på efterfrågeprognoser

En inköpare klistrar in ett års månadsförsäljning för en produkt i en chattassistent och frågar hur många enheter som ska beställas till nästa kvartal. Svaret är en enda självsäker siffra med en rimlig förklaring: det finns en viss säsongsvariation, en svag uppåtgående trend, och en säkerhetsmarginal har lagts till. Inköparen lägger ordern.
Siffran kan till och med ligga nära. Det är inte problemet. Problemet är att ingen vet hur nära den sannolikt ligger, eftersom ingenting i den går att mäta. Det finns ingen uppgift om hur metoden skulle ha presterat förra året, inget felintervall och ingen kännedom om kampanjen som är planerad nästa månad, de tre veckor då artikeln var slut i lager eller leverantörens nya ledtid.
Efterfrågeprognoser är ett statistiskt problem om siffror över tid, med känd struktur: trend, säsong, kampanjer, prisändringar och lagerbrister som döljer den verkliga efterfrågan. Klassiska metoder byggdes för den strukturen. Exponentiell utjämning, modeller av ARIMA-typ och gradientboostade träd på väl valda variabler är billiga att köra, och framför allt kan deras fel mätas på historiken innan någon litar på dem. En generell språkmodell genererar sannolik text. En siffra i den texten kommer utan felmarginal och utan backtest.
Där det går fel att fråga en chattmodell
Inget backtest. Du vet inte hur fel metoden skulle ha haft på förra årets data, så du kan inte jämföra den med något – inte ens med att inte göra något sofistikerat alls.
Försäljning är inte efterfrågan. När hyllan var tom var försäljningen noll, men inte efterfrågan. En modell som läser rå försäljningshistorik lär sig förlorad efterfrågan som låg efterfrågan. Prognosflöden hanterar lagerbrister uttryckligen; en inklistrad tabell gör det inte.
Det som ryms i en prompt är inte historiken. Ett verkligt sortiment är många artiklar på många platser, med en hierarki av kategorier som delar mönster. Det ryms inte i en konversation, så modellen gör en prognos för varje artikel för sig utifrån det lilla den fick se.
Ett nytt svar varje gång. Språkmodeller samplar sina svar. Fråga två gånger och du kan få två siffror, och det finns inget principiellt sätt att välja mellan dem.
Förklaringar som låter rätt. Modellen nämner säsongsvariation oavsett om datan har någon, eftersom prognoser brukar nämna säsongsvariation. Förklaringen är en stil, inte en analys.
Kostnad och hastighet i stor skala. Att köra varje artikel varje vecka genom en stor modell kostar mycket mer än en klassisk modell som utan problem körs på vanlig hårdvara.
Var varje slags modell hör hemma
Klassiska modeller tar fram siffrorna. Börja med naiva baslinjer: samma period förra året och genomsnittet av de senaste perioderna. Prova sedan exponentiell utjämning och en gradientboostad modell med variabler för pris, kampanjer, kalender och lagerbrister. Behåll den som slår baslinjerna i ett backtest, och fortsätt att mäta den.
Språkmodellen samlar in och förklarar. Den läser leverantörens mejl om en längre ledtid och gör om det till en parameter. Den gör om kampanjplanen som säljavdelningen skrivit till variabler som prognosen kan använda. Den förklarar en prognos för inköparen med vanliga ord och skriver ett utkast till inköpsordern för godkännande. Det är där språkmodeller är starka, som beskrivs i där språkmodeller gör nytta.
Grundmodeller för tidsserier är en egen kategori. Modeller som är förtränade specifikt på tidsserier är inte chattassistenter, och några av dem är värda att testa. Behandla dem som vilken annan kandidat som helst: samma baslinje, samma backtest, och behåll dem bara om de vinner på din data.
En människa beslutar om ordern. Prognosen, dess osäkerhet och begränsningarna (minsta orderkvantitet, hållbarhet, budget) blir en föreslagen inköpsorder. Någon som bär ansvaret godkänner den.
Den kedjan är vad Hurukans moduler är utformade kring. Saldon, reservationer och inventeringar i Lager och logistik ger historiken och lagerbristerna; Inköp gör en prognos till en föreslagen inköpsorder som väntar på godkännande. Lagret Superintelligens skickar varje uppgift till rätt slags modell: en språkmodell för att läsa och skriva utkast, en prognosmodell för siffrorna. Det är under uppbyggnad. En prognosmodell av det här slaget är också ett bra exempel på en modell som kan köras på din egen hårdvara, som diskuteras i små modeller på egen hårdvara.
Ett test du kan göra i dag
Ta en produkt med minst två års historik. Håll undan de senaste tre månaderna och låtsas att du inte känner till dem.
Gör en prognos för de tre månaderna på tre sätt, med bara datan före det undanhållna intervallet:
- Samma tre månader föregående år.
- Genomsnittet av de tre månaderna närmast före det undanhållna intervallet.
- Den metod du använder i dag, oavsett om det är ett planeringsverktyg, ett kalkylblad eller en chattassistent.
Jämför varje prognos med vad som faktiskt hände, med det genomsnittliga absoluta felet per månad.
Om din nuvarande metod inte slår båda de naiva baslinjerna hjälper ingen modelluppgradering förrän det är förstått. Vad som än vinner har du nu en siffra för hur fel den brukar ha, och det är den siffran som gör en prognos användbar: den talar om hur stort säkerhetslager du behöver och hur långt du kan lita på nästa siffra.
- efterfrågeprognos
- maskininlärning
- backtest
- inköp