Machine Learning untuk Prediksi Konsumsi Listrik
Model ini memproyeksikan total kWh dan estimasi biaya listrik dengan pipeline yang menjaga kualitas data, sehingga hasil lebih stabil untuk perencanaan 1 sampai 4 minggu ke depan.
- Input CSV per menit, otomatis diubah menjadi agregasi harian.
- Outlier dan data bolong ditangani sebelum prediksi dijalankan.
- Hasil akhir menampilkan total 7 hari, 30 hari, rata-rata harian, dan insight tren.
Identitas
Identitas Proyek
Informasi resmi mengenai proyek, tim, dan pembimbing.
Identitas Proyek
Informasi resmi mengenai proyek, tim, dan pembimbing.
- ULTRA POWER FORECAST
- Prediksi kWh & Biaya Listrik 7 Hari dan 30 Hari (Random Forest)
- Machine Learning for IoT - TA 2025/2026
- Kelompok: Ferly Ardiansyah, Fazan Najmal, Rizky Pandai Nasution
- Dosen/PLP: Memen Akbar S.Si., M.T.; Prengki Ardiansyah, S.Tr.Kom.
Latar Belakang
Masalah dan kebutuhan di balik proyek
Gambaran singkat mengenai alasan dan urgensi prediksi konsumsi listrik.
Masalah dan kebutuhan di balik proyek
Gambaran singkat mengenai alasan dan urgensi prediksi konsumsi listrik.
Latar Belakang
- Konsumsi listrik rumah/kos berubah-ubah karena kebiasaan penghuni dan perangkat elektronik.
- Tagihan sulit diprediksi, sehingga perencanaan anggaran kurang terkontrol dan berpotensi boros.
- Keputusan penghematan sering dilakukan setelah tagihan keluar (terlambat).
Rumusan Masalah
- Bagaimana menerapkan Random Forest Regression pada data historis konsumsi listrik?
- Bagaimana memprediksi total kWh untuk horizon 7 hari dan 30 hari ke depan?
- Bagaimana mengonversi prediksi kWh menjadi estimasi biaya (Rp/kWh)?
- Bagaimana menyajikannya dalam sistem berbasis web (input dan visualisasi)?
Tujuan
Target yang ingin dicapai
Tujuan utama pengembangan model dan aplikasi prediksi.
Target yang ingin dicapai
Tujuan utama pengembangan model dan aplikasi prediksi.
Tujuan
- Membangun model ML untuk memprediksi konsumsi energi listrik rumah tangga (kWh).
- Menghasilkan prediksi total kWh untuk 7 hari dan 30 hari ke depan.
- Menghitung estimasi biaya listrik berdasarkan tarif (Rp/kWh).
- Menyediakan aplikasi web untuk input data dan visualisasi hasil prediksi.
Manfaat
- Monitoring konsumsi listrik lebih proaktif (berbasis data, bukan reaktif).
- Perencanaan anggaran listrik lebih terukur (proyeksi biaya).
- Mendukung keputusan penghematan: jadwal perangkat berdaya tinggi, deteksi tren kenaikan.
- Referensi akademik penerapan RF dan feature engineering time-series.
Dataset
Ringkasan dataset dan kolom yang digunakan
Penjelasan sumber data, kolom mentah, kolom terpakai, dan hasil preprocessing.
Ringkasan dataset dan kolom yang digunakan
Penjelasan sumber data, kolom mentah, kolom terpakai, dan hasil preprocessing.
Dataset apa?
Proyek ini memakai dataset "Household Power Consumption" (Kaggle) yang berisi pengukuran konsumsi listrik rumah tangga dengan sampling per menit, lalu diproses menjadi agregasi harian (kWh).
Kolom dataset (raw)
- Date
- Time
- Global_active_power
- Global_reactive_power
- Voltage
- Global_intensity
- Sub_metering_1
- Sub_metering_2
- Sub_metering_3
Di tahap ETL, kolom Date + Time digabung menjadi datetime.
Apakah semua kolom dipakai?
Tidak. Sesuai batasan proyek, variabel utama untuk prediksi adalah Global_active_power yang diolah menjadi kWh, sementara kolom lain bersifat opsional atau pendukung.
Kolom yang dipakai (inti)
- Global_active_power -> dipakai untuk menghitung energi (kWh) dan menjadi sumber fitur utama.
- Voltage, Global_intensity -> dipakai sebagai statistik pendukung pada level harian (misalnya rata-rata tegangan dan intensitas).
Kolom yang tidak wajib / tidak dipakai penuh pada fitur akhir
- Global_reactive_power, Sub_metering_1/2/3 -> kolom opsional atau pendukung (bukan inti).
Kolom turunan: Hasil agregasi harian
- datetime (gabungan Date + Time).
- energy_kwh_minute = Global_active_power/60.
- daily_kwh (total kWh harian).
- Statistik harian: cnt_minutes, rata-rata/maks daya, rata-rata tegangan, rata-rata intensitas.
- coverage = cnt_minutes/1440 (kelengkapan data harian).
- daily_kwh_adj (kWh harian yang disesuaikan coverage + winsorize/outlier clip).
Kolom turunan: Target (label) training
- y_7d_kwh = total daily_kwh_adj untuk 7 hari ke depan.
- y_30d_kwh = total daily_kwh_adj untuk 30 hari ke depan.
Kolom turunan: Fitur time-series (tabular)
- Fitur kalender: dayofweek, month, day, weekofyear, is_weekend.
- Sin/Cos musiman, tren (diff_1, pct_change_1), lag, rolling stats, dan EWMA.
- Baseline naive: baseline_7d_kwh dan baseline_30d_kwh sebagai pembanding atau evaluasi.
Tahapan Machine Learning
Tahapan Machine Learning yang digunakan
Ringkasan proses dari ETL sampai pembagian data untuk training dan evaluasi.
Tahapan Machine Learning yang digunakan
Ringkasan proses dari ETL sampai pembagian data untuk training dan evaluasi.
1) ETL - Load & Cleaning data mentah
- Membaca dataset, mendeteksi nilai hilang, lalu menggabungkan Date + Time menjadi datetime.
- Mengonversi kolom listrik menjadi numerik (invalid -> NaN) dan menghapus baris yang tidak memiliki datetime atau Global_active_power.
2) EDA - Eksplorasi awal (raw)
- Cek shape, duplikasi, missing-rate, statistik deskriptif, dan histogram Global_active_power (sampling) untuk melihat distribusi dan outlier.
3) Agregasi harian + Coverage-aware Fix
- Konversi ke energi per menit Global_active_power/60, lalu resample harian untuk dapat daily_kwh dan statistik pendukung.
- Hitung coverage = cnt_minutes/1440, drop hari yang coverage rendah, dan scaling daily_kwh_adj agar hari yang datanya belum penuh tidak bias.
- Outlier dikendalikan dengan clip/winsorize pada daily_kwh_adj.
4) EDA - Level harian
- Membandingkan grafik daily_kwh vs daily_kwh_adj, histogram coverage, dan statistik deskriptif untuk memastikan koreksi coverage tidak merusak pola.
5) Target Engineering (label 7 hari & 30 hari)
- Menghitung target total konsumsi masa depan dengan future_sum() dan menyimpannya sebagai y_7d_kwh dan y_30d_kwh.
6) Feature Engineering (fitur tabular untuk RF)
- Membuat fitur kalender + sin/cos musiman + tren + lag + rolling stats + EWMA.
- Menyusun baseline naive baseline_7d_kwh & baseline_30d_kwh untuk pembanding.
7) Split data (Train / Validation / Test)
- Data dibagi urut waktu (time-based split) agar tidak terjadi data leakage.
- Dari notebook Anda (setelah preprocessing & drop NaN akibat fitur lag/rolling), jumlah data modeling = 665 baris (hari).
Detail jumlah data modeling
- Train = 465
- Validation = 100
- Test = 100
Model ML
Model ML yang digunakan + step-by-step + akurasi
Ringkasan model, alur training, dan hasil evaluasi pada test set.
Model ML yang digunakan + step-by-step + akurasi
Ringkasan model, alur training, dan hasil evaluasi pada test set.
Ringkasan model
- Algoritma utama: Random Forest Regression.
- Prediksi dilakukan untuk horizon 7 hari dan 30 hari dalam bentuk total kWh.
Metrik evaluasi yang digunakan
- Evaluasi memakai metrik regresi: MAE, RMSE, MAPE, dan WAPE.
- WAPE lebih stabil untuk target total akumulasi seperti 7 hari/30 hari.
A) Model 30 Hari - Random Forest (Direct Forecasting)
- Input X = kumpulan fitur harian (hasil feature engineering).
- Target y = y_30d_kwh (total kWh 30 hari ke depan).
- Latih RandomForestRegressor pada data train.
- (Opsional) tuning hyperparameter dengan TimeSeriesSplit + RandomizedSearchCV.
- Prediksi pada val dan test; nilai negatif di-clip menjadi 0 agar realistis.
Akurasi / hasil evaluasi (Test set)
- Baseline 30D: WAPE 28.251276% -> akurasi (100 - WAPE) 71.748724%.
- Model RF direct 30D: WAPE 7.522477% -> akurasi 92.477523%.
B) Model 7 Hari - Baseline + Random Forest Residual
- Hitung baseline 7 hari (baseline_7d_kwh) dari data historis (rolling 7 hari).
- Hitung residual: res7 = y7 - baseline_7d.
- Latih RandomForestRegressor untuk memprediksi residual.
- (Opsional) tuning residual model dengan TimeSeriesSplit + RandomizedSearchCV.
- Cari alpha terbaik di validation untuk menggabungkan baseline + koreksi.
- Prediksi final: pred_7d = baseline_7d + alpha x pred_residual.
- Gunakan alpha terbaik untuk prediksi final di test.
Alpha terbaik & akurasi (Test set)
- Alpha terbaik dipilih dari validation untuk meminimalkan error.
- Hasil run pada laporan: best_alpha = 0.65.
- Baseline 7D: WAPE 19.468689% -> akurasi 80.531311%.
- Model 7D (baseline + RF residual, alpha=0.65): WAPE 17.878423% -> akurasi 82.121577%.
Alur Prediksi
Dari CSV sampai estimasi biaya
Setiap langkah dibuat transparan agar kamu paham bagaimana angka prediksi dihasilkan.
Dari CSV sampai estimasi biaya
Setiap langkah dibuat transparan agar kamu paham bagaimana angka prediksi dihasilkan.
Parsing dan Validasi
- CSV dibaca, nilai kosong dibersihkan, dan tipe data dikonversi.
- Kolom wajib dicek untuk mencegah prediksi salah format.
- Datetime digabung agar bisa agregasi harian.
Agregasi Harian
- Data per menit dijumlahkan menjadi kWh harian.
- Coverage dihitung untuk mengukur kelengkapan data.
- Hari yang terlalu bolong otomatis disaring.
Feature Engineering
- Musiman ditangkap lewat fitur kalender dan sin-cos.
- Momentum dan tren dihitung dengan lag dan rolling window.
- Fitur baseline digunakan sebagai jangkar prediksi 7 hari.
Prediksi dan Insight
- RF 30 hari memberi prediksi total konsumsi 1 bulan.
- RF residual mengoreksi baseline 7 hari agar lebih adaptif.
- Hasil dihitung ke biaya dan dibandingkan dengan data terbaru.