Bedrijven zijn afhankelijk van het voorspellen van toekomstige trends om strategische keuzes te maken, zoals het voorspellen van productverkopen of het inschatten van vraagvariatie. Een manier om effectieve voorspellingen te doen is tijdreeksvoorspelling. Een belangrijk principe van tijdreeksvoorspelling is de afhankelijkheid van historische datapunten om toekomstige resultaten te voorspellen. Dat vraagt om aandacht voor data, omdat praktijkdata vaak ruis bevat of ontbreekt, en dus lastig te voorspellen is.
Hoewel er veel tools zijn voor tijdreeksvoorspellingen, is Facebook Prophet specifiek ontworpen om om te gaan met realistische complexiteit, variërend van niet-lineaire trends en seizoensinvloeden tot de impact van speciale gebeurtenissen zoals feestdagen en marketingcampagnes of verkeerspieken. Als je helemaal niet bekend bent met tijdreeksvoorspellen, raad ik onze cursus Time Series Analysis in Python en/of onze cursus Forecasting in R aan.
Wat is Facebook Prophet?
Prophet is een open-sourcelibrary voor voorspellingen, ontwikkeld door Facebook’s Core Data Science-team. Het is beschikbaar in zowel Python als R. Een deel van de reden waarom data-analisten en data scientists het graag gebruiken, is dat het veel van de saaie stappen in traditionele voorspelmethoden automatiseert. Met die flexibiliteit helpt het gebruikers snel interpreteerbare en goede voorspellingen te maken.
De kern van Facebook Prophet’s modelleringskader
De modelleringsaanpak van Facebook Prophet is gestructureerd maar flexibel. Het decomponeert een tijdreeks in vier belangrijke componenten: trend, seizoensinvloed, feestdagen en fout. Die derde component, die ik de feestdagcomponent noemde, is minder standaard. Klassieke en STL-decompositie specificeren drie delen: trend, seizoensinvloed en fout.
Door te verduidelijken hoe trend, seizoensinvloed en feestdagen bijdragen aan de uiteindelijke voorspelling, helpt de decompositie om de redenering van het model te valideren terwijl we weloverwogen beslissingen proberen te nemen.
Decompositie van tijdreeksen
Prophet gebruikt een additief model waarin de tijdreeks y(t) als volgt wordt weergegeven:
Waarbij
Trend (g(t)) staat voor langetermijngroei of -daling.
Seizoensinvloed (s(t)) omvat terugkerende patronen zoals wekelijkse, maandelijkse of jaarlijkse fluctuaties.
Feestdageneffecten (h(t)) houden rekening met onregelmatige maar voorspelbare gebeurtenissen, zoals Black Friday of nationale feestdagen.
Fout (et) is de residuele ruis die niet door de andere componenten wordt verklaard.
Naast interpretatie door te laten zien welke factoren de voorspellingen aansturen, automatiseert het ook het grootste deel van het tijdreeksvoorspelproces, zoals het detecteren van seizoensinvloeden en het behandelen van ontbrekende waarden.
Door deze complexe voorbewerkingen af te handelen, verlaagt Prophet de behoefte aan uitgebreide statistische expertise, zoals vaak vereist is bij conventionele statistische methoden. ARIMA vereist bijvoorbeeld dat stationariteitsaannames gelden en houdt officieel geen rekening met externe factoren, terwijl Prophet seizoensinvloeden en feestdagimpact expliciet modelleert, waardoor het als makkelijker wordt gezien voor zakelijke voorspellingen.
Specificatie van de trendcomponent
Prophet heeft twee trendmodellen:
Het logistische groeimodel is nuttig wanneer een tijdreeks verzadigt op een maximale capaciteit, vergelijkbaar met wat gebeurt bij gebruikersadoptie van een nieuwe app.
Het stukgewijs lineaire model verdeelt de trend in segmenten met kantelpunten (changepoints), wat het eenvoudig maakt om plotselinge veranderingen in groei te modelleren.
Seizoensinvloeden modelleren
Seizoensinvloed wordt gemodelleerd met een Fourierreeks die vloeiende periodieke functies in tijdreeksdata mogelijk maakt. Er zijn twee hoofdvormen van seizoensgedrag:
Additieve seizoensinvloed is gewenst wanneer seizoensvariaties in grootte consistent blijven in de tijd.
Multiplicatieve seizoensinvloed is passend wanneer seizoensfluctuaties met de trend meegroeien, zoals een stijgend verkoopvolume bij algemene marktgroei.
Daarnaast kunnen gebruikers ook aangepaste seizoensinvloeden definiëren om unieke, domeinspecifieke patronen vast te leggen, bijvoorbeeld kwartaalpromoties.
Integratie van feestdagen en events
Prophet biedt ook de mogelijkheid om zowel vooraf gedefinieerde feestdagen als willekeurige lijsten met events op te nemen. Dit is vooral voordelig bij het modelleren van conjunctuurcycli, culturele feestdagen of eenmalige events zoals productlanceringen. Je kunt onverwachte gebeurtenissen zoals COVID-19 ook toevoegen als extra regressoren om voorspellingen dynamisch bij te werken. Het expliciet modelleren van zulke events verbetert de nauwkeurigheid en geeft inzicht in de impact van speciale data op onderliggende trends.
Omgaan met ruis en uitschieters
Echte data bevat vaak ruis en uitschieters, wat kan leiden tot vertekende modelvoorspellingen. Prophet heeft robuuste verliesfuncties en niet-parametrische trendcomponenten die de voorspellingen sterker maken tegen uitschieters in de data.
Om de stabiliteit van voorspellingen verder te verbeteren, is het handig om residudiagrammen te analyseren en data voor te bewerken door te winsoriseren of anomalieën te verwijderen. Zo leert het model de werkelijke trends, in plaats van willekeurige ruis.
Wanneer Facebook Prophet gebruiken (en wanneer niet)
Zoals de meeste machinelearningmodellen en -technieken is Prophet geen one-size-fits-alloplossing. Begrijpen waar het in uitblinkt en waar niet, is cruciaal om het effectief te gebruiken.
Sterke punten en ideale scenario’s
Prophet is vooral effectief wanneer:
Data duidelijke dagelijkse, wekelijkse of jaarlijkse seizoensinvloeden heeft.
Datasets incompleet zijn en geautomatiseerde afhandeling van ontbrekende waarden en uitschieters nodig hebben.
Gebruikers snel verkennende analyses en eerste modelontwikkeling nodig hebben.
De eenvoud maakt het toegankelijk voor gebruikers met beperkte statistische expertise, terwijl de interpreteerbaarheid analisten en data scientists helpt om resultaten effectief te communiceren aan niet-technische stakeholders.
Beperkingen en valkuilen
Prophet is mogelijk minder geschikt in de volgende scenario’s:
Zeer volatiele of niet-seizoensgebonden data, waar geen regelmatige periodieke patronen zijn.
Langetermijnvoorspellingen wanneer trends onvoorspelbaar zijn.
Niet-lineaire trends die niet worden vastgelegd door de stukgewijs lineaire of logistische modellen.
Een gouden regel bij het gebruik van Prophet, of elk voorspelmodel, is om het niet blindelings te adopteren. Zonder goede validatie kunnen modellen gemakkelijk te zelfverzekerde of misleidende voorspellingen produceren, zoals ook te zien is in diverse communitydiscussies en spraakmakende voorspelmissers.
Werken met Prophet in Python
Stap 1: Libraries importeren
Laad eerst alle vereiste Python-packages:
pandas voor datamanipulatie
prophet om het voorspelmodel te bouwen
matplotlib voor visualisatie
sklearn.metrics – om MAPE, de foutmaat, te berekenen
import pandas as pd
from prophet import Prophet
import matplotlib.pyplot as plt
from sklearn.metrics import mean_absolute_percentage_errorMogelijk gemaakt door
Stap 2: Dataset laden
Vervolgens lezen we ons CSV-bestand in met historische goudfuturesprijzen. Hier is een link naar de Kaggle-dataset die ik gebruik.
file_path ="future-gc00-daily-prices.csv"
gold_ts = pd.read_csv(file_path)Mogelijk gemaakt door
Stap 3: Data opschonen
Nu moeten we de data opschonen. Dat betekent dat we:
Komma’s uit numerieke kolommen verwijderen en ze omzetten naar floats.
De kolom Date converteren van stringformaat naar datetime.
Dit zorgt ervoor dat Prophet datums correct kan begrijpen en ordenen.
for col in["Open","High","Low","Close"]:
gold_ts[col]= gold_ts[col].str.replace(",","").astype(float)
gold_ts["Date"]= pd.to_datetime(gold_ts["Date"],format="%m/%d/%Y")Mogelijk gemaakt door
Stap 4: Sorteren op datum
We zetten de data in chronologische volgorde. Dit is een belangrijke stap die makkelijk gemist wordt.
We moeten de data ook voorbereiden voor Prophet, dat verwacht dat de invoerkolommen als volgt heten:
ds → datestamp
y → waarde om te voorspellen (hier de Close-prijs)
gold_ts = gold_ts[["Date","Close"]].rename(columns={"Date":"ds","Close":"y"})Mogelijk gemaakt door
Stap 6: Opsplitsen in train- en testsets
We splitsen de data nu op in een trainings- en testversie.
Bewaar het grootste deel van de data voor training.
Reserveer de laatste 180 rijen (of 10% als het minder is) om de nauwkeurigheid van het model te testen.
test_size =min(180,len(gold_ts)//10)
train = gold_ts.iloc[:-test_size]
test = gold_ts.iloc[-test_size:]Mogelijk gemaakt door
Stap 7: Het Prophet-model fitten
Train Prophet op de historische data met zowel dagelijkse als jaarlijkse seizoenscomponenten ingeschakeld.
model = Prophet(daily_seasonality=True, yearly_seasonality=True)
model.fit(train)Mogelijk gemaakt door
Stap 8: Toekomstige waarden voorspellen
We voorspellen voor evenveel dagen als in de testset.
De voorspelling bevat kolommen zoals yhat (voorspeld), yhat_lower en yhat_upper.
future = model.make_future_dataframe(periods=test_size)
forecast = model.predict(future)Mogelijk gemaakt door
Stap 9: Voorspellingen uitlijnen met werkelijkheden
Voeg werkelijke slotkoersen samen met modelvoorspellingen op overeenkomende datums om ze direct te vergelijken.
merged = pd.merge(test, forecast[["ds","yhat"]], on="ds", how="inner")Mogelijk gemaakt door
Stap 10: MAPE berekenen
We meten nu hoe nauwkeurig de voorspelling is. Als er geen overlap in datums is, krijg je een waarschuwing in plaats van een crash.
if merged.empty:print("No overlapping dates between forecast and test set.")else:
mape = mean_absolute_percentage_error(merged["y"], merged["yhat"])*100print(f"Mean Absolute Percentage Error (MAPE): {mape:.2f}%")Mogelijk gemaakt door
Hier is de mean absolute percentage error (MAPE): 5,83%
Stap 11: De voorspelling plotten
We visualiseren de voorspelling, betrouwbaarheidsintervallen en de werkelijke historie.
fig1 = model.plot(forecast)
plt.title("Gold Futures (GC00) - Close Price Forecast")
plt.xlabel("Date")
plt.ylabel("Close Price")
plt.show()Mogelijk gemaakt door
Stap 12: Seizoenscomponenten plotten
Het is nuttig om te laten zien hoe trend, dagelijkse en jaarlijkse seizoenspatronen bijdragen aan de voorspelling.
Geef de laatste voorspelde waarden en hun onzekerheidsmarges weer.
print(forecast[["ds","yhat","yhat_lower","yhat_upper"]].tail(10))Mogelijk gemaakt door
Voorbeeld van voorspelde waarden:
ds yhat yhat_lower yhat_upper
37142023-11-091834.5680811743.1278731922.79120537152023-11-101833.3235001749.2656781937.24609337162023-11-111832.8181961740.9412781921.77261137172023-11-121832.3708841745.2850471925.01268437182023-11-131832.6443501736.7927081919.05704237192023-11-141832.0177611736.2295021929.78666937202023-11-151831.6509061743.1900771924.85193637212023-11-161831.5665211738.1811841933.02674037222023-11-171830.4277131736.0385291919.50515537232023-11-181830.0298161737.0227541922.118728Mogelijk gemaakt door
Valideren en testen van Facebook Prophet
Validatiemethodologie
Tijdreeks-crossvalidatie is vereist om realistische voorspelscenario’s te simuleren. Het is belangrijk om de modelprestatie te evalueren op meerdere, opeenvolgende validatiesets. Dat helpt niet alleen om lookahead bias te vermijden, maar biedt ook generaliseerbaarheid naar toekomstige, ongeziene data.
Mean absolute percentage error (MAPE) meet het gemiddelde absolute procentuele verschil. Het is gemakkelijk te interpreteren over verschillende schalen. Dit is degene die we in ons Python-voorbeeld bekeken.
Vergelijkende analyse
Vergeleken met ARIMA of LSTM is Prophet goed in:
Omgaan met onregelmatige seizoensinvloeden en feestdageneffecten
Robuustheid tonen tegen ontbrekende data, uitschieters en zakelijke onregelmatigheden
Toch kan Prophet minder presteren in scenario’s met sterk niet-lineaire patronen of datasets met zwakke seizoensinvloeden.
Praktische toepassingen en beperkingen
Praktijkcases
Prophet is breed toegepast in verschillende sectoren voor use-cases zoals:
Retail-voorspellingen voor verkoop, vraaginschatting en voorraadbeheer
Voorspellen van webverkeer om gebruikersbetrokkenheid te begrijpen
Vraagvoorspelling voor energie om aanbod en verbruik efficiënt in balans te brengen.
Ondanks de voordelen zijn er momenten geweest waarop historische patronen faalden door onverwachte verstoringen, zoals tijdens de pandemie.
Schaalbaarheidsbeperkingen
Prophet kan matig grote datasets aan, wat passend is voor de meeste zakelijke en operationele voorspeltaken. Het gebruik met extreem grote datasets of hoogfrequente tijdreeksen is echter rekenintensief vanwege het onderliggende Bayesiaanse modelleringskader. Om dit te verlichten, wordt aangeraden om meerdere tijdreeksen parallel te voorspellen. Een andere praktische aanpak is het aggregeren of downsamplen van data. Dat verlaagt het geheugen- en rekentijdverbruik zonder waardevolle temporele patronen te verliezen.
Belangrijkste beperkingen
Prophet gaat uit van één doelvariabele en modelleert de trend met stukgewijs lineaire of logistische groeicurves. Zulke aannames beperken de flexibiliteit voor multivariate of problemen waar de trend niet domineert. Daarom is het nodig om domeinkennis toe te voegen aan Prophet’s voorspellingen, samen met externe validatie om betrouwbaarheid te waarborgen.
Mislukkingen en kritiek in de praktijk
Spraakmakende voorspelmissers, zoals de ineenstorting van de huizenmarktvoorspellingen bij Zillow, benadrukken de risico’s van overmatige afhankelijkheid van geautomatiseerde voorspelsoftware. Te veel vertrouwen op modeluitvoer zonder menselijke review kan tot kostbare fouten leiden. Daarom wordt aangeraden om grondige validatie en scenarioplanning uit te voeren bij het interpreteren van voorspelresultaten.
Aarzel niet om elk model en elke trend te bevragen. Stimuleer een cultuur die kritisch denken bevordert en teams in staat stelt de status quo uit te dagen. Ik heb zulke teams consequent robuuste voorspeloplossingen zien bouwen.
Tot slot raad ik sterk aan om een "vertrouwen maar verifiëren"-mentaliteit aan te nemen en een extra laag van je domeinkennis toe te voegen om de resultaten op gezond verstand te toetsen.
Toekomstige ontwikkelrichting
Prophet blijft zich ontwikkelen door onderzoek en communitybijdragen. Doorlopende verbeteringen in Prophet omvatten:
Multivariate ondersteuning
Verbeterde schaalbaarheid voor grote datasets
Community-gedreven extensies
Actief onderzoek richt zich op het integreren van nieuwe statistische methoden en het verbeteren van prestaties in complexe, hoogfrequente datasets.
Conclusie
Facebook Prophet is een krachtig hulpmiddel voor tijdreeksvoorspelling, met automatisering, interpreteerbaarheid en flexibiliteit. Het presteert goed voor verkennende voorspellingen in het bedrijfsleven en andere domeinen met sterke seizoensinvloeden of speciale gebeurtenissen.
Maar dat maakt het nog geen plug-and-playoplossing. Om betrouwbare voorspellingen te doen, moeten gebruikers zorgen voor zorgvuldige validatie, parameterafstelling en domeinkennis. Door de automatisering van Prophet te balanceren met doordacht menselijk oordeel kunnen analisten bruikbare inzichten ontwikkelen en veelvoorkomende valkuilen vermijden.
Voor hands-on learning vind je hier onze cursussen en skill tracks:
Ik ben een AI-strateeg en -ethicus die op het snijvlak van data science, product en engineering werkt aan schaalbare machinelearningsystemen. Genoteerd als een van de "Top 200 Business and Technology Innovators" ter wereld, heb ik als missie machine learning te democratiseren en het jargon te doorbreken, zodat iedereen deel kan uitmaken van deze transformatie.
Veelgestelde vragen
Waarvoor wordt Facebook Prophet gebruikt?⌄
Facebook Prophet wordt gebruikt voor tijdreeksvoorspellingen en helpt trends, seizoensinvloeden en eventeffecten in data zoals verkoop, vraag of webverkeer te voorspellen.
Hoe gaat Prophet om met feestdagen en speciale events?⌄
Prophet maakt het mogelijk om vooraf gedefinieerde of aangepaste events aan het model toe te voegen, wat rekening houdt met onregelmatige pieken of dalen in de tijdreeks.
Waarom is Prophet populair voor zakelijke voorspellingen?⌄
Prophet is geautomatiseerd, interpreteerbaar en robuust tegen ontbrekende data en uitschieters, waardoor het ideaal is voor snelle en betrouwbare voorspellingen.
Wanneer moet je Facebook Prophet vermijden?⌄
Je kunt Prophet beter vermijden bij zeer volatiele of niet-seizoensgebonden data, of wanneer trends te onvoorspelbaar zijn.
Wat zijn de belangrijkste voordelen van Prophet ten opzichte van ARIMA?⌄
In tegenstelling tot ARIMA vereist Prophet geen strikte stationariteit, gaat het om met ontbrekende data en detecteert het automatisch kantelpunten.
Bedrijven zijn afhankelijk van het voorspellen van toekomstige trends om strategische keuzes te maken, zoals het voorspellen van productverkopen of het inschatten van vraagvariatie. Een manier om effectieve voorspellingen te doen is tijdreeksvoorspelling. Een belangrijk principe van tijdreeksvoorspelling is de afhankelijkheid van historische datapunten om toekomstige resultaten te voorspellen. Dat vraagt om aandacht voor data, omdat praktijkdata vaak ruis bevat of ontbreekt, en dus lastig te voorspellen is.
Hoewel er veel tools zijn voor tijdreeksvoorspellingen, is Facebook Prophet specifiek ontworpen om om te gaan met realistische complexiteit, variërend van niet-lineaire trends en seizoensinvloeden tot de impact van speciale gebeurtenissen zoals feestdagen en marketingcampagnes of verkeerspieken. Als je helemaal niet bekend bent met tijdreeksvoorspellen, raad ik onze cursus Time Series Analysis in Python en/of onze cursus Forecasting in R aan.
Wat is Facebook Prophet?
Prophet is een open-sourcelibrary voor voorspellingen, ontwikkeld door Facebook’s Core Data Science-team. Het is beschikbaar in zowel Python als R. Een deel van de reden waarom data-analisten en data scientists het graag gebruiken, is dat het veel van de saaie stappen in traditionele voorspelmethoden automatiseert. Met die flexibiliteit helpt het gebruikers snel interpreteerbare en goede voorspellingen te maken.
De kern van Facebook Prophet’s modelleringskader
De modelleringsaanpak van Facebook Prophet is gestructureerd maar flexibel. Het decomponeert een tijdreeks in vier belangrijke componenten: trend, seizoensinvloed, feestdagen en fout. Die derde component, die ik de feestdagcomponent noemde, is minder standaard. Klassieke en STL-decompositie specificeren drie delen: trend, seizoensinvloed en fout.
Door te verduidelijken hoe trend, seizoensinvloed en feestdagen bijdragen aan de uiteindelijke voorspelling, helpt de decompositie om de redenering van het model te valideren terwijl we weloverwogen beslissingen proberen te nemen.
Decompositie van tijdreeksen
Prophet gebruikt een additief model waarin de tijdreeks
y(t)als volgt wordt weergegeven:Waarbij
Trend (
g(t)) staat voor langetermijngroei of -daling.Seizoensinvloed (
s(t)) omvat terugkerende patronen zoals wekelijkse, maandelijkse of jaarlijkse fluctuaties.Feestdageneffecten (
h(t)) houden rekening met onregelmatige maar voorspelbare gebeurtenissen, zoals Black Friday of nationale feestdagen.Fout (
et) is de residuele ruis die niet door de andere componenten wordt verklaard.Naast interpretatie door te laten zien welke factoren de voorspellingen aansturen, automatiseert het ook het grootste deel van het tijdreeksvoorspelproces, zoals het detecteren van seizoensinvloeden en het behandelen van ontbrekende waarden.
Door deze complexe voorbewerkingen af te handelen, verlaagt Prophet de behoefte aan uitgebreide statistische expertise, zoals vaak vereist is bij conventionele statistische methoden. ARIMA vereist bijvoorbeeld dat stationariteitsaannames gelden en houdt officieel geen rekening met externe factoren, terwijl Prophet seizoensinvloeden en feestdagimpact expliciet modelleert, waardoor het als makkelijker wordt gezien voor zakelijke voorspellingen.
Specificatie van de trendcomponent
Prophet heeft twee trendmodellen:
Seizoensinvloeden modelleren
Seizoensinvloed wordt gemodelleerd met een Fourierreeks die vloeiende periodieke functies in tijdreeksdata mogelijk maakt. Er zijn twee hoofdvormen van seizoensgedrag:
Daarnaast kunnen gebruikers ook aangepaste seizoensinvloeden definiëren om unieke, domeinspecifieke patronen vast te leggen, bijvoorbeeld kwartaalpromoties.
Integratie van feestdagen en events
Prophet biedt ook de mogelijkheid om zowel vooraf gedefinieerde feestdagen als willekeurige lijsten met events op te nemen. Dit is vooral voordelig bij het modelleren van conjunctuurcycli, culturele feestdagen of eenmalige events zoals productlanceringen. Je kunt onverwachte gebeurtenissen zoals COVID-19 ook toevoegen als extra regressoren om voorspellingen dynamisch bij te werken. Het expliciet modelleren van zulke events verbetert de nauwkeurigheid en geeft inzicht in de impact van speciale data op onderliggende trends.
Omgaan met ruis en uitschieters
Echte data bevat vaak ruis en uitschieters, wat kan leiden tot vertekende modelvoorspellingen. Prophet heeft robuuste verliesfuncties en niet-parametrische trendcomponenten die de voorspellingen sterker maken tegen uitschieters in de data.
Om de stabiliteit van voorspellingen verder te verbeteren, is het handig om residudiagrammen te analyseren en data voor te bewerken door te winsoriseren of anomalieën te verwijderen. Zo leert het model de werkelijke trends, in plaats van willekeurige ruis.
Wanneer Facebook Prophet gebruiken (en wanneer niet)
Zoals de meeste machinelearningmodellen en -technieken is Prophet geen one-size-fits-alloplossing. Begrijpen waar het in uitblinkt en waar niet, is cruciaal om het effectief te gebruiken.
Sterke punten en ideale scenario’s
Prophet is vooral effectief wanneer:
De eenvoud maakt het toegankelijk voor gebruikers met beperkte statistische expertise, terwijl de interpreteerbaarheid analisten en data scientists helpt om resultaten effectief te communiceren aan niet-technische stakeholders.
Beperkingen en valkuilen
Prophet is mogelijk minder geschikt in de volgende scenario’s:
Een gouden regel bij het gebruik van Prophet, of elk voorspelmodel, is om het niet blindelings te adopteren. Zonder goede validatie kunnen modellen gemakkelijk te zelfverzekerde of misleidende voorspellingen produceren, zoals ook te zien is in diverse communitydiscussies en spraakmakende voorspelmissers.
Werken met Prophet in Python
Stap 1: Libraries importeren
Laad eerst alle vereiste Python-packages:
pandasvoor datamanipulatieprophetom het voorspelmodel te bouwenmatplotlibvoor visualisatiesklearn.metrics– om MAPE, de foutmaat, te berekenenStap 2: Dataset laden
Vervolgens lezen we ons CSV-bestand in met historische goudfuturesprijzen. Hier is een link naar de Kaggle-dataset die ik gebruik.
Stap 3: Data opschonen
Nu moeten we de data opschonen. Dat betekent dat we:
Komma’s uit numerieke kolommen verwijderen en ze omzetten naar floats.
De kolom
Dateconverteren van stringformaat naar datetime.Dit zorgt ervoor dat Prophet datums correct kan begrijpen en ordenen.
Stap 4: Sorteren op datum
We zetten de data in chronologische volgorde. Dit is een belangrijke stap die makkelijk gemist wordt.
Stap 5: Data voorbereiden voor Prophet
We moeten de data ook voorbereiden voor Prophet, dat verwacht dat de invoerkolommen als volgt heten:
ds→ datestampy→ waarde om te voorspellen (hier deClose-prijs)Stap 6: Opsplitsen in train- en testsets
We splitsen de data nu op in een trainings- en testversie.
Stap 7: Het Prophet-model fitten
Train Prophet op de historische data met zowel dagelijkse als jaarlijkse seizoenscomponenten ingeschakeld.
Stap 8: Toekomstige waarden voorspellen
We voorspellen voor evenveel dagen als in de testset.
De voorspelling bevat kolommen zoals
yhat(voorspeld),yhat_lowerenyhat_upper.Stap 9: Voorspellingen uitlijnen met werkelijkheden
Voeg werkelijke slotkoersen samen met modelvoorspellingen op overeenkomende datums om ze direct te vergelijken.
Stap 10: MAPE berekenen
We meten nu hoe nauwkeurig de voorspelling is. Als er geen overlap in datums is, krijg je een waarschuwing in plaats van een crash.
Hier is de mean absolute percentage error (MAPE): 5,83%
Stap 11: De voorspelling plotten
We visualiseren de voorspelling, betrouwbaarheidsintervallen en de werkelijke historie.
Stap 12: Seizoenscomponenten plotten
Het is nuttig om te laten zien hoe trend, dagelijkse en jaarlijkse seizoenspatronen bijdragen aan de voorspelling.
Stap 13: Voorspellingssamples bekijken
Geef de laatste voorspelde waarden en hun onzekerheidsmarges weer.
Voorbeeld van voorspelde waarden:
Valideren en testen van Facebook Prophet
Validatiemethodologie
Tijdreeks-crossvalidatie is vereist om realistische voorspelscenario’s te simuleren. Het is belangrijk om de modelprestatie te evalueren op meerdere, opeenvolgende validatiesets. Dat helpt niet alleen om lookahead bias te vermijden, maar biedt ook generaliseerbaarheid naar toekomstige, ongeziene data.
Enkele standaard evaluatiematen zijn:
Vergelijkende analyse
Vergeleken met ARIMA of LSTM is Prophet goed in:
Toch kan Prophet minder presteren in scenario’s met sterk niet-lineaire patronen of datasets met zwakke seizoensinvloeden.
Praktische toepassingen en beperkingen
Praktijkcases
Prophet is breed toegepast in verschillende sectoren voor use-cases zoals:
Ondanks de voordelen zijn er momenten geweest waarop historische patronen faalden door onverwachte verstoringen, zoals tijdens de pandemie.
Schaalbaarheidsbeperkingen
Prophet kan matig grote datasets aan, wat passend is voor de meeste zakelijke en operationele voorspeltaken. Het gebruik met extreem grote datasets of hoogfrequente tijdreeksen is echter rekenintensief vanwege het onderliggende Bayesiaanse modelleringskader. Om dit te verlichten, wordt aangeraden om meerdere tijdreeksen parallel te voorspellen. Een andere praktische aanpak is het aggregeren of downsamplen van data. Dat verlaagt het geheugen- en rekentijdverbruik zonder waardevolle temporele patronen te verliezen.
Belangrijkste beperkingen
Prophet gaat uit van één doelvariabele en modelleert de trend met stukgewijs lineaire of logistische groeicurves. Zulke aannames beperken de flexibiliteit voor multivariate of problemen waar de trend niet domineert. Daarom is het nodig om domeinkennis toe te voegen aan Prophet’s voorspellingen, samen met externe validatie om betrouwbaarheid te waarborgen.
Mislukkingen en kritiek in de praktijk
Spraakmakende voorspelmissers, zoals de ineenstorting van de huizenmarktvoorspellingen bij Zillow, benadrukken de risico’s van overmatige afhankelijkheid van geautomatiseerde voorspelsoftware. Te veel vertrouwen op modeluitvoer zonder menselijke review kan tot kostbare fouten leiden. Daarom wordt aangeraden om grondige validatie en scenarioplanning uit te voeren bij het interpreteren van voorspelresultaten.
Aarzel niet om elk model en elke trend te bevragen. Stimuleer een cultuur die kritisch denken bevordert en teams in staat stelt de status quo uit te dagen. Ik heb zulke teams consequent robuuste voorspeloplossingen zien bouwen.
Tot slot raad ik sterk aan om een "vertrouwen maar verifiëren"-mentaliteit aan te nemen en een extra laag van je domeinkennis toe te voegen om de resultaten op gezond verstand te toetsen.
Toekomstige ontwikkelrichting
Prophet blijft zich ontwikkelen door onderzoek en communitybijdragen. Doorlopende verbeteringen in Prophet omvatten:
Actief onderzoek richt zich op het integreren van nieuwe statistische methoden en het verbeteren van prestaties in complexe, hoogfrequente datasets.
Conclusie
Facebook Prophet is een krachtig hulpmiddel voor tijdreeksvoorspelling, met automatisering, interpreteerbaarheid en flexibiliteit. Het presteert goed voor verkennende voorspellingen in het bedrijfsleven en andere domeinen met sterke seizoensinvloeden of speciale gebeurtenissen.
Maar dat maakt het nog geen plug-and-playoplossing. Om betrouwbare voorspellingen te doen, moeten gebruikers zorgen voor zorgvuldige validatie, parameterafstelling en domeinkennis. Door de automatisering van Prophet te balanceren met doordacht menselijk oordeel kunnen analisten bruikbare inzichten ontwikkelen en veelvoorkomende valkuilen vermijden.
Voor hands-on learning vind je hier onze cursussen en skill tracks: