Eksponentsiaalsete silumismudelite loomine Pythoni abil: lihtne eksponentsiaalne silumine, Holts ja Holt-Winters

Mitu iPhone XSi müüakse esimese 12 kuu jooksul? Milline on Tesla nõudluse trend pärast seda, kui Eloni muskus suitsetab otse-eetris umbrohtu? Kas see talv tuleb soe? (Ma elan Kanadas.) Kui olete nende probleemide suhtes uudishimulik, lubab Exponentsi silumine teil mudelite ehitamise kaudu tulevikku piiluda.

Eksponentsiaalsed silumismeetodid määravad varasemate vaatluste jaoks eksponentsiaalselt kaalu. Mida hilisem vaatlus on saadud, seda suuremat kaalu omistatakse. Näiteks on mõistlik kinnitada eelmise kuu vaatlustele suuremad kaalud kui 12 kuu taguste vaatluste jaoks.

Eksponentsiaalsed silumisraskused minevikust tänapäevani

See artikkel illustreerib, kuidas Pythonit ja Statsmodeleid kasutades luua lihtsaid eksponentsiaalseid silumis-, Holti- ja Holtin-Wintersi mudeleid. Iga mudeli jaoks korraldatakse demonstratsioon järgmisel viisil,

Statsmodels on Pythoni moodul, mis pakub klasse ja funktsioone paljude erinevate statistiliste mudelite rakendamiseks. Peame selle Pythoni koodi importima järgmiselt.

saidist statsmodels.tsa.api importige ExponentialSmoothing, SimpleExpSmoothing, Holt

Meie näidete lähteandmete kogum sisaldab kinnisvara müügi arvu USA linnas ajavahemikul 2007-01 kuni 2017-12.

Kinnisvara müügi lähteandmed

Kasutage joonjoont, kus näeme andmete varieerumist aastate lõikes.

df.plot.line (x = 'YEAR_MONTH_SALE_DATE',
             y = 'COUNT_YEAR_MONTH_SALE_SAMPLE')
plt.show ()

Prognoosime kinnisvara müüki 2017. aastal, kasutades 10-aastaseid ajaloolisi andmeid (2007-2016).

Lihtne eksponentsiaalne silumine (SES)

SES on hea valik andmete prognoosimiseks, millel pole selget suundumust ega hooajalisi muutusi. Prognooside arvutamisel kasutatakse kaalutud keskmisi, mis tähendab, et suurimad raskused on seotud viimaste vaatlustega, väikseimad kaalud on seotud kõige vanemate vaatlustega:

kus 0≤ α ≤1 on silumisparameeter.

Kaalude vähenemise kiirust kontrollib silumisparameeter α. Kui α on suur (st lähedane 1-le), antakse uuematele vaatlustele rohkem kaalu. On 2 äärmuslikku juhtumit:

  • α = 0: kõigi tulevaste väärtuste prognoosid on võrdsed ajalooliste andmete keskmisega (ehk „keskmisega”), mida nimetatakse keskmiseks meetodiks.
  • α = 1: määrake kõik prognoosid lihtsalt viimase vaatluse väärtuseks, mida statistikas nimetatakse naiivseks meetodiks.

Siin on kolm lihtsa eksponentsiaalse silumise varianti:

  1. Sobivuses fit1 pakume mudelile selgesõnaliselt silumisparameetri α = 0,2
  2. In fit2 valime α = 0,6
  3. Rakenduses fit3 kasutame automaatset optimeerimist, mis võimaldab statsmodellidel automaatselt meie jaoks optimeeritud väärtuse leida. See on soovitatav lähenemisviis.
# Lihtne eksponentsiaalne silumine
fit1 = SimpleExpSmoothing (saledata) .fit (smoothing_level = 0,2, optimeeritud = False)
fcast1 = fit1.forecast (12) .rename (r '$ \ alpha = 0.2 $')
# süžee
fcast1.plot (marker = 'o', värv = 'sinine', legend = tõene)
fit1.fittedvalues.plot (marker = 'o', värv = 'sinine')



fit2 = SimpleExpSmoothing (saledata) .fit (smoothing_level = 0,6, optimeeritud = False)
fcast2 = fit2.forecast (12) .rename (r '$ \ alpha = 0.6 $')
# süžee
fcast2.plot (marker = 'o', värv = 'punane', legend = tõene)
fit2.fittedvalues.plot (marker = 'o', värv = 'punane')


fit3 = SimpleExpSmoothing (saledata) .fit ()
fcast3 = fit3.forecast (12) .rename (r '$ \ alpha =% s $'% fit3.model.params ['smoothing_level'])
# süžee
fcast3.plot (marker = 'o', värv = 'roheline', legend = tõene)
fit3.fittedvalues.plot (marker = 'o', värv = 'roheline')

plt.show ()

Prognoosida kinnisvara müüki SES-iga perioodil 2017-01 - 2017-12.

Prognoosimine lihtsa eksponentsiaalse silumisega

Holtsi meetod

Holti laiendatud lihtne eksponentsiaalne silumine (lahendus ilma selge trendi või hooajalisusega) võimaldab prognoosida andmeid 1957. aasta suundumuste kohta. Holtsi meetod hõlmab prognoosivõrrandit ja kahte tasandusvõrrandit (üks taseme ja teine ​​trendi jaoks):

kus 0≤ α ≤1 on taseme silumisparameeter ja 0≤ β * ≤1 on trendi silumisparameeter.

Pikaajalise prognoosi jaoks suureneb või väheneb tulevikus Holti meetodil prognoosimine määramata ajaks. Sel juhul kasutame summutatud trendi meetodit, mille summutusparameeter on 0 <ϕ <1, et vältida prognoosi “muutumist looduses”.

Jällegi, siin on meil kolm Halti meetodi varianti:

  1. Failis fit1 pakume mudelile selgesõnaliselt silumisparameetri α = 0,8, β * = 0,2.
  2. Fit2-s kasutame Holti lisamudeli asemel eksponentsiaalset mudelit (mis on vaikimisi).
  3. Fit3-s kasutame Holti lisandimudeli summutatud versiooni, kuid lubame summutusparameetri ϕ optimeerida, kinnitades samal ajal väärtused α = 0,8, β * = 0,2.
fit1 = Holt (müügiandmed) .fit (silumisaste = tase = 0,8, silumisaste = 0,2, optimeeritud = vale)
fcast1 = fit1.forecast (12) .rename ("Holtsi lineaarne trend")

fit2 = Holt (müügiandmed, eksponentsiaalne = tõene) .fit (silumisaste = tase = 0,8, silumisaste = 0,2, optimeeritud = vale)
fcast2 = fit2.forecast (12) .rename ("eksponentsiaalne trend")

fit3 = Holt (saledata, summutatud = tõene) .fit (smoothing_level = 0,8, smoothing_slope = 0,2)
fcast3 = fit3.forecast (12) .rename ("Summutatud lisandite trend")


fit1.fittedvalues.plot (marker = "o", värv = "sinine")
fcast1.plot (värv = 'sinine', marker = "o", legend = tõene)
fit2.fittedvalues.plot (marker = "o", värv = "punane")
fcast2.plot (värv = 'punane', marker = "o", legend = tõene)
fit3.fittedvalues.plot (marker = "o", värv = "roheline")
fcast3.plot (värv = 'roheline', marker = "o", legend = tõene)

plt.show ()
Ennustamine Halti meetodiga

Holt-Wintersi meetod

(Peter Winters oli Holti õpilane. Holti-Wintersi meetodit soovitas kõigepealt Peter ja siis töötasid nad selle kallal edasi. Milline ilus ja suurepärane seos. Just nagu Platon tutvus Sokratesega.)

Holt-Wintersi meetod sobib trendide ja hooajalisusega seotud andmete jaoks, mis sisaldab hooajalisuse silumisparameetrit γ. Sellel meetodil on kaks varianti:

  • Lisandmeetod: hooajalised erinevused on sarjade lõikes ligikaudu püsivad.
  • Korrutusmeetod: hooajalised erinevused muutuvad proportsionaalselt sarja tasemega.

Siin juhitakse täielikult Holts-Wintersi meetodit, mis sisaldab trendikomponenti ja hooajalist komponenti. Statsmodels võimaldab kõiki kombinatsioone, sealhulgas järgmistes näidetes toodud viisil:

  1. F1-s kasutame lisanditrendi, perioodi hooaja pikkus = 4 lisaainet hooajaliselt ja Box-Coxi teisendust.
  2. Fit2-s kasutame aditiivset trendi, perioodi hooaja pikkus = 4 korrutavat hooaja korrutamist ja Box-Coxi teisendust.
  3. Fit3-s kasutame summutatud suundumust, perioodi hooaja pikkus = 4 = 4 ja Box-Coxi teisendust.
  4. Fit4-s kasutame summutatud suundumust, perioodi hooaja pikkus = 4 korrutist ja Box-Coxi teisendust.
fit1 = ExponentialSmoothing (müügiandmed, hooaja_perioodid = 4, trend = 'lisa', hooajaline = 'lisa') .fit (kasutamine_boxcox = tõene)
fit2 = ExponentialSmoothing (müügiandmed, hooaja_perioodid = 4, trend = 'lisa', hooajaline = 'mitu') .fit (kasutamine_boxcox = tõene)
fit3 = ExponentialSmoothing (müügiandmed, hooaja_perioodid = 4, trend = 'lisa', hooajaline = 'lisa', summutatud = tõene) .fit (use_boxcox = True)
fit4 = ExponentialSmoothing (müügiandmed, hooaja_perioodid = 4, trend = 'lisa', hooajaline = 'mitu', summutatud = tõene) .fit (use_boxcox = True)
fit1.fittedvalues.plot (stiil = '-', värv = 'punane')
fit2.fittedvalues.plot (stiil = '-', värv = 'roheline')

fit1.forecast (12) .plot (stiil = '-', marker = 'o', värv = 'punane', legend = tõene)
fit2.forecast (12) .plot (stiil = '-', marker = 'o', värv = 'roheline', legend = tõene)

plt.show ()
print ("Kinnisvara müügi prognoosimine Holt-Wintersi meetodil nii aditiivse kui ka multiplikatiivse hooajalisusega.")
Kinnisvara müügi prognoosimine Holt-Wintersi meetodi abil nii aditiivse kui ka multiplikatiivse hooajalisusega

Kokkuvõtteks võib öelda, et käisime me läbi mehaanika ja python-koodi kolme eksponentsiaalse silumismudeli jaoks. Nagu allolevast tabelist nähtub, pakun teile metoodika teie andmekogumile sobiva mudeli valimiseks.

Eksponentsiaalse silumise metoodika

Eksponentsiaalsete silumismeetodite eri komponentide vormide silumisparameetrite kokkuvõte.

Parameetrite silumine

Eksponentsiaalne silumine on tänapäeval üks kõige laialdasemalt kasutatavaid ja edukamaid prognoosimismeetodeid tööstuses. Kuidas prognoosida jaemüüki, turistide saabumist, elektrinõudlust või tulude kasvu? Eksponentsiaalne silumine on üks superjõude, mida peate tuleviku paljastamiseks teie ees.