Algoritmer for behovsprognose

Note

Interessegrupper for fellesskapet har nå flyttet fra Yammer til Microsoft Viva Engage. Hvis du vil bli med i et Viva Engage-fellesskap og delta i de siste diskusjonene, fyller du ut skjemaet Be om tilgang til Finance and Operations Viva Engage Community og velger fellesskapet du vil bli med i.

Etterspørselsplanlegging i Microsoft Dynamics 365 Supply Chain Management inkluderer fire populære prognosealgoritmer for etterspørsel: auto-ARIMA, ETS, Prophet og XGBoost.

  • Auto-ARIMA fungerer bra med stasjonære data. Stasjonære data er data som har et konstant middelverdi, konstant standardavvik og ingen sesongavhengighet.
  • Feil, trend og sesongavhengighet (ETS) fungerer bra hvis forretningstilfellet er enkelt og dataene har ulike mønstre, for eksempel lineære eller eksponentielle trender, eller hvis du vil at prognosen skal legge mer vekt på de nyeste dataene.
  • Prophet fungerer best med komplekse data fra virkeligheten.
  • eXtreme Gradient Boosting (XGBoost) kan generere en prognose basert på flere inndata.

I tillegg gir behovsplanlegging en algoritme for beste tilpassingsmodell , som automatisk velger det beste av de tilgjengelige algoritmene for hvert produkt og hver dimensjonskombinasjon. Med behovsplanlegging kan du også utvikle og bruke dine egne egendefinerte algoritmer.

I behovsplanlegging velger du en prognosealgoritme når du plasserer og konfigurerer en prognose eller prognose med signaler trinn i en prognosemodell. Deretter bruker du prognosemodellen i en prognoseprofil til å generere en prognose.

Denne artikkelen beskriver hvordan hver algoritme fungerer og dens egnethet for ulike typer historiske behovsdata.

Når du skal bruke hver prognosealgoritme

Algoritmen for behovsprognose du bruker, avhenger av de bestemte egenskapene til de historiske dataene. Tabellen nedenfor viser hvilke prognosealgoritmer med enkeltinndata som passer best til hvert av flere ulike forretningsscenarioer. XGBoost er utelatt fra denne tabellen, fordi den alltid brukes til prognoser med flere inndata. For de fleste andre scenarioer bruker du algoritmen for beste tilpassingsmodell, fordi den automatisk velger riktig prognosealgoritme for hvert produkt og hver dimensjonskombinasjon.

Scenario Auto-ARIMA ETS Profet
Enkel forretningssak Akseptabelt Anbefalt Akseptabelt
Tidsserien har en annen (lineær/eksponentiell) trend og flere sesongtyper. Anbefales ikke Anbefalt Anbefalt
Tidsserien viser en klar lineær trend. Anbefalt Anbefalt Akseptabelt
Dataene er stasjonære. Anbefalt Anbefales ikke Akseptabelt
Data er ikke-stasjonære. Anbefales ikke Akseptabelt Anbefalt
Hurtigprognoser kreves. Anbefales ikke Anbefalt Akseptabelt
Prognoser er fokusert på en nylig periode. Akseptabelt Anbefalt Akseptabelt

Algoritme for beste tilpassingsmodell

Algoritmen for beste tilpassingsmodell bestemmer automatisk hvilke av de andre tilgjengelige enkeltinndataalgoritmene (auto-ARIMA, ETS eller Prophet) som passer best til dataene for hvert produkt og hver dimensjonskombinasjon. På denne måten kan du bruke forskjellige modeller for ulike produkter. I de fleste tilfeller kan du bruke den beste tilpasningsmodellen, fordi den kombinerer styrkene til alle de andre standardmodellene. Følgende eksempel viser hvordan.

Eksempel på hvordan algoritmen for beste tilpasningsmodell fungerer

I dette eksemplet har du historiske tidsseriedata for behov som inkluderer følgende dimensjonskombinasjoner.

Produkt Store
En 1
En 2
B 1
B 2

Når du kjører en prognoseberegning ved hjelp av Profeten-modellen, får du følgende resultater. I dette eksemplet bruker systemet alltid profetens modell, uavhengig av den beregnede gjennomsnittlige absolutte prosentfeilen (MAPE) for hvert produkt og hver dimensjonskombinasjon.

Produkt Store Prognosemodell MAPE
En 1 Profet 0.12
En 2 Profet 0.56
B 1 Profet 0.65
B 2 Profet 0.09

Når du kjører en prognoseberegning ved hjelp av ETS-modellen, får du følgende resultater. I dette eksemplet bruker systemet alltid ETS-modellen, uavhengig av beregnet MAPE for hvert produkt og hver dimensjonskombinasjon.

Produkt Store Prognosemodell MAPE
A 1 ETS 0.18
En 2 ETS 0.15
B 1 ETS 0.21
B 2 ETS 0.31

Når du kjører en prognoseberegning ved hjelp av den beste tilpasningsmodellen, optimaliserer systemet modellvalget for hvert produkt og hver dimensjonskombinasjon. Utvalget endres basert på mønstre som finnes i de historiske salgsdataene.

Produkt Store Prophet MAPE Auto-ARIMA MAPE ETS MAPE Prognosemodell for beste tilpassing Beste tilpasning av MAPE
En 1 0.12 0.34 0.18 Profet 0.12
En 2 0.56 0.23 0.15 ETS 0.15
B 1 0.65 0.09 0.21 Auto-ARIMA 0.09
B 2 0.10 0.27 0.31 Profet 0.10

Diagrammet nedenfor viser den totale salgsprognosen på tvers av alle dimensjoner (alle produkter i alle butikker) i løpet av de neste ni månedene, funnet ved hjelp av tre forskjellige prognosemodeller. Den grønne linjen representerer den beste tilpassingsmodellen. Siden modellen for beste tilpasning velger den beste prognosemodellen for hvert produkt og hver dimensjonskombinasjon, unngår den ytterpunkter som kan oppstå hvis en enkelt modell brukes for alle dimensjonskombinasjoner. Som et resultat ligner den generelle beste passformprognosen et gjennomsnitt av enkeltmodellprognosene.

Skjermbilde av diagrammet som viser prognoseresultater fra tre ulike prognosemodeller, basert på de samme historiske dataene.

Forklaring:

  • Rød – bare profet.
  • Blå – bare ETS.
  • Grønn – beste passform.

Beste tilpassing av modellversjoner

Algoritmen for beste tilpassingsmodell er tilgjengelig i flere versjoner, som beskrevet i tabellen nedenfor. Vanligvis bør du bruke den nyeste versjonen som er tilgjengelig. Men for å sikre at alle eksisterende prognosemodeller fortsetter å fungere, forblir de eldre versjonene tilgjengelige og støttes inntil videre. Hvis du vil bruke en av disse algoritmene, velger du riktig versjon i konfigurasjonsinnstillingene for prognosetrinnet i prognosemodellen.

Navn Versjon kreves Beskrivelse
Beste tilpassingsmodell – versjon 1 Behovsplanlegging versjon 1.0.0.1067 eller nyere Fungerer som beskrevet i denne delen
Beste tilpassingsmodell – versjon 2 (forhåndsversjon) Behovsplanlegging versjon 1.0.0.3424 eller nyere Samme som versjon 1, men med følgende endringer:
  • Legger til støtte for Naive-prognoser som en måte å håndtere lavdatascenarioer på.
  • Data som brukes til opplærings- og testmodeller, er begrenset til verdier fra før prognosestartdatoen.
Beste tilpassingsmodell – versjon 3 (forhåndsversjon) Behovsplanlegging versjon 1.1.0.4 eller nyere Samme som versjon 2, men legger til støtte for Crostons metode for prognoser basert på uregelmessig etterspørsel (som krever data med mange nullbehovsperioder og sporadiske ikke-null krav).

Viktig!

  • Beste tilpasningsmodell – versjon 2 og beste tilpasningsmodell – versjon 3 er forhåndsvisningsfunksjoner.
  • Forhåndsversjonsfunksjonene er ikke ment for produksjonsbruk og kan ha begrenset funksjonalitet. Disse funksjonene er underlagt ekstra vilkår for bruk. De er tilgjengelige før en offisiell utgivelse, slik at kundene kan få tidlig tilgang og gi tilbakemelding.

Auto-ARIMA: Den tidsreisendes fryd

Auto-ARIMA-algoritmen er som en tidsmaskin. Det tar deg med på en reise gjennom tidligere etterspørselsmønstre, slik at du kan lage informerte prognoser om fremtiden.

Auto-ARIMA bruker en teknikk som kalles ARIMA. Navnet ARIMA er en forkortelse for de tre nøkkelkomponentene som teknikken kombinerer:

  • AR er en forkortelser for «automatisk regressiv». Denne komponenten går tilbake til tidsserien på egne tidligere verdier. Den registrerer påvirkningen av tidligere verdier på gjeldende verdi.
  • Jeg mangler "integrert". Denne komponenten, som også kalles differens, er et trinn som modellen tar for å transformere en ikke-stasjonær tidsserie til stasjonære data.
  • Ma er kort for "glidende gjennomsnitt." Denne komponenten tar for seg tidligere prognosefeil og forbedrer modellens nøyaktighet ved å jevne ut støyen.

Arima-teknikken kombinerer derfor autoregresjon og glidende gjennomsnitt etter at dataene er forskjellige. Den endelige prognosen kombinerer påvirkningen av tidligere verdier og justeringer fra tidligere feil.

Auto-ARIMA-algoritmen identifiserer automatisk den beste kombinasjonen av de tre komponentene for å opprette en prognosemodell som passer til dataene dine. Den følger disse trinnene for å generere prognoser:

  1. Kjør forskjellig på dataene hvis det ikke er stasjonært.
  2. Finn korrelasjon mellom forsinkede datapunkter.
  3. Beregne glidende gjennomsnittsfeil.

Auto-ARIMA fungerer særlig bra med tidsseriedata med et stabilt mønster over tid, for eksempel sesongavhengige svingninger eller trender. Hvis den historiske etterspørselen følger en rimelig konsekvent bane, foretrekker du kanskje å bruke auto-ARIMA som prognosemetode.

Auto-ARIMA-algoritmeligninger

Automatisk regressiv beregning

AR-komponenten bruker følgende formel:

Y(t) = c + ɸ1Y(t−1) + ɸ2Y(t−2) + ... + ɸpY(t−p) + ε(t)

Nøkkel:

  • Y(t) – verdien om gangen t.
  • c – En konstant.
  • ɸ1, ɸ2, … ɸp – Koeffisienter for modellen.
  • ε(t) – termen for hvit støyfeil.

Glidende gjennomsnittsberegning

MA-komponenten bruker følgende formel:

Y(t) = c + ε(t) + Θ1ε(t−1) + Θ2ε(t−2) + ... + Θqε(t−q)

Nøkkel:

  • Y(t) – verdien om gangen t.
  • c – En konstant.
  • ε(t), ε(t−1), ... ε(t−q) – Feilvilkår på tid t, t−1, ... tq.
  • ϴ1, ϴ2, … Θq – Modellens koeffisienter.

ARIMA-beregning

Auto-ARIMA-algoritmen kombinerer AR- og MA-komponentene ved hjelp av følgende formel:

ARIMA = AR + MA (etter at tidsserien er forskjellig)

ETS: Figurskifteren

ETS er en allsidig behovsprognosealgoritme som tilpasser seg til formen på dataene dine. Det endrer sin tilnærming basert på egenskapene til din historiske etterspørsel. Derfor er den egnet for et bredt spekter av scenarioer.

Navnet ETS er en forkortelse for de tre viktige komponentene som algoritmen dekomponerer tidsseriedataene til:

  • E er kort for «feil». Denne komponenten fanger opp tilfeldig støy eller uregelmessige svingninger.
  • T er kort for «trend». Denne komponenten representerer den generelle retningen for dataene over tid: økende, avtagende eller konstant.
  • S er en forkorter for "sesongavhengighet". Denne komponenten gjenspeiler gjentakende mønstre eller sykluser i dataene (for eksempel årlig eller månedlig).

Siden ETS forstår og modellerer disse komponentene, genererer det prognoser som fanger opp de underliggende mønstrene i dataene dine.

ETS spår fremtidige datapunkter ved å bruke ulike vekter på ulike observasjoner. Nyere datapunkter har mer vekt enn eldre. ETS kan også dekomponere tidsseriene til feil-, trend- og sesongkomponenter. (Feilen kommer av støy og svingninger i tidsserien.) ETS bruker den sesongavhengige periodeparameteren som du angir som en sesongindeks, estimerer trenden i den kommende horisonten og prøver flere verdier for å bestemme hva som passer. Til slutt spår den feilen og kombinerer den med de estimerte trend- og sesongkomponentene.

Etterspørselsplanlegging i administrasjon av forsyningskjede bestemmer hvilken "smak" av ETS som passer best for hver tidsserie og bruker den tilsvarende.

Her er en trinnvis forklaring av algoritmen:

  1. Dekomponer komponenter. Del opp tidsserien i de tre komponentene: feil (E), trend (T) og sesongavhengighet (S).

  2. Velg modeller for komponentene. Hver komponent følger en additivmodell :

    ETS(A,A,A) – additiv feil, additiv trend, additiv sesongavhengighet.

  3. Angi de opprinnelige tilstandene. Beregn opprinnelige verdier for modellens nivå, trend og sesongavhengighet for å starte den rekursive oppdateringsprosessen. Nivået er grunnlinjeprognosen, som modellen oppdateres mens den trener.

  4. Oppdater statene. Når nye datapunkter kommer, oppdaterer du tilstandene til modellen (nivå, trend og sesongavhengighet) ved hjelp av vektede utjevningsligninger.

  5. Prognose. Forutsi fremtidige verdier ved å kombinere de nyeste anslagene for nivå, trend og sesongavhengighet.

ETS-algoritmeligning

ETS-algoritmen bruker følgende formel:

F(t+1) = αA(t) + [1−α]F(t)

Nøkkel:

  • F(t+1) – den forventede verdien.
  • F(t) – den forrige prognoseverdien.
  • A(t) – den faktiske historiske verdien.
  • α – en utjevningskonstant (0 ≤ α ≤ 1).

Prophet: Den visjonære prognoseguruen

Facebooks forskningsteam utviklet Prophet. Det er en moderne og fleksibel prognosealgoritme som kan håndtere utfordringene data fra virkeligheten. Den er særlig effektiv ved håndtering av manglende verdier, avvik og komplekse mønstre. Det fungerer best med sesongbaserte data, kontoer for helligdager under prognoser, og trenger ikke mye forhåndsbehandler.

Prophet fungerer ved å dekomponere tidsseriedataene i flere komponenter, for eksempel trend, sesongavhengighet og helligdager, og deretter tilpasse en modell til hver komponent. Denne tilnærmingen gjør at Prophet kan fange nyansene i dataene nøyaktig og gi pålitelige prognoser. Profeten er ideell for bedrifter som har uregelmessige etterspørselsmønstre eller hyppige ytterpunkter. Det er også ideelt for bedrifter som påvirkes av spesielle arrangementer som helligdager eller kampanjer.

Profetens algoritme følger disse trinnene for å generere prognoser:

  1. Dekomponer tidsserien til trend-, sesong- og feriekomponenter.
  2. Finn og håndter endringspunkter for trendskift.
  3. Bruk Fourier-serien for sesongmønstre.
  4. Legg til ferieregressorer for uregelmessige hendelser.
  5. Tilpass modellparameterne ved hjelp av bayesisk optimalisering.
  6. Generer prognoser og usikkerhetsintervaller.

Profet algoritmeligning

Profetalgoritmen bruker følgende formel:

y(t) = g(t) + s(t) + h(t) + ε(t)

Nøkkel:

  • g(t) – en verdi som fanger opp de ikke-persiodiske trendendringene over tid. Algoritmen beregner denne verdien ved hjelp av en lineær trendligning.
  • s(t) – en verdi som representerer regelmessige sesongmønstre, for eksempel daglige, ukentlige eller årlige mønstre. Algoritmen modellerer denne verdien ved hjelp av Fourier-serien.
  • h(t) – en verdi som står for kjente, uregelmessige effekter forårsaket av helligdager eller spesielle hendelser. Algoritmen behandler disse effektene som flere regressorer, som gir fleksibilitet i modellering av spesielle hendelser.
  • ε(t) – tilfeldig støy eller uforklarlig variasjon.

XGBoost

I motsetning til de andre algoritmene som er beskrevet i denne artikkelen, genererer eXtreme Gradient Boosting (XGBoost) en prognose basert på flere inndata. Det er for øyeblikket den eneste algoritmen du kan bruke med prognose med signalerprognose modell trinn i behovsplanlegging. I tillegg støtter bare denne typen trinn den. Lær mer om hvordan du konfigurerer prognosemodeller som bruker XGBoost og signaliserer inndata i Prognose med signaler.

XGBoost er en svært effektiv og skalerbar implementering av graderingsøkning. Det bygger et ensemble av beslutningstrær for å gjøre spådommer. Følgende underdeler bryter ned hver av komponentene.

Beslutningstrær

Et beslutningstre er en maskinlæringsmodell som deler data inn i delsett basert på signalverdier (også kalt dimensjoner eller funksjoner) og danner en trelignende struktur. Eksemplet nedenfor viser salg basert på værdata.

                          [Is temp > 25°C?]
                          /               \
                        Yes                No
                       /                     \
        [Is temp > 30°C?]               [Is temp > 15°C?]
            /      \                        /           \
         Yes        No                    Yes             No
         /            \                   /                \
    Leaf: 80      Leaf: 60        [Is temp > 10°C?]     Leaf: 20
                                        /       \
                                    Yes         No
                                    /            \
                                Leaf: 40      Leaf: 10

Dette beslutningstreet utvikler seg på følgende måte:

  1. Rotnode – treet deler seg basert på om temperaturen overskrider 25 °C:

    • Ja – Gå til den venstre understrukturen.
    • Nei – Gå til høyre undertre.
  2. Venstre undertre (temp > 25°C) – Treet deler seg ytterligere basert på om temperaturen overskrider 30 °C:

    • Ja – Forutsi 80 salg.
    • Nei – Forutsi 60 salg.
  3. Høyre undertre (temp ≤ 25 °C) – treet deler seg basert på om temperaturen overskrider 15 °C:

    • Ja – treet deler seg ytterligere basert på om temperaturen overskrider 10 °C:

      • Ja – Forutsi 40 salg.
      • Nei – Forutsi 10 salg.
    • Nei – Forutsi 20 salg.

Ensemblelæring

Ensemblelæring er en maskinlæringstilnærming som kombinerer flere modeller (ofte kalt svake elever) for å lage prognoser. De kombinerte utdataene for mange modeller er ofte mer nøyaktige og robuste enn én enkelt modell.

Enn type ensemblelæring er kjent som boosting. I denne fremgangsmåten bygges modeller sekvensielt, og hver modell retter feilene i den forrige.

Gradientforsterkning

Graderingsøkning er en kraftig maskinlæringsteknikk som du kan bruke for både regresjon (som er tilfellet her) og klassifiseringsproblemer. Det bygger et ensemble av svake modeller (vanligvis beslutningstrær) sekvensielt, og hver modell fokuserer på å redusere feilene (rester) som de tidligere modellene gjorde.

Graderingsøkning fanger effektivt opp komplekse relasjoner mellom signaler (også kjent som eksogene variabler) og inndata (også kjent som målvariabelen). Det gir også bedre prediktiv ytelse enn andre metoder.

Slik fungerer XGBoost-algoritmen

XGBoost er en svært effektiv og skalerbar implementering av graderingsøkning. Det bygger et ensemble av beslutningstrær for å gjøre spådommer. Her er en trinnvis forklaring på hvordan det fungerer:

  1. Initialiser prognoser.

    • Aktivitet – Start ved å forutsi en basisverdi for alle forekomster.
    • Formål – Basisverdien er vanligvis middelverdien for målvariabelen for regresjon eller loggodds for klassifisering.
  2. Beregn rester (graderinger).

    • Oppgave – Beregne gjenværende eller graderinger, som representerer forskjellen mellom de forventede og faktiske verdiene.
    • Formål – Disse restene fungerer som feilsignalet som modellen prøver å minimere.
  3. Tilpass et beslutningstre.

    • Oppgave – Kalibrer et nytt beslutningstre ved hjelp av gjenværende (graderinger) som målverdier.

    • Formål – Treet forutser justeringer i den forrige modellens prognoser.

    • Viktige detaljer

      • XGBoost bruker en grådig algoritme til å dele dataene.
      • Deler velges basert på gevinsten i målfunksjonen, som er regularisert for å unngå overtilpasset.
  4. Regulariser trevekst.

    • Oppgave – Bruk betingelser for å hindre overfitting.

    • Formål – Regularisering bidrar til å generalisere modellen og opprettholde ytelsen på usynlige data.

    • Teknikker

      • Tredybde – Begrens maksimal dybde for trær.
      • Bladtykkelser – Straffe altfor komplekse trær ved å legge til regulariseringsvilkår.
      • Minimum delingsgevinst – Tillat en deling bare hvis det oppstår en minimumsforbedring i tapsfunksjonen.
  5. Oppdater prognoser.

    • Oppgave – Juster prognoser ved å legge til utdataene for det nye treet.
    • Formål – Dette trinnet reduserer feilen gradvis.
  6. Gjenta prosessen.

    • Oppgave – Gjenta trinn 2 til 5 for å legge til flere trær sekvensielt.

    • Formål – Hvert tre reduserer restene og forbedrer derfor modellen gradvis.

    • Stoppkriterier

      • Et fast antall trær implementeres i algoritmen for behovsplanleggingsappen.
      • Det er ingen signifikant forbedring i tapsfunksjonen (konvergens).
  7. Kombiner trær for sluttprognosen.

    • Oppgave – Aggreger utdataene for alle trær for å produsere den endelige prognosen.
    • Formål – hvert tre bidrar til det endelige resultatet. Derfor opprettes en ensembleeffekt.

Egendefinert Azure Machine Learning-algoritme

Hvis du har en egendefinert Azure Machine Learning algoritme som du vil bruke med prognosemodellene, kan du bruke den i behovsplanlegging.