Ok, di artikel sebelumnya kita sudah membahas dan membuat MLP (Multi Layer Perceptron) sampai tahap mengetesnya. Di kesempatan ini seperti yang sudah di janjikan sebelumnya, kita akan mencoba mengimplementasikan teknik keren ini ke contoh kasus dunia nyata dan membandingkannya dengan metode lain yang sangat sederhana.
Kita akan mencoba memprediksi suhu udara 1 jam kedepan (nowcasting) berdasarkan parameter cuaca saat ini (present weather) untuk wilayah Palu. Well, kurang tepat sebenarnya kalau saya bilang wilayah Palu karena data yang kita punya dan kita pakai adalah data dari stasiun meteorologi Mutiara Palu (pengukuran. Wilayah palu sangat luas and it's ridiculous kalau kita berasumsi seantero kota Palu suhunya sama).
Metode persistensi yang menjadi metode pembanding di sini prinsipnya sama seperti namanya 'suhu 1 jam kedepan sama dengan suhu sekarang'. Sehingga menghitung error dari metode ini hanya dengan mengurangi suhu sekarang dengan suhu 1 jam kedepannya. FYI, error yang akan kita hitung adalah RMSE (Root Mean Square Error).
Metode persistensi yang menjadi metode pembanding di sini prinsipnya sama seperti namanya 'suhu 1 jam kedepan sama dengan suhu sekarang'. Sehingga menghitung error dari metode ini hanya dengan mengurangi suhu sekarang dengan suhu 1 jam kedepannya. FYI, error yang akan kita hitung adalah RMSE (Root Mean Square Error).
Struktur jaringan ANN yang kita gunakan ini didapatkan dari trial and error, setelah mencoba berbagai struktur kelihatannya jaringan seperti ini yang lebih stabil dan kecil errornya.
Seperti gambar header dari artikel ini, kita mengambil 5 parameter, yaitu: Kecepatan angin (wind speed), tekanan udara QFF (pressure), suhu bola kering (dry bulb), kelembapan relatif (RH), dan suhu bola basah (wet bulb) yang lalu di teruskan ke 2 hidden layer dengan masin-masing 5 neuron per layer. Pada layer terakhir, output dari fungsi sigmoid (fungsi aktivasi yang kita gunakan) kita gunakan untuk mencari prediksi dry bulb dengan regresi linear berganda.
Yang membuat ANN kita kali ini berbeda dan lebih advance daripada ANN di pembahasan sebelumnya selain kita punya 2 hidden layer, di sini kita benar-benar melakukan prediksi bersarkan jaringan neural network yang sudah kita training. Selain itu, dalam menormalisasi data test (data untuk prediksi sebenarnya), kita memakai rumus yang sama dengan normalisasi data input training, hanya saja rata-rata dan standar deviasi yang kita pakai berasal dari data training. Formula dari normalisasi data sudah kita bahas sebelumnya di sini.
Kita memakai data observasi dari stasiun meteorologi Mutiara Palu, yaitu data bulan Januari dan Februari 2015. Dari data 2 bulan itu, data bulan Januari dan Februari minus 4 hari (tanggal 25 - 28) kita jadikan data training dan sisanya kita jadikan data test.
Yang membuat ANN kita kali ini berbeda dan lebih advance daripada ANN di pembahasan sebelumnya selain kita punya 2 hidden layer, di sini kita benar-benar melakukan prediksi bersarkan jaringan neural network yang sudah kita training. Selain itu, dalam menormalisasi data test (data untuk prediksi sebenarnya), kita memakai rumus yang sama dengan normalisasi data input training, hanya saja rata-rata dan standar deviasi yang kita pakai berasal dari data training. Formula dari normalisasi data sudah kita bahas sebelumnya di sini.
Kita memakai data observasi dari stasiun meteorologi Mutiara Palu, yaitu data bulan Januari dan Februari 2015. Dari data 2 bulan itu, data bulan Januari dan Februari minus 4 hari (tanggal 25 - 28) kita jadikan data training dan sisanya kita jadikan data test.
Reminder, data training kita gunakan untuk melatih ANN kita dan data test untuk prediksi sebenarnya dan untuk mengetahui akurasi dari ANN kita terhadap data luar. Script dari ANN ini bisa di dapatkan di sini, untuk data training ambil di sini, dan data test di sini.
Kita jalankan scriptnya dan setting tanggal 25 Februari 2015 sebagai data test, hasilnya
data prediksi:
[ 25.99344826 26.5912571 28.13657951 30.79493523 32.43818283
31.24039268 29.2573719 29.51423836 27.65539551 27.8849144
27.4777565 27.12623024 27.28603554 27.25389481 25.023386
26.40401268 25.08811951 24.82951164 24.5446434 24.10881424
24.11081696 24.06035805]
data sebenarnya:
[ 26.4 27.2 29.2 31.8 31.8 30.6 30.8 28.8 28.6 28.2 27.6 26.8
26.8 25. 25.4 25. 24.8 24.8 24.2 24.2 24. 23.4]
error terhadap data training 0.822570201582
error yang sebenarnya 0.841689526467
error metode persistensi 1.0242513896
data prediksi:
[ 26.25442505 27.52705574 31.04621887 32.3229332 32.26769638
32.17666245 30.25072479 29.35257339 29.86028671 29.39032936
28.04170609 27.43281746 27.26920128 26.7162571 26.98358917
27.19584656 26.59253693 25.31702805 25.26041222 24.36617851
24.40892029 24.15975952]
data sebenarnya:
[ 27. 29.4 31.8 33. 33.2 31.2 30.4 30.8 29.8 28.6 27.8 27.6
27. 26.6 26.2 25.8 25.6 25.2 25. 24.8 24.2 24.4]
error terhadap data training 0.821367971413
error yang sebenarnya 0.790569686561
error metode persistensi 1.05313385146
Tanggal 27 Februari 2015
data prediksi:
[ 26.92779922 28.46894836 31.73717117 32.89946365 33.32194901
33.41539764 32.71559525 31.6129055 31.34354782 29.38353348
28.34235573 27.84448814 27.83125687 26.95786095 26.98136711
25.99813271 26.2051487 25.95657349 25.68141365 24.84691048
24.38909531 24.02708054]
data sebenarnya:
[ 27.8 30.4 32.3 34.4 34.8 34.2 33.4 33. 30. 29. 28.6 28.2
27.6 27.4 26.6 26.4 26. 25.8 25. 24.6 24.2 23.6]
error terhadap data training 0.82367322988
error yang sebenarnya 0.846428192057
error metode persistensi 1.21093502566
Lalu terakhir tanggal 28 Februari 2015
data prediksi:
[ 25.22750092 28.63218307 31.22886658 32.3142128 32.71134186
32.8468132 32.14598465 30.78730774 29.94753456 28.48755836
27.21724892 26.89863014 26.969347 26.55696297 26.73659515
26.00022507 25.46754265 25.29185677 24.54766464 23.78473282
23.63599205 23.59555817]
data sebenarnya:
[ 27.8 30. 31.6 33. 33.6 33.7 31.8 31. 29.8 28.4 27.9 27.8
27. 26.8 26.2 25.6 25.2 24.6 24. 23.6 23.4 22. ]
error terhadap data training 0.80274001783
error yang sebenarnya 0.854966228677
error metode persistensi 1.16619037897
Terlihat jelas di semua hari, ANN lebih unggul daripada cuma sekedar asumsi sederhana 'suhu nanti akan sama dengan suhu sekarang'.
Walaupun begitu, hasil ini belum cukup memuaskan. Kita mengharapkan error dari ANN setidaknya RMSEnya paling besar 0.5. Untuk mengecilkan error, terlepas dari rancangan ANN, kita perlu data training yang lebih banyak lagi agar pola cuaca pada daerah yang ingin kita prediksi bisa tercover semua. Selain itu, data yang kita ambil juga harus akurat sebab 'pola cuaca' yang ingin kita analisis tidak akan bisa di analisis oleh ANN kalau data inputnya tidak menggambarkan sama sekali 'pola cuaca' yang sebenarnya.
Ya, sangat banyak faktor yang menentukan keakuratan dari ANN kita. Oleh karena itu, mirip dengan pemodelan cuaca, ANN ini juga sangat sensitif dengan data input (atau initial condition kalau dalam pemodelan cuaca). Akan tetapi, data input ngawur di ANN bisa dibasmi sebagian dengan teknik 'pengusiran outlier' atau 'tercover ngawurnya' oleh data input lain yang sangat banyak (sehingga data yang salah itu menjadi tidak signifikan). Sekian.
referensi:
Application of Artificial Neural Networks for Temperature Forecasting, by Mohsen Hayati, and Zahra Mohebi
https://stats.stackexchange.com/questions/174823/how-to-apply-standardization-normalization-to-train-and-testset-if-prediction-i, di akses pada 1 Juli 2017
Komentar
Posting Komentar