Oleh:
2) Fungsi Analisis
Pentaho juga dapat digunakan untuk melakukan analisis data. Data yang kita
miliki dapat ditampilkan dengan menarik dalam berbagai bentuk, seperti
pivot tabel, dashboard yang terintegrasi, portal, dan workflow.
4) Data Mining
Kita juga bisa melakukan data mining. Jika Anda tahu Weka, maka fungsi
data mining di Pentaho adalah gabungan dari Weka. Weka itu sendiri adalah
sebuah kumpulan algoritma dari machine learning yang diterapkan untuk
memining data. Algoritma tersebut dikombinasikan dengan teknologi
OLAP (Online Analytical Processing). Tool Data Mining ini digunakan
untuk menganalisis data yang sifatnya historical sehingga bisa dibuat suatu
model yang sifatnya prediktif.
5) Data Integration
Data Integration di Pentaho dikenal dengan Kettle dan atau Spoon. Kettle
dan Spoon ini adalah tool ETL yang memiliki tampilan antarmuka untuk
mendesain job yang sifatnya fleksibel untuk pemrosesan data.
JDK adalah sebuah paket aplikasi yang berisi JVM (Java Virtual Machine)
+ JRE (Java Runtime Environment) + berbagai aplikasi untuk proses
pembuatan kode program Java. Salah satu tambahan perintah yang ada di
JDK adalah perintah javac yang dipakai untuk memproses kode program
Java menjadi byte code. Jadi karena dalam aplikasi pentaho kita perlu
menggunakan aplikasi java termasuk membuat program atau memasukan
script pada dokumen pentaho, kita perlu menginstal JRE dan JDK terlebih
dahulu.
JRE dan JDK dapat diunduh melalui website oracle dapa link dibawah
https://www.oracle.com/java/ kemudian mendownload JRE dan JDK versi
terbaru yang disesuaikan dengan sistem operasi pada komputer masing-
masing. Proses instalasinya ditunjukan sebagai berikut.
2) Xampp
Xampp adalah sebuah software komputer yang sistem penamaannya
diambil dari akronim kata X, Apache, MySQL (dulu) / MariaDB (sekarang),
PHP, dan Perl. X yang terdapat pada awal kata berasal dari istilah cross
platform sebagai simbol bahwa aplikasi ini bisa dijalankan di empat sistem
operasi berbeda, seperti OS Linux, OS Windows, Mac OS, dan juga Solaris.
Program aplikasi XAMPP berfungsi sebagai server lokal (localhost).
Aplikasi ini dalam prakteknya banyak digunakan untuk menguji kinerja
fitur ataupun menampilkan konten yang ada didalam website kepada orang
lain tanpa harus terkoneksi dengan internet, atau istilahnya website offline.
XAMPP biasanya banyak digunakan oleh para mahasiswa maupun pelajar
untuk melihat hasil desain website sebelum akhirnya dibuat online
menggunakan web hosting yang biasa dijual dipasaran. Namun, mengingat
fungsinya sebagai server lokal, XAMPP juga dapat digunakan untuk
keperluan lain seperti untuk membuat localhost dan menghubungkan
database dari proses ETL di Pentaho.
3) SQLyog
SQLyog adalah aplikasi client MySQL yang sangat populer digunakan di
Indonesia. Aplikasi ini memiliki banyak fitur yang memudahkan pengguna
melakukan administrasi maupun melakukan pengolahan data MySQL.
SQLyog adalah salah satu tool yang dapat digunakan untuk administrasi
untuk database MySQL. Jika kita biasanya menggunakan PhpMyAdmin
yang include di dalam aplikasi Xampp untuk melakukan administrasi
database, SQLyog adalah aplikasi alternatif untuk melakukan proses
administrasi database MySQL. Banyak fitur yang disediakan oleh SQLyog
yang tidak disediakan oleh PhpMyAdmin maupun tool administrasi
database lainnya seperti MySQLQueryBrowser. Dengan SQLyog kita dapat
membuat Store Prosedure, Function maupun Trigger dengan mudah.
Ruang
Kerja
Panel
Kiri
Panel hasil
Eksekusi
2) Step
Step adalah komponen/modul kittle yang mengerjakan tugas tertentu pada
suatu job atau transformation
3) Hop
Hop adalah penghubung yang menghubungkan 2 step baik sebagai penentu
aliran/flow dari job ataupun penghantar data di transformation.
Hop
Step
Step
5) Transformations
Transformation adalah komponen dari pentaho yang melakukan proses
aliran data sebenarnya. Semua proses pengambilan data (estract), perubahan
(transform) dan penyimpanan (load) dilakukan disini.
Setelah kita mengenal beberapa fungsi penting diatas, maka baru selanjutnya kita
akan memulai untuk membuat sebuah project. Ada beberapa project yang telah saya
buat yang akan saya jelaskan selanjutnya sebagai berikut.
1) Membuat Project Job Sederhana
Dari project diatas, saya mengambil data input (estract) berupa data excel yaitu
file target penjualan.xls. Dataset dari file ini masih memiliki tipe yang berbeda
sehingga tipe data dataset ini harus disamakan terlebih dahulu sebelum
dilakukan proses pengolahan data lebih lanjut. Perubahan tipe data (transform)
ini dilakukan dengan merubahnya seperti pada gambar berikut.
Gambar 14. Menu Dataset input (kiri) dan Menu Rename Value /Proses
Transform (kanan)
Pada gambar diatas kita dapat melihat tipe data dari dataset (kiri) yang
sebelumnya masih tidak seragam akan dijadikan seragam menjadi tipe integer.
Dari gambar 14 kita juga dapat melihat bahwa kolom informasi yang
digunakan seperti kode cabang dan kode produk dihilangkan. Hasil dari proses
pada project ini adalah untuk mengubah mengambil data input dan melakukan
perubahan yang dibutuhkan pada data. Adapun bagaimana cara kita
menyimpan (load) data yang telah dirubah kedalam database dan bagaimana
cara menghasilkan output berupa file dataset baru akan dijelaskan pada project
selanjutnya.
4) Menghubungkan ke Database
Data yang sudah dilakukan perubahan dari file excel aslinya selanjutnya dapat
kita lihat pada SQLyog ketika program dalam pentaho telah berjalan (running)
dan terhubung kedalam server. Table data akan tersimpan (load) pada nama
database yang dihubungkan sebagai tempat menyimpan tadi. Pada kasus saya,
saya merubah tipe data dari data pemeriksaaan diabetes untuk kemudian
disimpan pada database db_diabetes. Dengan terkoneksinya dengan server,
maka setiap orang yang terkoneksi dengan server akan dapat mengakses data
sehingga dapat dilakukan pengolahan data lebih lanjut.
Pada db_diabetes kik tombol (+) untuk melihat list lainnya (tray down). Pada
bagian table data klik kanan kemudian sorot bagian backup/export, pilih export
table data as dan pilih .csv seperti pada gambar 18.
(a)
(b)
(c)
(d)
Dari struktur neuron pada otak manusia, dan proses kerja yang dijelaskan
di atas, maka konsep dasar pembangunan neural network buatan (Artificial Neural
Network) terbentuk. Ide mendasar dari Artificial Neural Network (ANN) adalah
mengadopsi mekanisme berpikir sebuah sistem atau aplikasi yang menyerupai otak
manusia, baik untuk pemrosesan berbagai sinyal elemen yang diterima, toleransi
terhadap kesalahan/error, dan juga parallel processing.
Karakteristik dari ANN dilihat dari pola hubungan antar neuron, metode
penentuan bobot dari tiap koneksi, dan fungsi aktivasinya. Gambar di atas
menjelaskan struktur ANN secara mendasar, yang dalam kenyataannya tidak hanya
sederhana seperti itu.
Setiap neuron pada MLP saling berhubungan yang ditandai dengan tanda
panah pada gambar diatas. Tiap koneksi memiliki weight yang nantinya nilai dari
tiap weight akan berbeda-beda. Hidden layer dan output layer memiliki tambahan
“input” yang biasa disebut dengan bias.
2) Backward Pass
Error yang kita dapat pada forward pass akan digunakan untuk mengupdate
setiap weight dan bias dengan learning rate tertentu.
Neural network diatas sudah saya train dan nanti kita akan melakukan forward
pass terhadap weight dan bias yang sudah didapat pada saat training. Method
forwardPass dibawah ini sangat simple sekali, operasi dot akan dilakukan pada
setiap elemen pada input dan tiap weight yang terhubung dengan input dan
ditambahkan dengan bias. Hasil dari operasi ini akan dimasukkan ke dalam
activation function. Untuk weight dan bias yang akan kita coba, nilai keduanya
sudah didapatkan pada proses training yang telah saya lakukan sebelumnya
(dalam kasus ini diinputkan: f(x) = 3x + 2 ≈ f(x) = 2.99999928x + 1.99999976).
Pada percobaan kali ini kita akan melakukan perdiksi nilai dari 7, 8, 9 dan 10.
Output yang dihasilkan seharusnya adalah 23, 26, 29, 32 dan hasil prediksi
adalah 22.99999472, 25.999994, 28.99999328 dan 31.99999256. Jika dilihat
dari hasil prediksi, masih terdapat error tapi dengan nilai yang sangat kecil.
Neural network diatas sudah menggunakan data train dan nanti saya akan
melakukan forward pass terhadap weight dan bias yang sudah didapat pada saat
training. Method forwardPass yang kita pakai di part sebelumnya akan
dimodifikasi sedikit dengan menambahkan argument baru untuk memilih
activation function.
Pada percobaan non-linear regression kali ini kita akan melakukan perdiksi
nilai dari -2, 0 dan 2. Output yang dihasilkan seharusnya adalah 3, 1, 3 dan
hasil prediksi adalah 2.96598907, 0.98707188 dan 3.00669343. Masih ada
sedikit error tapi paling tidak hasil diatas menunjukkan bahwa MLP dapat
melakukan regresi terhadap fungsi non-linear dengan cukup baik.
3) Fungsi Non Linear MLP dengan Keras dan Tensor Flow
Pada kasus sebelumnya kita menggunakan forward pass dengan
menggimputkan data training yang sudah diperoleh sebelumnya. Sebelum
lebih jauh, kita perlu mengingat, dalam melakukan training pada neural
network, kita melakukan proses pada diagram dibawah ini secara terus menerus
hingga loss atau error yang didapatkan memiliki nilai yang relatif kecil.
Selain tensorflow, ada lagi satu package yang akan saya gunakan yaitu Keras.
Sebenarnya TensorFlow sudah cukup jelas cara penggunaannya, tapi kadang
dalam riset kita sering sekali untuk mencoba arsitektur lain, mencari optimizer
yang paling cepat dan bagus, tweaking hyperparameter, dan lain sebagainya.
Dengan menggunakan Keras kita bisa melakukan semua itu dengan relatif
lebih cepat dari pada ‘pure’ TensorFlow. Karena jika dibandingkan dengan
Keras, TensorFlow serasa lebih “low level” meskipun sudah ada tf.layer yang
baru. Jadi Keras adalah wrapper dari TensorFlow untuk lebih memudahkan kita
lagi. Selain TensorFlow, Keras juga dapat mensupport Theano dan CNTK
sebagai backend. Dalam kode pemrograman dibawah, saya sebelumya sudah
menginstall TensorFlow dan Keras terlebih dahulu. Kita akan menyelesaikan
fungsi yang sama dengan bagian sebelumnya, yaitu fungsi: f(x) =√2𝑥𝑥 2 + 1
Sebelumnya kita akan membuat data dengan menggunakan numpy. Input data
nya dari rentang -20 sampai 20 dengan step 0.25. Kita juga buat targetnya
sesuai dengan persamaan diatas. Setelah data ada, kita bisa mulai membuat
modelnya. Arsitektur yang akan kita coba adalah :
• 1 Input Node
• 8 node pada Hidden Layer 1 dengan ReLU activation
• 4 node pada Hidden Layer 2 dengan ReLU activation
• 1 Output node dengan Linear activation
Disini kita juga menentukan optimizer yang akan kita gunakan, disini kita akan
menggunakan SGD dan Mean Squared Error (MSE) sebagai loss functionnya.
Sebelum kita bisa melakukan training, kita harus meng-”compile” model kita
terlebih dahulu. Setelah model siap, kita bisa mulai melakukan training dengan
data yang kita sudah buat diawal. Untuk melakukan training, kita harus
memanggil method fit. Kita akan lakukan ini hingga 100 epoch dan
menyimpan semua parameter (weights dan bias) kedalam sebuah file. Epoch,
learning rate, batch_size, dll ini adalah hyperparameter yang bisa kita tentukan.
Sedangkan nilai hyperparameter yang ideal, sampai saat ini masih belum ada
riset yang bisa memecahkan masalah tersebut. Sebenarnya ada metode seperti
Grid Search contohnya untuk mencari hyperparameter, tapi tetap saja tidak
terjamin kualitasnya. Setelah 100 epoch, saya mendapatkan MSE sebesar 0.05
untuk training data. Pada tahap ini kita akan lakukan prediksi terhadap angka
lain diluar training data yaitu 26 dan akan membandingkan hasil prediksi
seluruh training data dengan target. Kita bisa gunakan matplotlib untuk
membuat dua grafik dan melihat perbandingannya. Line merah untuk target
dan line biru untuk hasil prediksi. Untuk hasil prediksi dari 26, saya dapatkan
36.64408 sedangkan kalau dihitung seharusnya 36.783. Masih ada error tapi
tidak terlalu jauh/masih dapat diterima, selain itu grafik prediction dibanding
dengan target untuk semua training menunjukan data sangat identik sekali.
Kode pemrograman dan output ditunjukkan seperti dibawah ini.
4) Deep Learning ANN dengan Input Dataset
Pada bagian sebelum kita sudah mencoba ANN dengan beberapa framework.
Pada kasus kali ini serupa dengan sebelumnya, namun dengan kasus yang lebih
nyata serta menggunakan sumber data dari dataset yang dimasukan ke kode
pemrograman. Data set yang digunakan adalah data pemeriksaan dengan 6
komponen hasil pemeriksaan. AAN digunakan untuk mendiagnosa apakah dari
dari input baru yang akan diberikan, ANN dapat menunjukan data tersebut
mengidap Diabetes atau tidak. Data yang diinputkan berbentuk file .csv.
Langkah pertama kita mengimport semua library yang akan digunakan dalam
model. Lalu kita melakukan upload data. karena data yang kita miliki dalam
format .csv, maka kita menggunakan bantuan library pandas.
Tahapan selanjutnya adalah kita memisahkan data/split data berdasarkan
variabel input dan output. Data yang kita miliki mempunyai variabel input (X)
berupa: number of times pregnant, plasma glucose concentration a 2 hours in
an oral glucose tolerance test, diastolic blood pressure (mm Hg), triceps skin
fold thickness (mm), 2-Hour serum insulin (mu U/ml), Body mass index
(weight in kg/(height in m)^2), Diabetes pedigree function dan Age (years).
Sedangkan variabel output (Y) berupa kelas variabel 1 dan 0.
Selanjutnya kita membagi data menjadi 80% data training dan 20% data
testing.
Pada tahap selanjutnya kita mendefinisikan model. Pada tahap inilah kita
merumuskan struktur ANN. Model dalam Keras didefinisikan sebagai urutan
lapisan. Kita membuat model Sequential dan menambahkan layer satu per satu
sampai kita puas dengan arsitektur jaringan yang dibuat. Hal pertama yang
harus dilakukan adalah memastikan layer input memiliki jumlah fitur input
yang tepat. Ini dapat ditentukan saat membuat layer pertama dengan argumen
input_dim dan mengaturnya ke 8 untuk 8 variabel input.
Selanjutnya kita masuk pada tahapan kompilasi model. Sekarang model sudah
didefinisikan, kita bisa mengkompilasinya. Mengkompilasi model
menggunakan library numerik yang efisien di bawah penutup (yang disebut
backend) seperti Theano atau TensorFlow. Backend secara otomatis memilih
cara terbaik untuk mewakili jaringan untuk pelatihan dan membuat prediksi
untuk berjalan pada perangkat keras Anda, seperti CPU atau GPU atau bahkan
didistribusikan.
Satu epoch terdiri dari satu atau lebih batch, berdasarkan ukuran batch yang
dipilih dan model ini cocok untuk banyak epoch. Batch berfungsi mempercepat
pengubahan bobot. Hal itu karena bobot akan diubah ketika selesai perhitungan
pada setiap batch bukan setiap epoch. Proses pelatihan akan berjalan untuk
sejumlah iterasi tetap melalui dataset yang disebut epochs, yang harus kita
tentukan menggunakan argumen epochs. Kita juga harus mengatur jumlah
baris dataset yang dipertimbangkan sebelum bobot model diperbarui dalam
setiap zaman, yang disebut ukuran batch dan ditetapkan menggunakan
argumen batch_size.
Selanjutnya kita dapat melihat hasil evaluasi model. Pada tahap ini akan diberi
gambaran tentang seberapa baik kita model yang kita buat. Kita melakukan
evaluasi terhadap data testing. Akurasi yang didapatkan adalah 79.89%. artinya
dalam 100 data yang diberikan, model dapat menebak hampir 80% data output
dengan benar.
Terakhir kita dapat menggunakan model untuk memprediksi data baru. Kita
memiliki data baru dan ingin mengaplikasikan model yang telah kita rancang
untuk memprediksi kelas. Misalkan saya menginputkan nilai parameter untuk
masing-masing variabel input: 2, 120, 53, 20, 5, 40.3, 2.3, dan 46. Sebelumnya
kita harus menormalisasi kembali data ini sebelum dimasukkan ke model.
Model akan melakukan prediksi dan output yang dihasilkan adalah kelas 0.
Dari output yang ditunjukkan diatas, kita dapat menyatakan bahwa ANN
melakukan diagnosa terhadap data yang baru diinputkan, bahwa data dengan
hasil tes pemeriksaan tersebut maka disimpulkan data (orang) tersebut tidak
Diabetes dengan tingkat akurasi 79,87%.
Daftar Pustaka
Putra, Jan Wira Gotama. 2019. Pengenalan Pembelajaran Mesin dan Deep Learning
Edisi 1.3. E-Book Online PhD Student in Tokyo Institute of Technology.
Rahimah, Azkiyatu., Juwita, Ratna dan Made Arya Pratiwi. 2013. Petunjuk
Penggunaan Aplikasi Open Source Pentaho. Binus University.