Tutorial Time Series Forecasting: Prophet, NeuralProphet, dan LSTM

# Peramalan Deret Waktu dengan Prophet, NeuralProphet, dan LSTM ## Daftar Isi 1. [Pendahuluan](#pendahuluan) 2. [Prasyarat](#prasyarat) 3. [Dasar-Dasar Deret Waktu](#dasar-dasar-deret-waktu) 4. [Per...

By Ruby Abdullah · · tutorial
Time SeriesForecastingProphetNeuralProphetLSTMPython

Peramalan Deret Waktu dengan Prophet, NeuralProphet, dan LSTM

Daftar Isi

  • Pendahuluan
  • Prasyarat
  • Dasar-Dasar Deret Waktu
  • Peramalan dengan Prophet
  • NeuralProphet: Peramalan Berbasis Jaringan Saraf
  • LSTM dengan PyTorch
  • Deteksi Anomali pada Deret Waktu
  • Metrik Evaluasi
  • Peramalan Multi-Langkah
  • Perbandingan Model
  • Praktik Terbaik
  • Kesimpulan

  • Pendahuluan

    Peramalan deret waktu (time series forecasting) merupakan salah satu penerapan ilmu data yang paling berdampak di dunia industri. Mulai dari memprediksi harga saham, konsumsi energi, hingga meramalkan permintaan produk dan beban server, kemampuan untuk mengantisipasi nilai masa depan berdasarkan pola historis sangatlah berharga.

    Tutorial ini membahas tiga pendekatan andal untuk peramalan deret waktu: Facebook Prophet untuk dekomposisi aditif yang kokoh, NeuralProphet untuk peramalan berbasis jaringan saraf dengan autoregresi, dan LSTM (Long Short-Term Memory) yang dibangun dengan PyTorch untuk menangkap dependensi sekuensial yang kompleks.

    Di akhir tutorial ini, Anda akan mampu membangun, mengevaluasi, dan membandingkan model peramalan berkualitas produksi menggunakan ketiga framework tersebut.


    Prasyarat

    • Python 3.9+
    • Pemahaman dasar statistika (rata-rata, variansi, korelasi)
    • Familiaritas dengan pandas dan matplotlib

    Instalasi paket yang diperlukan:

    pip install prophet neuralprophet torch pandas numpy matplotlib scikit-learn
    


    Dasar-Dasar Deret Waktu

    Deret waktu adalah urutan titik data yang diindeks berdasarkan urutan waktu. Sebelum membangun model apa pun, Anda harus memahami komponen-komponen utama yang menyusun sinyal deret waktu.

    Komponen Deret Waktu

    import pandas as pd
    

    import numpy as np

    import matplotlib.pyplot as plt

    Membuat deret waktu sintetis dengan komponen yang diketahui

    np.random.seed(42)

    dates = pd.daterange(start="2020-01-01", periods=730, freq="D")

    tren = np.linspace(50, 150, 730)

    musiman = 20 np.sin(2 np.pi np.arange(730) / 365.25)

    noise = np.random.normal(0, 5, 730)

    y = tren + musiman + noise

    df = pd.DataFrame({"ds": dates, "y": y})

    fig, axes = plt.subplots(4, 1, figsize=(14, 10), sharex=True)

    axes[0].plot(dates, y, color="steelblue")

    axes[0].settitle("Deret Waktu Teramati")

    axes[1].plot(dates, tren, color="darkorange")

    axes[1].settitle("Komponen Tren")

    axes[2].plot(dates, musiman, color="green")

    axes[2].settitle("Komponen Musiman")

    axes[3].plot(dates, noise, color="red", alpha=0.6)

    axes[3].settitle("Noise / Residu")

    plt.tightlayout()

    plt.savefig("dekomposisideretwaktu.png", dpi=150)

    plt.show()

    Stasioneritas

    Deret waktu yang stasioner memiliki properti statistik yang konstan sepanjang waktu. Banyak metode peramalan yang mengasumsikan atau mendapat manfaat dari stasioneritas. Gunakan uji Augmented Dickey-Fuller (ADF) untuk memeriksa:

    from statsmodels.tsa.stattools import adfuller
    
    

    hasil = adfuller(df["y"].values)

    print(f"Statistik ADF: {hasil[0]:.4f}")

    print(f"p-value: {hasil[1]:.4f}")

    if hasil[1] < 0.05:

    print("Deret bersifat stasioner (tolak hipotesis nol).")

    else:

    print("Deret bersifat non-stasioner. Pertimbangkan differencing.")

    Pembagian Data Latih-Uji untuk Deret Waktu

    Jangan pernah menggunakan pembagian acak untuk deret waktu. Selalu bagi secara kronologis:

    tanggalbatas = "2021-07-01"
    

    datalatih = df[df["ds"] < tanggalbatas].copy()

    datauji = df[df["ds"] >= tanggalbatas].copy()

    print(f"Sampel pelatihan: {len(datalatih)}")

    print(f"Sampel pengujian: {len(datauji)}")

    Artikel Terkait

    Tutorial Reflex: Membangun Web App Full-Stack dengan Python Murni

    Reflex: Membangun Aplikasi Web Full-Stack dengan Python Murni Reflex memungkinkan Anda membangun aplikasi web lengkap — ...

    Tutorial ColBERT & RAGatouille: Late-Interaction Retrieval untuk RAG

    ColBERT & RAGatouille: Retrieval Late-Interaction untuk RAG yang Lebih Baik Sebagian besar sistem RAG mengandalkan dense...

    Tutorial SGLang: Serving LLM Cepat dan Pemrograman Structured Generation

    SGLang: Serving LLM yang Cepat dan Model Pemrograman untuk Generasi Terstruktur SGLang adalah dua hal dalam satu paket: ...

    Tutorial TRL: Post-Training LLM dengan SFT, DPO, dan Reward Modeling

    Post-Training LLM dengan TRL: SFT, Reward Modeling, dan DPO Setelah sebuah base language model selesai dipretraining, mo...