Ana içeriğe geç

Facebook Prophet: Zaman Serisi Tahminine Modern Bir Yaklaşım

Facebook Prophet’in eğilimleri, mevsimselliği ve özel olayları nasıl modellediğini anlayın; doğru ve yorumlanabilir tahminler üretin.
· 10 dk. oku

Yapay Zeka ile Keşfedin

Şirketler, ürün satışlarını tahmin etmek veya talep dalgalanmasını değerlendirmek gibi stratejik kararlar almak için gelecekteki eğilimleri öngörmeye dayanır. Etkili tahmin yapmanın bir yolu zaman serisi tahminidir. Zaman serisi tahmininin temel ilkelerinden biri, gelecekteki sonuçları öngörmek için geçmiş veri değerlerine dayanmasıdır. Bu da veriye dikkat etmeyi gerektirir; çünkü pratikte veriler gürültülü olabilir veya eksik olabilir, dolayısıyla tahmin etmesi zordur.

Zaman serisi tahmini için birçok araç mevcutken, Facebook Prophet doğrusal olmayan eğilimler ve mevsimsellikten, tatiller, pazarlama kampanyaları veya trafik sıçramaları gibi özel olayların etkisine kadar uzanan gerçek dünya karmaşıklıklarıyla başa çıkmak üzere özel olarak tasarlanmıştır.  Zaman serisi tahminine tamamen yabancıysanız, Python ile Zaman Serisi Analizi kursumuzu ve/veya R ile Tahminleme kursumuzu öneririm.

Facebook Prophet Nedir?

Prophet, Facebook’un Çekirdek Veri Bilimi ekibi tarafından geliştirilen açık kaynaklı bir tahmin kütüphanesidir. Hem Python hem de R için mevcuttur. Veri analistleri ve veri bilimcilerin bunu kullanmayı sevmesinin başlıca nedenlerinden biri, geleneksel tahmin yöntemlerindeki birçok günlük adımı otomatikleştirmesidir. Bu esneklik sayesinde, kullanıcıların yorumlanabilir ve iyi tahminleri hızla üretmelerine yardımcı olur.

Facebook Prophet’in Çekirdek Modellemesi

Facebook Prophet’in modelleme yaklaşımı yapılandırılmış ama esnektir. Bir zaman serisini ayrıştırır ve dört temel bileşene böler: eğilim, mevsimsellik, tatiller ve hata. Üçüncü bileşen olan tatiller, çok standart değildir. Klasik ve STL ayrıştırma üç parçayı belirtir: eğilim, mevsimsellik ve hata.

Eğilimlerin, mevsimselliğin ve tatillerin nihai tahmine nasıl katkıda bulunduğunu netleştirerek ayrıştırma, bilgili kararlar almaya çalışırken modelin mantığını doğrulamaya yardımcı olur.

Zaman serisinin ayrıştırılması

Prophet, zaman serisi y(t)'yi şu şekilde ifade eden bir toplamsal model kullanır:

Facebook Prophet zaman serisi ayrıştırma denklemi

Burada, 

  • Eğilim (g(t)) uzun vadeli büyüme veya düşüş içindir.

  • Mevsimsellik (s(t)) haftalık, aylık veya yıllık dalgalanmalar gibi yinelenen kalıpları içerir.

  • Tatil etkileri (h(t)), Black Friday veya ulusal tatiller gibi düzensiz ama öngörülebilir olayları hesaba katar.

  • Hata (et), diğer bileşenlerle açıklanamayan artık gürültüdür.

Yalnızca hangi faktörlerin tahminleri yönlendirdiğini göstererek yorumlanabilirlik sağlamakla kalmaz, aynı zamanda mevsimsellik tespiti ve eksik değerlerin işlenmesi gibi zaman serisi tahmin sürecinin çoğunu da otomatikleştirir.

Bu karmaşık ön işleme işlemlerini ele alarak Prophet, geleneksel istatistiksel yöntemlerde sıklıkla gereken kapsamlı istatistiksel uzmanlık gereksinimini azaltır. Örneğin ARIMA, durağanlık varsayımlarının sağlanmasını gerektirir ve harici faktörleri resmi olarak dikkate almaz; oysa Prophet mevsimsellik ve tatil etkilerini açıkça modeller, bu nedenle iş tahminleri için daha kolay kabul edilir.

Eğilim bileşeni belirtimi

Prophet'in iki eğilim modeli vardır:

  1. Lojistik büyüme modeli, bir zaman serisi maksimum kapasitede doygunluğa ulaştığında, örneğin yeni bir uygulamanın kullanıcı benimsemesinde olduğu gibi, kullanışlıdır.
  2. Parçalı doğrusal model, eğilimi değişim noktaları olan segmentlere böler; bu da büyümedeki ani değişimleri modellemeyi kolaylaştırır.

Mevsimsellik modelleme

Mevsimsellik, zaman serisi verilerinde yumuşak periyodik fonksiyonlara izin veren bir Fourier serisi kullanılarak modellenir. İki ana mevsimsel davranış biçimi vardır:

  • Toplamsal mevsimsellik, mevsimsel değişimler zaman içinde büyüklük olarak tutarlı kaldığında gereklidir.
  • Çarpımsal mevsimsellik, mevsimsel dalgalanmaların eğilimle birlikte arttığı, örneğin satış hacminin genel pazar büyümesiyle yükseldiği durumlarda uygundur.

Ayrıca, kullanıcılar benzersiz, alana özgü kalıpları temsil etmek için özel mevsimsellikler de tanımlayabilir; ör. üç aylık kampanyalar.

Tatil ve etkinlik entegrasyonu

Prophet, önceden tanımlanmış tatilleri ve isteğe bağlı etkinlik listelerini modele dahil etme olanağı da sunar. Bu, iş döngülerini, kültürel tatilleri veya ürün lansmanları gibi tek seferlik etkinlikleri modellemek açısından özellikle avantajlıdır. COVID-19 gibi beklenmedik olaylar da ek bağlayıcılar (regresörler) olarak eklenebilir ve tahminler dinamik biçimde güncellenebilir. Bu tür olayların açıkça modellenmesi, doğruluğu artırır ve özel tarihlerinin temel eğilimler üzerindeki etkisine dair içgörüler sağlar.

Gürültü ve aykırı değerlerle başa çıkma

Gerçek dünya verileri sıklıkla gürültü ve aykırı değerler içerir; bu da çarpıtılmış model tahminlerine yol açabilir. Prophet, verideki aykırı değerlere karşı tahmini daha dayanıklı kılan sağlam kayıp fonksiyonlarına ve parametrik olmayan eğilim bileşenlerine sahiptir.

Tahmin kararlılığını daha da iyileştirmek için artık (residual) grafiklerini analiz etmek ve veriyi winsorizasyon veya anomali giderme ile ön işlemek faydalıdır. Bu adımlar, modelin rastgele gürültü yerine gerçek eğilimleri öğrenmesini sağlar.

Facebook Prophet Ne Zaman Kullanılmalı (ve Ne Zaman Kullanılmamalı)

Çoğu makine öğrenmesi modeli ve tekniğinde olduğu gibi, Prophet her duruma uyan tek çözüm değildir. Nerede başarılı olduğunu ve nerede olmadığını anlamak, onu etkili şekilde kullanmanın anahtarıdır.

Güçlü yönler ve ideal senaryolar

Prophet özellikle şu durumlarda etkilidir:

  • Verilerde belirgin günlük, haftalık veya yıllık mevsimsellik olduğunda.
  • Veri setleri eksik olduğunda ve eksik değerler ile aykırı değerlerin otomatik işlenmesine ihtiyaç duyulduğunda.
  • Kullanıcıların hızlı keşif analizi ve ilk model geliştirmesine ihtiyaç duyduğunda.

Basitliği, istatistiksel uzmanlığı sınırlı kullanıcılar için erişilebilir olmasını sağlar; yorumlanabilirliği ise analistlerin ve veri bilimcilerin sonuçları teknik olmayan paydaşlara etkili biçimde aktarmasına yardımcı olur.

Sınırlamalar ve olası tuzaklar

Prophet aşağıdaki senaryolarda daha az uygun olabilir:

  • Düzensizliği yüksek veya mevsimselliği olmayan, düzenli periyodik kalıpların bulunmadığı verilerde.
  • Eğilimlerin öngörülemez olduğu uzun vadeli tahminlerde.
  • Doğrusal olmayan eğilimlerin parçalı doğrusal veya lojistik modellerle yakalanamadığı durumlarda.

Prophet veya herhangi bir tahmin modelini kullanırken altın kural, onu körü körüne benimsemekten kaçınmaktır. Doğru doğrulama olmadan, modeller kolaylıkla aşırı güvenli veya yanıltıcı tahminler üretebilir; bu durum, topluluk tartışmalarında ve yüksek profilli tahmin hatalarında da görülmüştür.

Python ile Prophet Kullanımı

Adım 1: Kütüphaneleri içe aktarın

Önce gerekli tüm Python paketlerini yükleyin:

  • pandas veri işleme için

  • prophet tahmin modelini kurmak için

  • matplotlib görselleştirme için

  • sklearn.metrics – hata ölçütü olan MAPE'i hesaplamak için

import pandas as pd
from prophet import Prophet
import matplotlib.pyplot as plt
from sklearn.metrics import mean_absolute_percentage_error

Adım 2:  Veri setini yükleyin

Sonraki adımda, geçmiş altın vadeli işlem fiyatlarını içeren CSV dosyamızı okuyoruz. Burada kullandığım Kaggle veri setinin bir bağlantısı var.

file_path = "future-gc00-daily-prices.csv"
gold_ts = pd.read_csv(file_path)

Adım 3: Veriyi temizleyin

Şimdi veriyi temizlememiz gerekiyor. Bu şu anlama gelir:

  • Sayısal sütunlardaki virgülleri kaldırın ve bunları float'a dönüştürün.

  • Date sütununu metin biçiminden datetime'a dönüştürün.

Bu, Prophet'in tarihleri doğru şekilde anlamasını ve sıralamasını sağlar.

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")

Adım 4: Veriyi tarihe göre sıralayın

Verileri kronolojik sıraya göre düzenliyoruz. Bu, gözden kaçabilecek önemli bir adımdır.

gold_ts = gold_ts.sort_values("Date")

Adım 5: Prophet için veriyi hazırlayın

Prophet'in beklediği giriş sütun adlarına göre veriyi de hazırlamamız gerekir:

  • ds → tarih damgası

  • y → tahmin edilecek değer (burada Close fiyatı)

gold_ts = gold_ts[["Date", "Close"]].rename(columns={"Date": "ds", "Close": "y"})

Adım 6: Eğitim ve test kümelerine ayırın

Şimdi veriyi eğitim ve test sürümlerine ayırıyoruz. 

  • Verinin çoğunu eğitim için ayırın.
  • Modelin doğruluğunu test etmek için son 180 satırı (veya daha azsa %10) ayırın.
test_size = min(180, len(gold_ts) // 10)
train = gold_ts.iloc[:-test_size]
test = gold_ts.iloc[-test_size:]

Adım 7: Prophet modelini eğitin

Günlük ve yıllık mevsimsel bileşenler etkinleştirilmiş şekilde Prophet'i geçmiş veriler üzerinde eğitin.

model = Prophet(daily_seasonality=True, yearly_seasonality=True)
model.fit(train)

Adım 8: Gelecek değerleri tahmin edin

Test kümesindeki gün sayısı kadar tahmin yapıyoruz.

Tahmin; yhat (öngörülen), yhat_lower ve yhat_upper gibi sütunları içerir.

future = model.make_future_dataframe(periods=test_size)
forecast = model.predict(future)

Adım 9: Tahminleri gerçeklerle hizalayın

Doğrudan karşılaştırabilmek için eşleşen tarihlerde gerçek kapanış fiyatlarını model tahminleriyle birleştirin.

merged = pd.merge(test, forecast[["ds", "yhat"]], on="ds", how="inner")

Adım 10: MAPE'i hesaplayın

Şimdi tahminin ne kadar doğru olduğunu ölçüyoruz. Tarihlerde örtüşme yoksa, çökmeden uyarır.

if merged.empty:
    print("No overlapping dates between forecast and test set.")
else:
    mape = mean_absolute_percentage_error(merged["y"], merged["yhat"]) * 100
    print(f"Mean Absolute Percentage Error (MAPE): {mape:.2f}%")

Burada ortalama mutlak yüzde hata (MAPE): %5,83

MAPE denklemi

Adım 11: Tahmini görselleştirin

Tahmini, güven aralıklarını ve gerçek geçmişi görselleştiriyoruz.

fig1 = model.plot(forecast)
plt.title("Gold Futures (GC00) - Close Price Forecast")
plt.xlabel("Date")
plt.ylabel("Close Price")
plt.show()

Facebook Prophet tahmin sonucu

Adım 12: Mevsimsel bileşenleri çizin

Eğilim, günlük ve yıllık mevsimsellik kalıplarının tahmine nasıl katkı sağladığını göstermek faydalıdır.

fig2 = model.plot_components(forecast)
plt.show()

Facebook Prophet mevsimsel ayrıştırma

Adım 13: Tahmin örneklerini gözden geçirin

Son birkaç öngörülen değeri ve belirsizlik aralıklarını gösterin.

print(forecast[["ds", "yhat", "yhat_lower", "yhat_upper"]].tail(10))

Örnek tahmin değerleri:

             ds         yhat   yhat_lower   yhat_upper
3714 2023-11-09  1834.568081  1743.127873  1922.791205
3715 2023-11-10  1833.323500  1749.265678  1937.246093
3716 2023-11-11  1832.818196  1740.941278  1921.772611
3717 2023-11-12  1832.370884  1745.285047  1925.012684
3718 2023-11-13  1832.644350  1736.792708  1919.057042
3719 2023-11-14  1832.017761  1736.229502  1929.786669
3720 2023-11-15  1831.650906  1743.190077  1924.851936
3721 2023-11-16  1831.566521  1738.181184  1933.026740
3722 2023-11-17  1830.427713  1736.038529  1919.505155
3723 2023-11-18  1830.029816  1737.022754  1922.118728

Facebook Prophet'in Doğrulanması ve Testi

Doğrulama metodolojisi

Gerçek dünyadaki tahmin senaryolarını simüle etmek için zaman serisi çapraz doğrulaması gereklidir. Model performansını birden fazla, ardışık doğrulama kümesinde değerlendirmek önemlidir. Bu yalnızca ileriye bakış yanlılığını önlemeye yardımcı olmakla kalmaz, aynı zamanda gelecekte görülmemiş verilere genellenebilirlik sağlar.

Standart değerlendirme ölçütlerinden bazıları şunlardır:

  • Ortalama mutlak hata (MAE), hataların yönünü dikkate almadan büyüklüğünün ortalamasını ölçer.
  • Ortalama mutlak yüzde hata (MAPE), ortalama mutlak yüzde farkını ölçer. Farklı ölçekler arasında kolay yorumlanır. Python örneğimizde de buna baktık.

Karşılaştırmalı analiz

ARIMA veya LSTM ile karşılaştırıldığında Prophet şunlarda iyidir:

  • Düzensiz mevsimsellik ve tatil etkilerini ele alma
  • Eksik verilere, aykırı değerlere ve iş düzensizliklerine karşı dayanıklılık sergileme

Bununla birlikte, Prophet çok yüksek doğrusal olmayan kalıplar içeren veya mevsimselliğin zayıf olduğu veri setlerinde yetersiz performans gösterebilir. 

Pratik Uygulamalar ve Sınırlamalar

Gerçek dünya vaka çalışmaları

Prophet, aşağıdaki kullanım durumları için farklı sektörlerde yaygın olarak benimsenmiştir:

  • Perakende satış tahmini, talep ölçümü ve envanter yönetimi
  • Kullanıcı etkileşimini anlamak için web trafiği tahmini
  • Arz ve tüketimi verimli biçimde dengelemek için enerji talebi tahmini.

Faydalarına rağmen, pandemi sırasında yaşandığı gibi beklenmedik kesintiler nedeniyle tarihsel kalıpların boşa düştüğü durumlar olmuştur. 

Ölçeklenebilirlik kısıtları

Prophet, çoğu iş ve operasyonel tahmin görevi için uygun olan orta büyüklükte veri setlerini işleyebilir. Ancak, son derece büyük veri setleri veya yüksek frekanslı zaman serileri ile kullanımı, altta yatan Bayesçi modelleme çerçevesi nedeniyle hesaplama açısından maliyetlidir. Bunu hafifletmek için birden çok zaman serisini paralel olarak tahmin etmek önerilir. Diğer pratik bir yaklaşım da veriyi toplamak veya aşağı örneklemektir. Bu, değerli zamansal kalıpları kaybetmeden bellek ve çalışma süresi maliyetlerini azaltır.

Temel sınırlamalar

Prophet tek bir hedef değişken varsayar ve eğilimini parçalı doğrusal veya lojistik büyüme eğrileriyle modeller. Bu tür varsayımlar, çok değişkenli veya eğilim tarafından domine edilmeyen problemlerde esnekliğini sınırlayabilir. Bu nedenle, kullanıcıların güvenilirliği sağlamak için Prophet'in tahminlerine alan bilgisini eklemesi ve harici doğrulama yapması gerekir.

Gerçek dünya başarısızlıkları ve eleştiriler

Zillow konut piyasası çöküşü gibi yüksek profilli tahmin hataları, otomatik tahmin yazılımlarına aşırı güvenmenin risklerini vurgular. Model çıktısına herhangi bir insan incelemesi olmadan fazla güvenmek, maliyetli hatalara yol açabilir. Bu nedenle, tahmin sonuçlarını yorumlarken kapsamlı doğrulama ve senaryo planlaması yapılması tavsiye edilir.

Her modeli ve eğilimi sorgulamaktan çekinmeyin. Eleştirel düşünmeyi teşvik eden ve ekiplerin mevcut durumu sorgulamasına olanak tanıyan bir kültürü besleyin. Bu tür ekiplerin sürekli olarak sağlam tahmin çözümleri geliştirdiğine tanık oldum. 

Son olarak, "güven ama doğrula" yaklaşımını benimsemenizi ve sonuçlar üzerinde sağduyu kontrolü yapmak için alan bilginizden bir katman daha eklemenizi şiddetle öneririm. 

Gelecek Gelişim Yönü

Prophet, araştırma ve topluluk katkılarıyla gelişmeye devam ediyor. Prophet’teki devam eden iyileştirmeler şunları içerir:

  • Çok değişkenli (multivariate) destek
  • Büyük veri setleri için geliştirilmiş ölçeklenebilirlik
  • Topluluk odaklı uzantılar

Aktif araştırmalar, yeni istatistiksel yöntemlerin entegrasyonunu ve karmaşık, yüksek frekanslı veri setlerinde performansın iyileştirilmesini içerir.

Sonuç

Facebook Prophet, otomasyon, yorumlanabilirlik ve esneklik sunan güçlü bir zaman serisi tahmin aracıdır. Güçlü mevsimsellik veya özel olaylara sahip iş ve diğer alanlarda keşif amaçlı tahminleme için iyi performans gösterir.

Ancak bu, tak-çalıştır bir çözüm olduğu anlamına gelmez. Güvenilir tahminler yapmak için kullanıcıların özenli doğrulama, parametre ayarı ve alan bilgisi sağlaması gerekir. Prophet’in otomasyonunu dikkatli insan yargısıyla dengeleyerek analistler uygulanabilir içgörüler geliştirebilir ve yaygın tuzaklardan kaçınabilir.

Uygulamalı öğrenim için, kurslarımıza ve beceri yollarımıza göz atın:

Vidhi Chugh

Yazar

Vidhi Chugh

Veri bilimi, ürün ve mühendisliğin kesişiminde çalışarak ölçeklenebilir makine öğrenimi sistemleri geliştiren bir Yapay Zeka Stratejisti ve Etik Uzmanıyım. Dünyadaki "En İyi 200 İş ve Teknoloji Yenilikçisinden" biri olarak listelenmiş bulunuyorum; makine öğrenimini demokratikleştirmek ve bu dönüşümün parçası olabilmeleri için herkes adına jargonu sadeleştirmek misyonuyla çalışıyorum.

SSS

Facebook Prophet ne için kullanılır?

Facebook Prophet, satışlar, talep veya web trafiği gibi verilerdeki eğilimleri, mevsimselliği ve olay etkilerini tahmin etmeye yardımcı olan zaman serisi tahmini için kullanılır.

Prophet tatilleri ve özel etkinlikleri nasıl işler?

Prophet, modele önceden tanımlanmış veya özel etkinlikler eklemeye izin verir; bu da zaman serisindeki düzensiz sıçrama veya düşüşleri hesaba katar.

Prophet'i iş tahminlerinde popüler kılan nedir?

Prophet otomatik, yorumlanabilir ve eksik veriler ile aykırı değerlere karşı dayanıklıdır; bu da onu hızlı ve güvenilir tahminler için ideal kılar.

Facebook Prophet ne zaman kullanılmamalıdır?

Prophet, yüksek oynaklığa sahip veya mevsimselliği olmayan verilerde ya da eğilimlerin fazlasıyla öngörülemez olduğu durumlarda kullanılmaktan kaçınılabilir.

Prophet’in ARIMA’ya göre başlıca avantajları nelerdir?

ARIMA'nın aksine Prophet katı durağanlık şartı aramaz, eksik verileri işler ve değişim noktalarını otomatik olarak tespit eder.

Konular

İlgili