Curah hujan merupakan salah satu unsur iklim yang memiliki peranan penting dalam berbagai sektor kehidupan, seperti pertanian, pengelolaan sumber daya air, transportasi, dan mitigasi bencana alam. Di Indonesia, yang memiliki karakteristik iklim tropis dengan variabilitas cuaca yang tinggi, informasi prediksi curah hujan yang akurat sangat dibutuhkan untuk mendukung perencanaan dan pengambilan keputusan yang tepat.
Badan Meteorologi, Klimatologi, dan Geofisika (BMKG) sebagai lembaga resmi penyedia data meteorologi di Indonesia telah mengumpulkan data cuaca dan iklim secara berkelanjutan dari berbagai stasiun pengamatan. Data tersebut mencakup informasi curah hujan, suhu udara, kelembapan, tekanan udara, serta parameter meteorologi lainnya yang bersifat deret waktu (time series). Namun, metode prediksi konvensional yang berbasis statistik sering kali mengalami keterbatasan dalam menangkap pola non-linear dan kompleks yang terdapat pada data cuaca.
Seiring dengan perkembangan teknologi komputasi, pendekatan machine learning (ML) menjadi alternatif yang menjanjikan dalam bidang prediksi cuaca. Machine learning mampu mempelajari pola tersembunyi dari data historis dalam jumlah besar dan menghasilkan model prediksi yang adaptif terhadap perubahan pola iklim. Berbagai algoritma ML, seperti Random Forest, Support Vector Machine, hingga model deep learning seperti Long Short-Term Memory (LSTM), telah menunjukkan kinerja yang baik dalam pemodelan data deret waktu, termasuk data curah hujan.
Oleh karena itu, penelitian ini bertujuan untuk menerapkan metode machine learning dalam memprediksi curah hujan dengan memanfaatkan data historis yang bersumber dari BMKG. Melalui proses pra-pemrosesan data, rekayasa fitur, serta evaluasi model yang sistematis, diharapkan diperoleh model prediksi yang memiliki tingkat akurasi yang lebih baik dibandingkan metode tradisional. Hasil penelitian ini diharapkan dapat memberikan kontribusi dalam pengembangan sistem prediksi curah hujan yang lebih akurat dan aplikatif, khususnya untuk mendukung upaya mitigasi bencana dan perencanaan berbasis iklim di Indonesia.
Sumber dan Karakteristik Data BMKG
BMKG menyediakan data klimatologi dan meteorologi seperti:
-
Curah hujan harian/bulanan (mm)
-
Suhu udara (min, max, rata-rata)
-
Kelembapan
-
Tekanan udara
-
Kecepatan & arah angin
-
Radiasi matahari
-
Data waktu (tanggal, bulan, musim)
Karakteristik penting:
-
Time series
-
Sering memiliki missing values
-
Bersifat musiman (musim hujan & kemarau)
-
Non-linear dan dipengaruhi banyak variabel
Formulasi Masalah ML
Prediksi curah hujan dapat diformulasikan sebagai:
a. Regresi
-
Output: nilai curah hujan (mm)
-
Contoh: “Berapa mm hujan besok?”
b. Klasifikasi
-
Output: kategori hujan
(Tidak hujan / Ringan / Sedang / Lebat) -
Cocok untuk peringatan dini bencana
Pra-pemrosesan Data
Tahap krusial dalam proyek ML klimatologi:
-
Data Cleaning
-
Mengatasi missing value (interpolasi, mean, forward fill)
-
Menghapus outlier ekstrem
-
-
Feature Engineering
-
Lag features (hujan H-1, H-2, H-7)
-
Moving average
-
Encoding bulan/musim
-
Indeks iklim (jika ada)
-
-
Normalisasi
-
Min-Max Scaling atau StandardScaler
-
Algoritma Machine Learning yang Umum Digunakan
a. Model Statistik (Baseline)
-
Linear Regression
-
ARIMA / SARIMA
b. Machine Learning Klasik
-
Random Forest ⭐ (paling populer untuk data cuaca)
-
Gradient Boosting (XGBoost, LightGBM)
-
Support Vector Regression (SVR)
-
K-Nearest Neighbor (KNN)
c. Deep Learning (Time Series)
-
LSTM / GRU ⭐⭐⭐
-
CNN-LSTM hybrid
-
Temporal Convolutional Network (TCN)
Untuk data BMKG jangka panjang, LSTM + fitur lag sering memberikan hasil terbaik.
Skema Pelatihan Model
-
Split data berbasis waktu
(tidak random!)-
Train: 70%
-
Validation: 15%
-
Test: 15%
-
-
Cross-validation khusus time series
(rolling / walk-forward validation)
Evaluasi Model
Untuk regresi:
-
MAE (Mean Absolute Error)
-
RMSE
-
R² Score
Untuk klasifikasi:
-
Accuracy
-
Precision, Recall, F1-score
-
Confusion Matrix
Contoh Arsitektur Sederhana (LSTM)
Input:
[Hujan H-7, H-6, …, H-1,
Suhu, Kelembapan, Angin]
Output:
Curah hujan hari H
Tantangan Utama
-
Data tidak lengkap / tidak konsisten antar stasiun
-
Pola cuaca ekstrem sulit diprediksi
-
Overfitting pada musim tertentu
-
Resolusi spasial terbatas
Aplikasi Nyata
-
Sistem peringatan dini banjir
-
Perencanaan pertanian
-
Manajemen sumber daya air
-
Smart city & climate risk analysis
Tools yang Umum Digunakan
-
Python (pandas, numpy)
-
scikit-learn
-
TensorFlow / PyTorch
-
Matplotlib / Seaborn
-
Jupyter Notebook
Contoh pipeline ML lengkap (dari data BMKG → prediksi)
Berikut contoh pipeline Machine Learning lengkap untuk prediksi curah hujan berbasis data BMKG, dari data mentah sampai evaluasi model. Contoh ini realistis dan sering dipakai untuk riset/skripsi.
1. Alur Pipeline ML (End-to-End)
Data BMKG
↓
Data Cleaning
↓
Feature Engineering (lag, musim)
↓
Train-Test Split (time series)
↓
Model Training
↓
Evaluasi
↓
Prediksi
2. Contoh Struktur Data BMKG
Misal data harian stasiun cuaca:
| tanggal | hujan | suhu | kelembapan | angin |
|---|---|---|---|---|
| 2020-01-01 | 12.5 | 27.1 | 85 | 2.3 |
| 2020-01-02 | 0.0 | 27.8 | 80 | 2.0 |
3. Implementasi Pipeline (Python)
3.1 Import Library
import pandas as pd
import numpy as np
from sklearn.model_selection import TimeSeriesSplit
from sklearn.preprocessing import StandardScaler
from sklearn.ensemble import RandomForestRegressor
from sklearn.metrics import mean_absolute_error, mean_squared_error
import matplotlib.pyplot as plt
3.2 Load Data BMKG
df = pd.read_csv(“data_bmkg.csv”)
df[‘tanggal’] = pd.to_datetime(df[‘tanggal’])
df = df.sort_values(‘tanggal’)
3.3 Data Cleaning
# Tangani missing value
df = df.interpolate(method=’time’)
# Pastikan tidak ada nilai negatif pada hujan
df[‘hujan’] = df[‘hujan’].clip(lower=0)
3.4 Feature Engineering (Kunci Akurasi)
a. Fitur Lag Curah Hujan
for lag in [1, 3, 7]:
df[f’hujan_lag_{lag}’] = df[‘hujan’].shift(lag)
b. Fitur Musiman
df[‘bulan’] = df[‘tanggal’].dt.month
df[‘hari’] = df[‘tanggal’].dt.day
c. Hapus NaN akibat lag
df = df.dropna()
3.5 Definisi Fitur & Target
X = df.drop(columns=[‘tanggal’, ‘hujan’])
y = df[‘hujan’]
3.6 Train-Test Split (Time Series)
Tidak boleh random split
split_index = int(len(df) * 0.8)
X_train, X_test = X.iloc[:split_index], X.iloc[split_index:]
y_train, y_test = y.iloc[:split_index], y.iloc[split_index:]
3.7 Normalisasi
scaler = StandardScaler()
X_train_scaled = scaler.fit_transform(X_train)
X_test_scaled = scaler.transform(X_test)
3.8 Training Model (Random Forest)
model = RandomForestRegressor(
n_estimators=200,
max_depth=10,
random_state=42
)
model.fit(X_train_scaled, y_train)
3.9 Evaluasi Model
y_pred = model.predict(X_test_scaled)
mae = mean_absolute_error(y_test, y_pred)
rmse = np.sqrt(mean_squared_error(y_test, y_pred))
print(“MAE:”, mae)
print(“RMSE:”, rmse)
3.10 Visualisasi Hasil
plt.figure(figsize=(10,5))
plt.plot(y_test.values, label=’Aktual’)
plt.plot(y_pred, label=’Prediksi’)
plt.legend()
plt.title(“Prediksi Curah Hujan”)
plt.show()
Output Pipeline
Model dapat digunakan untuk:
-
Prediksi hujan harian
-
Simulasi skenario cuaca
-
Sistem peringatan dini
prediksi_besok = model.predict(X_test_scaled[-1].reshape(1, -1))
print(“Prediksi hujan besok (mm):”, prediksi_besok[0])
Pengembangan Lanjutan (Advanced)
Jika ingin level skripsi / jurnal:
-
Ganti model → XGBoost / LSTM
-
Tambah fitur:
-
Moving average hujan
-
Kategori ENSO
-
-
Multi-station (spasial)
-
Bandingkan beberapa model
Versi Deep Learning (Singkat)
Pipeline LSTM:
Scaling → Windowing (H-7) → LSTM → Dense → Output

Penerapan machine learning untuk prediksi curah hujan berbasis data BMKG menunjukkan bahwa pendekatan data-driven mampu menangkap pola cuaca yang kompleks dan bersifat non-linear. Melalui tahapan pipeline yang sistematis—mulai dari pra-pemrosesan data, feature engineering, pemilihan model, hingga evaluasi—model machine learning seperti Random Forest atau LSTM dapat memberikan performa prediksi yang lebih baik dibandingkan metode konvensional, terutama pada data historis jangka panjang.
Meskipun demikian, tantangan seperti kualitas data, ketidakseimbangan kelas hujan, serta kejadian cuaca ekstrem masih menjadi kendala utama yang perlu diperhatikan. Oleh karena itu, pengembangan lanjutan dapat dilakukan dengan menambahkan variabel klimatologi yang lebih lengkap, pendekatan deep learning yang lebih canggih, serta integrasi data spasial antar stasiun BMKG.
Secara keseluruhan, penelitian ini diharapkan dapat menjadi dasar pengembangan sistem prediksi curah hujan yang lebih akurat dan aplikatif, khususnya untuk mendukung pengambilan keputusan di bidang mitigasi bencana, pertanian, dan pengelolaan sumber daya air di Indonesia.
