#10 Artificial Neural Network (ANN) — Part 5 (Time Series Forecasting ISPU CO DKI Jakarta menggunakan Keras & Tensorflow)

Muhammad Yunus
6 min readApr 19, 2020

--

Implementasi MLP Backpropagation pada Python menggunakan Keras dengan backend Tensorflow untuk Forecasting data Time Series ISPU CO DKI Jakarta tahun 2018

source [link]

Sebelumnya kita sudah membahas teori dasar MLP Backpropagation disini.

dan menerapkannya pada prediksi gerak Oscillator pada Python tanpan menggunakan framework DL/ML disini.

Sekarang kita akan coba implementasikan MLP Backpropagation pada python dengan menggunakan library Pandas untuk preprocessing data dan Tensorflow dan Keras sebagai framework ML.

Jika kalian belum familiar dengan pandas, bisa dipelajari di tulisan saya tentang Python Data Science : Pandas (part 1–3),

Dan jika kalian juga belum pernah cobain Tensorflow dan Keras, bisa belajar disini dan disini,

Step by Step Guide

Tools & Materials

Sekarang kita persiapkan tools dan materials nya terlebih dahulu,

  • Komputer terintsall Anaconda + Python 3 +Jupyter Notebook, bisa dilihat disini.
  • Install library numpy , matplotlib , pandas , tensorflow

install library python menggunakan Anaconda Prompt,

conda install numpy
conda install matplotlib
conda install pandas
conda install tensorflow
conda install keras
  • Download dataset Time Series ISPU CO DKI Jakarta tahun 2018 disini.

Flow Process Implementasi

Implementasi MLP Backpropagation untuk memprediksi kadar CO ini akan mengikuti flow process berikut, mulai dari tahap preprocessing data untuk aggregasi sampai penggunaan Tensorflow untuk pembuatan Model.

Flow Process untuk membuat model prediksi Kadar CO

Preprocessing Data

  • Buka Jupyter Notebook, buat Notebook baru dengan nama “MLP Backpropagation
  • Simpan 12 file CSV dataset ISPU CO DKI Jakarta tahun 2018 yang telah didownload sebelumnya ke folder lokasi Notebook baru dibuat, sehingga tampak seperti berikut,
Dataset timeseries ISPU DKI Jakarta tahun 2018
  • Import library & Load dataset menggunakan Pandas

dataset disimpan sebagai Dataframe Pandas,

Dataframe dari 12 file CSV Dataset ISPU CO DKI Jakarta tahun 2018
  • Check pada dataset apakah ada data null atau NA ,
  • Convert tanggal menjadi index Data Frame dan plot Series co terhadap tanggaal pisahkan dalam orde bulan,

Sehingga dihasilkan plot data bulanan sebagai berikut,

Ditahap ini kita sudah mempersiapkan dataset untuk selanjutnya kita gunakan dalam proses Training Multi Layer Perceptron Backpropagation.

Arsitektur MLP

Berikut adalah arsitektur MLP yang akan digunakan, terdiri dari 5 neuron pada input layer, 6 neuron pada hidden layer pertama, 6 neuron pada hidden layer kedua, dan 1 neuron pada output layer. Neuron pada hidden layer pertama dan kedua akan menggunakan ReLU Activation Function dan pada output layer menggunakan Linear Activation Function.

Training Model

Ditahap ini kita akan menggunakan preprocessing dataset diatas untuk keperluan training model prediksi kadar CO. Berikut langkah-langkahnya,

  • Pertama kita buat notebook baru, di folder yang sebelumnya digunakan pada tahap Preprocessing Data. Kita beri nama “Tensorflow MLP Backpropagation”,
  • Setelah itu kita load library dan define parameter sebagai berikut,
  • Untuk kebutuhan training model, Dataframe CO_TS akan coba kita split menjadi dua bagian menjadi test data dan training data,
  • Selanjutnya untuk masing-masing dataset timeseries (test & training) akan kita split menjadi pasangan input output, dimana 5 input data mempunyai satu output data.

fungsi split diatas akan membagi tiap 5 data berurutan pada CO_TS_TRAIN_Arr maupun CO_TS_TEST_Arr array sebagai x[i] dan data ke 6 sebagai y[i], ilustrasinya sebagai berikut,

data input :

[1 2 3 4 5 6 7 8 9 dst... ]

hasil split :

|---- x ----| y |
| 1 2 3 4 5 | 6 |
| 2 3 4 5 6 | 7 |
| 3 4 5 6 7 | 8 |
| 4 5 6 7 8 | 9 |
| dst ...

Keras Model

Keras memiliki 2 model utama yang dapat digunakan, diantaranyakeras.model.Sequential dan keras.models.Model (functional API). Pada kesempatan ini kita akan gunakan Sequential.

  • load library yang dibutuhkan, Sequential merupakan model Keras. Dense layer merupakan Neural Network layer yang melakukan proses perhitungan pada input dan menghasilkan output. Adam merupakan algoritma optimization disamping menggunakan classical stochastic gradient descent (SGD), tipe gradient decent yang dapat menghitung gradien dari loss function yang diperlukan untuk menentukan weight baru.

Detail tentang Model Keras dapat dilihat disini, dan varian optimizer yang disupport Keras dapat dilihat disini.

  • Keras secara default akan menggunakan Backend Tensorflow GPU, jika kita tidak ingin menggunakan GPU dalam pemrosesan kedepan, dapat gunakan cara berikut,
  • Sekarang kita define model, optimizer dan loss function yangdigunakan, kita akan gunakan Adam untuk optimizer dan mse (mean square error) untuk loss. Fungsi .add() akan menambahkan layer Dense kedalam model. Layer yang pertama kali ditambahkan harus mendefinisikan input dimension (input neuron). Disamping itu fungsi Dense() memungkinkan kita untuk mendefinisikan Activation Function. Dikasus sekarang kita akan gunakan ReLU Function pada hidden layer 1 dan hidden layer ke 2 dan Linear Function pada output layer.
  • Selanjutnya kita lakukan prosess fitting data train menggunakan fungsi .fit() ,

tunggu sampai proses training data selesai, jika parameter verbose diset 1 pada function .fit() , kita dapat melihat log callback proses training model, dengan nilai loss tiap step nya.

  • Selanjutnya kitalakukan testing pada model yang kita telah buat, dengan menggunakan data x_test untuk memprediksi y_test yang merupakan data ISPU CO DKI Jakarta di bulan Desember 2018,
  • Selanjutnya kita plot data y_prediction berdampingan dengan y_test dengan menggabungkan kedua array tersebut menjadi dataframe dengan bantuan Pandas, dan fungsi .plot() ,

sehingga dihasilkan plot y_prediction dan y_test terhadap waktu (tanggal data, sebagai berikut,

hasil plot time series ISPU CO DKI Jakarta bulan Desember 2018 untuk data test (y_test) dan hasil prediksi (y_prediction)

Dari hasil plot diatas terlihat model dapat memprediksi ISPU CO DKI Jakarta bulan Desember 2018, meskipun tidak tepat sama. Namun demikian model dapat merespon ketika data memiliki kecenderungan turun dan naik. Selanjutnya dapat diterapkan penggunaan LSTM untuk meningkatkan keakurasian prediksi data time series.

Sekian untuk tulisan kali ini selanjutnya akan coba dibahas deployment model menjadi service di backend server dengan bantuan ML Workflow Tool seperti Apache Airflow.

Terimakasih

Sumber :

  1. https://machinelearningmastery.com/how-to-develop-multilayer-perceptron-models-for-time-series-forecasting/
  2. https://keras.io/models/about-keras-models/
  3. https://keras.io/optimizers/
  4. http://www.cets-uii.org/BML/Udara/ISPU/ISPU%20(Indeks%20Standar%20Pencemar%20Udara).htm

--

--

Muhammad Yunus
Muhammad Yunus

Written by Muhammad Yunus

IoT Engineer, Software Developer & Machine Learning Enthusiast

Responses (1)