Di Susun Oleh :
Dany Widiyanto
PEMBIMBING :
Devie Rosa Anamisa, S.Kom., M.Kom.
Menyetujui ,
Dosen Pembimbing,
Mengetahui,
Koordinator Kerja Praktek
i
KATA PENGANTAR
Dany Widiyanto
ii
DAFTAR ISI
iii
1.6.1 Train, Test, Validation Set ....................... 14
vi
BAB I
Pengenalan Data
2
Machine learning dibagi menjadi tiga kategori
besar, yaitu supervised learning, unsupervised
learning, dan reinforcement learning. Pada materi
selanjutnya kita akan membahas beberapa
diantaranya. Untuk pemahaman lebih
lanjut perhatikan gambar berikut yaitu korelasi
antara AI, Machine Learning dan Deep Learning atau
cabang yang mempelajari tiga jenis Machine
Learning diatas .
3
(Gambar 1.1 Hubungan AI, ML dan Deep Learning)
4
dataset. Untuk memperoleh dataset kita bisa
mengekstrasi data dari sumber seperti internet, survei
dan sebagainya. Kita juga dapat membuat dataset
sendiri dari nol tetapi untuk tujuan pembelajaran itu
akan memakan waktu yang cukup lama atau kita bisa
menggunakan dataset yang telah ada . Menemukan
dataset yang tepat adalah salah satu langkah penting
dalam machine learning.
5
1.3 Data Cleaning
Pada tahap pembersihan data ( data cleaning )
merupakan sebuah proses yang perlu dilakukan sebelum
data diproses ke dalam model machine learning. Proses
ini dilakukan untuk meningkatkan kualitas data yang
berpengaruh terhadap produktivitas kerja karena misalkan
ada data yang tidak akurat itu akan berpengaruh buruk
terhadap akurasi dan performa model.
Saat proses data cleaning, kita membuang data dan
informasi yang tidak dibutuhkan. Data yang akurat dan
berkualitas akan berpengaruh baik terhadap proses
pengambilan keputusan.
Dalam proses pembersihan data ada beberapa hal
dasar yang harus diperhatikan yaitu:
1. Konsistensi Format Data
Contoh : Misalkan kita mempunyai dataset
tentang penjualan disitu tertera harga beras adalah
13000 dalam satuan kilogram tetapi disisi lain
mencatat bahwa harga dicantumkan dalam format
13.000 , perbedaan tanda baca “.” akan membuat
penafsiran salah dalam data . Solusinya, format
data harus disamakan dan dibuat konsisten
terlebih dahulu.
2. Skala Data
6
Contoh : Misalkan terdapat variable penelitian
dengan skala data numerik 0 – 100. Maka
pastikan bahwa tidak ada data melebihi nilai 100
atau negatif.
3. Duplikasi Data
Data duplikat dalam jumlah besar perlu dihapus
karena dapat mempengaruhi model machine
learning . Kita harus menggunakan data dengan
nilai unik atau tidak mempunyai duplikasi.
5. Skewness Distribution
Skewness atau ketidakseimbangan distribusi
menyebabkan model akan sering memprediksi
sesuatu yang memiliki prorporsi data yang lebih
banyak. Karena ia lebih sering mempelajari hal
tersebut. Hal tersebut lah yang dinamakan dengan
bias. Untuk mengatasi skewness adalah dengan
menyamakan proporsi kelas mayoritas dengan
kelas minoritas.
7
1.4 Data Processing
Pada tahap ini kita akan mengunggah data dan
menerapkan algoritma machine learning pada sebuah
bahasa pemrogaman yaitu Python . Kita akan
menggunakan sebuah software open source yaitu Google
Colaboratory. Untuk membuka Google Colab, kita dapat
membuka tautan colab.research.google.com.
8
Tensorflow
Keras
Sklearn
Matplotlib
Numpy
Pandas
9
1.5.2 Deteksi Outlier
Dalam statistika outlier nilai yang jauh atau beda
sekali dengan sebagian besar nilai lain dalam
kelompoknya atau disebut nilai pencilan. Outlier dapat
mengacaukan hasil dari model machine learning yang
akan kita buat. Outlier dapat disebabkan oleh kesalahan
dalam pengumpulan data atau nilai tersebut memang unik
dari kumpulan nilai lainnya.
Salah satu cara termudah untuk mengecek apakah
terdapat outlier dalam data kita adalah dengan melakukan
visualisasi.
10
1.5.3 Normalisasi
Normalisasi adalah mengubah nilai-nilai dari sebuah
fitur ke dalam skala yang sama. Normalisasi dapat
membuat kenaikan performa dan stabilitas dari model
machine learning yang kita buat. Salah satu contoh dari
normalisasi adalah min-max scaling di mana nilai-nilai
dipetakan ke dalam skala 0 sampai 1.
Contoh kita mempunyai deskripsi data seperti berikut :
11
(Gambar 1.6 Perbandingan skala data sebelum Normalisasi)
12
Dalam Google Colaboratory tersedia library
MinMaxScaler untuk melakukan normalisasi . Kita
tinggal mengimport library tersebut.
1.5.4 Standarisasi
Standarisasi tidak jauh berbeda dengan
Normalisasi yaitu proses konversi nilai-nilai dari suatu
fitur sehingga nilai-nilai tersebut memiliki skala yang
sama. Tetapi Standarisasi menggunakan sistem Z score di
mana setiap nilai pada sebuah atribut numerik akan
dikurangi dengan rata-rata dan dibagi dengan standar
deviasi dari seluruh nilai pada sebuah kolom atribut.
Rumus untuk menghtung z-score :
𝑛𝑖𝑙𝑎𝑖 − 𝑚𝑒𝑎𝑛
𝑧=
𝑠𝑡𝑎𝑛𝑑𝑎𝑟𝑑 𝑑𝑒𝑣𝑖𝑎𝑠𝑖
13
model. Penting untuk kita memilih rasio yang sesuai
dalam pembagian dataset. Saat rasio training kecil
algoritma ML tidak dapat belajar dengan baik pada data
training. Tetapi, jika alokasi data pada data testing terlalu
kecil, kita tidak bisa mendapatkan estimasi performa
model yang akurat.
14
telah dikurangi data untuk validation. Metode ini baik saat
kita mempunyai data yang besar.
15
(Gambar 1.10 Algoritma K Cross Validation )
16
BAB II
Supervised dan Unsupervised Learning
17
Sekumpulan data yang memiliki label biasanya
digunakan untuk membuat model klasifikasi. Kasus diatas
dapat dibuat model machine learning yaitu klasifikasi
buah. Model machine learning mempelajari pola
berdasarkan atribut dari data buah yang kita miliki.
Kemudian , dari pengalaman belajar tersebut, model
machine learning kita dapat digunakan untuk
memprediksi data baru, dan menentukan apakah data baru
ini termasuk buah dengan label A atau label B.
2.1.1 Klasifikasi
Klasifikasi adalah teknik untuk menentukan kelas
atau kategori berdasarkan atribut yang diberikan.
Klasifikasi yang menghasilkan dua kategori disebut
klasifikasi biner, sedangkan klasifikasi yang
menghasilkan 3 kategori atau lebih disebut multiclass
classification. Penggambaran apel dan pisang diatas
adalah salah satu contoh klasifikasi biner.
Ada beberapa jenis teknik klasifikasi, antara lain:
Logistic Regression
K-nearest neighbors
Naive Bayes
Decision trees
Random forest
Support Vector Machine (SVM)
Neural Networks
18
Dll.
2.1.2 Regresi
Untuk algoritma regresi kita memprediksi hasil
dalam keluaran yang kontinyu berupa fungsi. Jika
terdapat kontinuitas dalam keluaran model ML, maka
dapat dipastikan itu adalah permasalahan regresi.
Misalnya saat kita memprediksi harga apel dalam satuan
kilogram, model kita memprediksi harganya Rp. 30.00
atau Rp. 32.000 padahal harga seharusnya adalah Rp.
31.000. Prediksi dalam regresi linear akan berada
dalam range bilangan numerik tertentu yang mendekati
nilai seharusnya. Inilah yang dimaksud dengan regresi
memberikan keluaran yang kontinyu.
Sedangkan pada masalah klasifikasi, kita
memprediksi hasil dalam keluaran diskrit. Seperti kasus
buah diatas . Apakah buah tergolong label A atau B.
Ada beberapa jenis teknik regresi, antara lain:
Linear Regression
Decision trees
Support Vector Machine (SVM)
Neural Networks
Trees
Dll.
19
2.1.3 Decision Trees
Decision trees atau pohon keputusan adalah salah
satu algoritma supervised learning yang dapat dipakai
untuk masalah klasifikasi dan regresi. Decision trees
mampu dipakai dalam masalah yang kompleks. Decision
trees juga merupakan komponen pembangun utama
algoritma Random Forest, yang merupakan salah satu
algoritma yang cukup kuat saat ini.
Decision trees bisa tergolong klasifikasi maupun
regresi tergantung target prediksinya . Jika memprediksi
sebuah kelas (klasifikasi) atau nilai (regresi) berdasarkan
aturan-aturan yang dibentuk setelah mempelajari data.
Misalnya kita memiliki data berisi informasi
mengenai kondisi cuaca pada hari tertentu. Kita dapat
membuat sebuah keputusan apakah cuaca sekarang cocok
untuk bermain golf atau tidak dengan membuat decision
trees nya.
20
Gambar 2.2 Data cuaca untuk membuat pohon keputusan
21
pendeteksian outlier. Awalnya SVM diperkenalkan
sebagai algoritma training yang bertujuan untuk
memaksimalkan margin antara pola pelatihan dan batas
keputusan (decision boundary).
Tujuan utama dari SVM adalah untuk
menemukan hyperplane terbaik dalam ruang berdimensi-
N (ruang dengan N-jumlah fitur) yang berfungsi sebagai
pemisah yang jelas bagi titik-titik data input.
22
diterapkan dalam kasus regresi atau disebut Support
Vector Regression (SVR).
Support Vector Regression (SVR) menggunakan
prinsip yang sama dengan SVM pada kasus klasifikasi.
Perbedaannya adalah jika pada kasus klasifikasi, SVM
berusaha mencari ‘jalan’ terbesar yang bisa memisahkan
sampel-sampel dari kelas berbeda, maka pada kasus
regresi SVR berusaha mencari jalan yang dapat
menampung sebanyak mungkin sampel di ‘jalan’.
23
2.2 Unsupervised Learning
Unsupervised learning merupakan algoritma
Machine Learning yang digunakan untuk menarik
kesimpulan dari kumpulan data tanpa campur tangan
manusia, berbeda dengan supervised learning di mana
label disediakan bersama dengan data. Dalam algoritma
unsupervised learning hanya diberikan sejumlah data
tanpa label atau output yang benar. Dengan kata lain
dalam algoritma ini tidak ada supervisor atau pengawas
yang membantu dalam menentukan apakah kinerja dan
output yang dihasilkan benar atau salah.
2.2.1 Clustering
Cluster merupakan sebuah kelompok yang
memiliki kemiripan tertentu. Clustering adalah sebuah
metode machine learning unsupervised untuk
mengelompokkan objek-objek yang memiliki kemiripan,
ke dalam sebuah klaster.
Menurut Andriy Burkov dalam buku nya yang
berjudul The Hundred Page Machine Learning Book [3],
clustering atau pengklasteran merupakan sebuah metode
untuk memberi label pada data tanpa campur tangan
manusia. Data yang memiliki kemiripan akan
dikelompokkan, lalu setiap data pada kelompok yang
sama akan diberikan label yang sama. Berbeda dengan
24
model klasifikasi dan regresi di mana setiap data memiliki
label yang ditulis oleh manusia.
Contohnya ketika kita memiliki data penjualan
toko online. Kemudian kita ingin mengembangkan
sebuah model yang bisa mengelompokkan pembeli
produk berdasarkan kemiripan yang dimiliki. Misalnya,
kita ingin mengelompokkan pembeli berdasarkan tempat
mereka berasal untuk mengetahui target market yang
sesuai untuk setiap kelompok.
25
(Gambar 2.7 Ilustrasi clustering konsumen berdasarkan tempat)
26
Keterangan:
N = Jumlah record data
K= Urutan field data
r= 2
µk= Bobot field yang diberikan user
27
Dengan banyaknya atribut, proses pelatihan akan lambat
dan memakan waktu yang lama. Dalam kasus deteksi
objek pada gambar (image recognition) atribut
merupakan jumlah pixel dari gambar tersebut. Jika
sebuah gambar memiliki resolusi 50 x 50 pixel, maka
atribut yang dimiliki terdapat 2500 atribut.
28
tanpa mengurangi informasinya. Contohnya pada sebuah
dataset harga rumah. Pada PCA setiap atribut disebut
sebagai principal component.
PCA menghitung variance dari tiap atribut.
Variance adalah informasi yang dimiliki sebuah atribut.
Pada dataset gaji karyawan, atribut jabatan memiliki
variance atau informasi sebesar 92% dan alamat
karyawan memiliki variance/informasi sebesar 4%. Dari
perhitungan variance dapat disimpulkan bahwa alamat
karyawan tidak memiliki informasi yang cukup signifikan
ketika kita ingin mempercepat pelatihan dari model
machine learning kita.
2. Linear Discriminant Analysis (LDA)
Linear Discriminant Analysis juga merupakan
salah satu teknik dimensionality reduction. Perbedaan
dengan PCA adalah LDA bekerja dengan meminimalkan
varian sementara PCA mencari atribut komponen yang
memiliki varian tertinggi pada masing-masing kelas.
Selain itu LDA membuat kombinasi atribut terbaik yang
dapat memisahkan kelas-kelas pada dataset .
Perbedaan lain yang membedakan LDA dan PCA
adalah PCA merupakan teknik unsupervised karena tidak
menghiraukan label yang terdapat pada data. Sedangkan
LDA merupakan teknik supervised karena
memperhatikan bagaimana kelas-kelas pada data dapat
dipisahkan dengan baik.
29
LDA bertindak dengan memproyeksikan dataset
berdimensi-i ke subruang berdimensi-j, dengan j<i. LDA
membuat sumbu baru menggunakan fitur dari kedua
sumbu (X dan Y), dua kriteria utama yang digunakan
LDA untuk membuat sumbu baru adalah.
1. Meminimalkan variance pada tiap kelas.
2. Memaksimalkan jarak antara rata-rata (mean)
kedua kelas.
30
2.3 Neural Networks
Neural networks akan menjadi algortima yang akan
kita terapkan dalam klasifikasi untuk prediksi
gambar.Oleh karena itu kita bahas tersendiri dalam modul
ini. Neural network terinpirasi dari cara kerja otak
manusia . Terdapat tiga pokok bahasan yaitu Artificial
Neural Network (ANN) , Multi Layer Perceptron (MLP)
dan Convolutional Neural Network (CNN).
2.3.1 Artificial Neural Network
Jaringan Saraf Tiruan atau Artificial Neural
Network (ANN) merupakan algoritma untuk membuat
model machine learning yang terinspirasi dari bagaimana
neuron atau saraf yang terdapat pada otak manusia
bekerja.
31
penjumalahan tersebut digunakan sebagai parameter
activation function yang akhirnya akan menjadi sebuah
output dari neuron itu.
32
Gambar 2.11 Susunan sebuah perceptron
33
ke atas atau ke bawah sehingga dapat lebih
fleksibel dalam meminimalisasi eror.
Hasil penjumlahan disebut weighted sum.
Selanjutanya, weighted sum akan diterapkan pada
activation function atau Non-Linearity Function
yang digunakan untuk memetakan nilai yang
dihasilkan menjadi nilai yang diperlukan,
misalnya antara (0, 1) atau (-1, 1). Fungsi ini
memungkinkan perseptron dapat menyesuaikan
pola untuk data yang non linier.
Setelah semua langkah di atas, akhirnya kita
memperoleh output, yaitu hasil dari perhitungan
sebuah perceptron yang merupakan bilangan
numerik.
Berikut merupakan rumus atau fungsi matematis dari
perceptron .
34
berjalan atau tidak berdasarkan weighted sum dari input
yang diterima . Secara umum terdapat 2 jenis activation
function, Linear dan Non-Linear Activation function.
Jika sebuah perceptron menggunakan sebuah fungsi
linear, maka output yang dihasilkan neuron tersebut
adalah weighted sum dari yaitu penjumlahan input dan
bias.
Ada 3 jenis non-Linear Activation function yang
paling umum yaitu :
35
2. Rectified Linear Unit (ReLU)
Fungsi ReLU bersifat kontinu meski
kemiringannya berubah secara tiba-tiba dan nilai
turunannya bernilai 0 pada z < 0. Tetapi fungsi ini bekerja
dengan sangat baik dan efisien sehingga mempercepat
waktu komputasi. Oleh karena itu ReLU digunakan
sebagai activation function default pada jaringan saraf
tiruan.
3. Softmax Function
Activation function softmax digunakan untuk
masalah multi class classification. Kita tidak boleh
menggunakan activation function sigmoid dan tanh dalam
masalah multi class classification . Mirip dengan fungsi
aktivasi sigmoid, fungsi softmax mengembalikan nilai
peluang dari tiap kelas.
36
2.3.2 Multi Layer Perceptron
37
Kemudian ada yang dinamakan dengan hidden
layer yang merupakan dense layer yang berada di antara
input layer dan output layer .
38
1. Forward Pass
Forward pass (forward propagation) akan
membawa data pada input melewati tiap perceptron pada
hidden layer sampai ke output layer dan menghitung error
yang terjadi.
2. Backward Pass
Kemudian pada Backward Pass error yang kita
dapat pada forward pass akan digunakan untuk
mengupdate setiap weight dan bias dengan learning rate
tertentu.
Kedua proses tersebut akan dilakukan terus
menerus sampai didapatkan nilai weight dan bias yang
dapat memberikan nilai error sekecil mungkin pada
output layer .
39
Convolutional neural networks (CNNs) pertama
kali dikenalkan oleh Yann LeCun pada tahun 1998 dalam
makalahnya “Gradient-Based Learning Applied to
Document Recognition” yang berhasil mengenali karakter
tulisan tangan pada gambar dengan resolusi rendah.
Jika dalam neural network biasa mungkin metode
yang dilakukan adalah mengenali gambar berdasarkan
piksel-piksel yang terdapat pada gambar. Teknik yang
lebih optimal adalah dengan menggunakan convolutional
layer di mana neural network akan mengenali objek
berdasarkan atribut-atribut yang memiliki lebih banyak
informasi daripada mengenali objek berdasarkan piksel-
piksel
40
objek. Filter merupakan sebuah matriks yang berisi
bilangan numerik.
41
(Gambar 2.20 Proses pooling)
42
(Gambar 2.21 Arsitektur CNN)
43
BAB III
Dasar – Dasar Machine Learning
44
penting untuk mengembangkan model berperforma
tinggi. Data harus bebas dari kesalahan dan berisi
informasi yang relevan untuk tugas yang akan kita
lakukan.
3.1.2 Exploratory Data Analysis
Exploratory Data Analysis atau EDA merupakan
penyelidikan awal terhadap data dan melihat bagaimana
kualitas data untuk meminimalkan potensi kesalahan
sebelum data benar – benar di proses . Pada tahap ini
dilakukan investigasi awal pada data untuk menemukan
pola, anomali, menguji hipotesis , memahami distribusi,
frekuensi, hubungan antar variabel, dan memeriksa
asumsi dengan teknik statistik dan visualisasi berupa
grafik.
3.1.3 Preprocessing Data
Data preprocessing adalah tahap pengolahan data
lebih lanjut sehingga siap dipakai dalam pengembangan
model ML. Proses ini mengubah dan mentransformasi
fitur-fitur data ke dalam bentuk yang mudah
diinterpretasikan dan diproses oleh algoritma machine
learning. Termasuk di dalam data preprocessing adalah
proses data cleaning dan data transformation yang berupa
standarisasi,normalisasi dan lain - lain.
Beberapa hal yang bisa dilakukan dalam proses
data cleaning adalah: penanganan missing value, data
yang tidak konsisten, duplikasi data, ketidakseimbangan
data (skewness distribution), dan lain -lain. Sementara
45
beberapa hal yang bisa dilakukan untuk proses
transformasi data adalah: scaling atau merubah skala data
agar sesuai dengan skala tertentu, standarisasi,
normalisasi, koneversi data menjadi variabel kategori,
dan sebagainya. Begitu juga proses train-test split yang
semuanya telah dijelaskan dalam materi sebelumnya
merupakan bagian dari data preprocessing.
46
yang baik adalah model yang tidak hanya bekerja dengan
baik pada data training, tapi juga pada data baru.
Oleh karena itu, sebelum mengirimkan model ke
tahap produksi, kita harus cukup yakin bahwa performa
model akan tetap baik dan tidak menurun saat dihadapkan
dengan data baru. Hal tersebut menggambarkan betapa
pentingnya membagi dataset untuk validation juga.
3.1.6 Deployment
Ketika model dievaluasi, model siap untuk dipakai
pada tahap produksi. Caranya adalah dengan menyimpan
model yang telah dilatih dari tahap preprocessing hingga
pipeline prediksi. Kemudian deploy model tersebut ke
tahap produksi untuk membuat prediksi dengan
memanggil kode yang menjalankan perintah prediksinya.
3.1.7 Monitoring
Model yang telah dipakai dalam tahap produksi
masih harus tetap dimonitor untuk menjaga kualitasnya.
Pada tahap produksi model bisa saja menemukan data
yang tidak dikenali sehingga performa model dapat
menurun.
Jika kita bekerja dengan model machine learning
yang datanya terus berubah, kita perlu melakukan update
pada dataset dan melatih ulang model kita secara regular
atau membuat sistem yang dapat membuat proses update
berjalan secara otomatis.
47
3.2 Overfitting, Underfitting dan Good Fit
Salah satu hal yang paling penting untuk
diperhatikan saat mengembangkan model machine
learning adalah mengecek apakah model
tersebut underfit atau overfit. Sebuah model yang layak
untuk di-deploy di tahap produksi adalah model
yang tidak underfit atau overfit. Sebuah model yang tidak
overfit dan underfit juga disebut dengan model good fit.
Dengan membagi dataset menjadi train set dan
test set. Kemudian kita mengembangkan model hanya
dengan train set. Setelah itu kita lakukan pengujian model
terhadap test set , hasil pengujian dapat memberitahu kita
apakah model kita underfit atau overfit.
Overfitting
Overfitting terjadi ketika model memiliki prediksi
yang terlalu baik pada data training, namun prediksinya
buruk pada data testing. Ketika sebuah model overfit,
model tidak dapat melakukan generalisasi dengan baik
sehingga akan membuat banyak kesalahan dalam
memprediksi data-data baru yang ditemui pada tahap
produksi.
Sebuah model yang overfit akan sangat
menyesuaikan dengan dataset. Sebelum men-
deploy model ke tahap produksi, ada teknik sederhana
untuk mengecek apakah model overfit atau tidak. Pada
model klasifikasi jika akurasi model pada data training
tinggi dan data testing rendah, maka model yang Anda
48
kembangkan overfitting. Pada model jenis regresi, jika
model membuat kesalahan yang tinggi pada data testing
maka model tersebut overfitting.
Beberapa cara untuk menghindari overfitting yaitu:
Memilih model yang lebih sederhana, contohnya
pada data yang memiliki pola linier menggunakan
model regresi linear daripada model decision tree.
Mengurangi dimensi data contohnya dengan
metode PCA.
Menambahkan data untuk pelatihan model jika
memungkinkan.
Underfitting
Underfit terjadi ketika model terlalu sederhana
dan tidak mampu untuk menyesuaikan pola yang terdapat
pada data latih. Sebuah model dapat dikatakan underfit
jika memiliki eror yang tinggi pada data training.
Underfitting menandakan bahwa model tersebut belum
cukup baik dalam mengenali pola yang terdapat pada data
latih
Pada kasus klasifikasi, underfitting ditandai ketika
model memiliki akurasi yang rendah pada data training.
Pada kasus regresi, underfitting terjadi ketika model
memiliki tingkat eror yang tinggi.
49
Cara menghindari underfitting adalah dengan
menyeleksi model atau meningkatkan performa
dengan tuning hyperparameter. Kualitas data juga sangat
berpengaruh. Model machine learning yang sangat
kompleks sekalipun tidak akan memiliki performa yang
baik jika data yang digunakan memiliki kualitas yang
buruk.
Good Fit
Model ML yang baik adalah model good fit atau
model yang tidak underfit maupun overfit. Sebuah model
good fit akan memprediksi lebih baik dan membuat lebih
sedikit kesalahan di tahap produksi. Contoh dari model
yang tidak good fit seperti di bawah.
50
Underfitting Good Fit Overfitting
Tanda - Nilai Error training - Nilai error training - Nilai error training
tinggi sedikit lebih rendah sangat rendah
- Nilai Error training daripada nilai error - Nilai error training
mendekati error test test lebih rendah
- Nilai Bias tinggi daripada error test
- Nilai variance
tinggi
Ilustrasi
Regresi
Ilustrasi
Klasifikasi
51
Ketika mengembangkan model K-Means, mengubah
parameter yaitu mengubah nilai n_cluster merupakan
bentuk dari tuning parameter.
Tuning Parameter adalah istilah yang digunakan
untuk meningkatkan performa model machine learning.
Proses ini mirip dengan proses tweak. Pada model K-
means di atas, jumlah cluster yang kurang atau terlalu
banyak akan menyebabkan hasil pengklasteran kurang
optimal. Tuning parameter dalam hal ini adalah
bereksperimen mencari parameter terbaik untuk model K-
Means tersebut.
Tujuan melakukan tuning pada model yaitu agar
model memiliki tingkat eror yang lebih kecil atau akurasi
yang lebih baik. Berbagai model machine learning
dari library SKLearn memiliki parameter-parameter yang
bisa kita ubah untuk meningkatkan performa dari sebuah
model tersebut. Kita bisa menggunakan salah satu teknik
untuk menguji beberapa parameter sekaligus contohnya
dengan Grid Search.
52
banyak waktu. Jadi, rekayasa fitur itu pastinya penting.
Berikut beberapa teknik dalam rekayasa fitur.
1. Binning
Binning adalah pengelompokan nilai sesuai
dengan batas besaran yang ditentukan. Pada binning, data
dikelompokkan dalam tiap ‘bin’ sesuai dengan nilai yang
cocok dengan bin tersebut. Bin sederhananya adalah
sebuah kategori yang menampung nilai-nilai tertentu.
Ada beberapa jenis binning di mana salah satu
contohnya adalah binning jarak. Pada binning jarak, nilai-
nilai dari sebuah atribut akan dikategorikan ke dalam
jumlah bin tertentu yang memiliki interval sama besar.
Pada gambar dibawah dapat dilihat contoh kumpulan nilai
yang dibagi menjadi 4 bin, 8 bin, dan 16 bin.
53
2. Splitting
Memisahkan sebuah atribut menjadi atribut-
atribut baru juga merupakan salah satu cara yang berguna.
Dengan splitting kita membuat atribut lebih mudah
dipahami oleh model machine learning.. Memisahkan
sebagian data dalam kolom menjadi fitur baru
memberikan keuntungan antara lain meningkatkan
performa model dengan menemukan informasi berharga
dan membuat kita lebih mudah untuk melakukan proses
binning serta grouping.
3. Interaction feature
Dalam model machine learning, kita juga bisa
menciptakan fitur atau atribut baru dari atribut-atribut
yang ada. Mengkombinasikan dua atribut kadang bisa
menjelaskan varian data dengan lebih baik dibanding dua
atribut yang dioperasikan secara terpisah. Membuat
atribut baru melalui interaksi antar atribut disebut sebagai
interaction feature. Sederhananya, interaction feature
adalah perkalian produk antara dua buah fitur. Analoginya
adalah logika AND.
54
BAB IV
Tensorflow
55
sub komputasi secara eksplisit sehingga mudah untuk
menjalankan penghitungan independen secara paralel.
Berikut merupakan skema aliran data TensorFlow
untuk pipeline pelatihan berbentuk subgraph dimulai dari
membaca data masukan, preprocessing, training, dan
checkpointing [5].
56
Skalabilitas komputasi yang tinggi pada kumpulan
data yang sangat besar.
Pembuatan model machine learning yang mudah
dengan beberapa level abstraksi sesuai kebutuhan.
Menyediakan jalur langsung ke produksi, baik itu
pada server, perangkat mobile atau web sehingga
memudahkan kita melakukan pipeline machine
learning hingga ke level produksi.
Kita bisa mempelajari dokumentasi dari TensorFlow
beserta tutorial dasar pada situs resmi nya pada laman
https://www.tensorflow.org/
57
klasifikasi gambar, pemrosesan bahasa alami, pengenalan
suara, dan prediksi time series.
Komponen utama pembangun sebuah neural
networks adalah layer begitu juga dalam Keras. Sebuah
layer pada Keras, sama dengan sebuah layer pada MLP
yang memiliki beberapa perceptron.
4.4 Deployment dan Feedback
Proyek machine learning umumnya terdiri dari
tiga fase berbeda yaitu :
1. Training , kita melakukan proses pelatihan atau
training model dengan data yang kita miliki.
Selain itu, kita juga menguji model dengan data uji
dan melatihnya kembali sampai kita merasa
performanya baik atau sesuai harapan.
2. Saving model , kita menyimpan model menjadi
file yang bisa digunakan di server produksi.
3. Deployment , kita menerapkan model yang telah
disimpan tadi ke server produksi dan siap
membuat prediksi pada data baru
Kita bisa melakukan proses deployment pada tiga
platform yaitu.
1. Mobile dan IoT (internet of things).
2. Cloud menggunakan TensorFlow serving.
3. Browser dan Node.js dengan menggunakan
TensorFlow.js.
58
Selanjutnya kita akan membahas feedback yaitu
komponen penting dalam pemodelan sistem khususnya
dalam siklus pengembangan perangkat lunak. Feedback
loops adalah proses di mana perubahan atau output dari
salah satu bagian sistem dikirimkan kembali ke dalam
sistem sebagai input sehingga mempengaruhi tindakan
atau output sistem selanjutnya.
Ketika model telah di-deploy di tahap produksi,
sangat penting untuk selalu memonitor kinerja model
Anda. Memonitor kinerja atau performa model dapat
dilakukan dengan teknik yang sama saat kita
mengembangkannya. Pada model klasifikasi, hal yang
dimonitor adalah akurasinya terhadap data-data baru yang
ditemui. Sedangkan pada model regresi, tingkat erornya
yang dimonitor.
Kita juga bisa mendapatkan feedback dari sisi
pengguna. Saat dijalankan dengan benar, feedback
loops dapat membantu kita membuat model menjadi lebih
baik (feedback positif). Tetapi, feedback loops juga bisa
berujung pada konsekuensi negatif yang tidak diinginkan
seperti bias, atau pengukuran performa model yang tidak
akurat .
59
waktu.Untuk mengatasi masalah ini, ada 2 teknik dasar
untuk menjaga agar model selalu bisa belajar dengan data
baru yaitu manual retraining dan continuous learning.
1. Manual Retraining
Teknik manual retraining melakukan ulang
proses pelatihan model dari awal. Data baru yang
dijumpai di tahap produksi akan digabung dengan data
lama. Model dilatih ulang dari awal sekali menggunakan
data yang telah campur.
Proses ini akan sangat memakan waktu, namun
manual retraining memungkinan kita menemukan model-
model baru atau atribut-atribut baru yang menghasilkan
performa lebih baik.
2. Continuous Learning
Teknik continuous learning dilakukan dengan
menjaga model kita up-to-date dengan menggunakan
sistem terotomasi dalam pelatihan ulang model. Alur dari
continuous learning yaitu:
1. Menyimpan data-data baru yang ditemui pada
tahap produksi..
2. Pengujian akurasi model dilakukan ketika data
baru yang dikumpulkan dirasa sudah cukup.
3. Jika akurasi model menurun seiring waktu,
gunakan data baru, atau kombinasi data lama dan
60
data baru untuk melatih dan men-deploy ulang
model.
61
BAB V
Proyek Prediksi Gambar
62
(Gambar 5.2 Dataset Batu)
63
untuk preprocessing data berbentuk gambar. Serta
RMSprop untuk memanfaatkan optimizer yang tersedia .
Optimizer yang akan kita gunakan nantinya yaitu Adam.
Selanjutnya kita akan mengimpor sebuah fungsi
dari library sklearn yang telah didefinisikan yaitu
train_test_split untuk memisahkan dataset gambar
menjadi dua bagian yaitu train set dan test set .
import tensorflow as tf
from tensorflow.keras.optimizers import RMSprop
from tensorflow.keras.preprocessing.image import ImageDataGenerator
print(tf.__version__)
import sklearn
from sklearn import datasets
from sklearn.model_selection import train_test_split
import os
64
1. Upload file di direktori
‘tmp’
65
local_zip = '/tmp/rockpaperscissors.zip'
zip_ref = zipfile.ZipFile(local_zip, 'r')
zip_ref.extractall('/tmp')
zip_ref.close()
base_dir = '/tmp/rockpaperscissors/rps-cv-images'
splitfolders.ratio(base_dir, output='/tmp/rockpaperscissors', seed=
1337 ,ratio=(.6,.4))
train_dir = os.path.join('/tmp/rockpaperscissors', 'train')
validation_dir = os.path.join('/tmp/rockpaperscissors', 'val')
Hasil Running :
Copying files: 2188 files [00:00, 3085.57 files/s]
os.listdir('/tmp/rockpaperscissors/train')
66
os.listdir('/tmp/rockpaperscissors/val')
Hasil Running :
['scissors', 'paper', 'rock']
Kemudian kita lakukan train dan test split masing –
masing direktori tersebut.
train_rock_dir,validation_rock_dir = train_test_split(os.listdir(roc
k_dir),test_size =0.4)
train_paper_dir,validation_paper_dir = train_test_split(os.listdir(p
aper_dir),test_size =0.4)
train_scissors_dir,validation_scissors_dir = train_test_split(os.list
dir(scissors_dir),test_size =0.4)
67
# membuat direktori paper pada direktori data validasi
validation_paper_dir = os.path.join(validation_dir, 'paper')
test_datagen = ImageDataGenerator(
rescale=1./255,
rotation_range=20,
horizontal_flip=True,
shear_range = 0.2,
fill_mode = 'nearest')
train_generator = train_datagen.flow_from_directory(
train_dir, # direktori data latih
target_size=(150, 150), # mengubah resolusi seluruh gamba
r menjadi 150x150 piksel
batch_size=32,
class_mode='categorical')
68
validation_generator = test_datagen.flow_from_directory(
validation_dir, # direktori data validasi
target_size=(150, 150), # mengubah resolusi seluruh gambar
menjadi 150x150 piksel
batch_size=32,
class_mode='categorical')
Hasil running :
Found 1312 images belonging to 3 classes.
69
tf.keras.layers.MaxPooling2D(2,2),
tf.keras.layers.Flatten(),
tf.keras.layers.Dense(512, activation='relu'),
tf.keras.layers.Dense(3, activation='softmax')
])
71
Setelah membuat arsitektur dari MLP, model kita
belum bisa melakukan apa-apa. Agar model bisa belajar,
kita perlu memanggil fungsi compile pada model kita dan
menspesifikasikan optimizer dan loss function.
Untuk optimizer kita menggunakan Optimizer
Adam. Selanjutnya untuk loss function kita dapat
menggunakan sparse categorical entropy atau cross
categorical entropy pada kasus klasifikasi 3 kelas atau
lebih. Untuk masalah 2 kelas, loss function yang lebih
tepat adalah binary cross entropy. Parameter metrics
berfungsi untuk menampilkan metrik yang dipilih pada
proses training model.
Setelah membuat arsitektur MLP dan menentukan
optimizer serta loss functionnya, kita dapat melatih model
kita pada data training. Parameter epoch merupakan
jumlah berapa kali sebuah model melakukan propagasi
balik (backward pass).
history = model.fit(
train_generator,
steps_per_epoch=25,
epochs=20,
validation_data=validation_generator,
validation_steps=5,
verbose=2,
)
72
Hasil Running :
Epoch 1/20
25/25 - 49s - loss: 1.1269 - accuracy: 0.3400 - val_loss: 1.0576 -
val_accuracy: 0.3750
Epoch 2/20
25/25 - 47s - loss: 0.8833 - accuracy: 0.6000 - val_loss: 0.7307 -
val_accuracy: 0.7812
Epoch 3/20
25/25 - 47s - loss: 0.5271 - accuracy: 0.8175 - val_loss: 0.4269 -
val_accuracy: 0.8250
Epoch 4/20
25/25 - 47s - loss: 0.2685 - accuracy: 0.9013 - val_loss: 0.3536 -
val_accuracy: 0.9000
Epoch 5/20
25/25 - 48s - loss: 0.2136 - accuracy: 0.9150 - val_loss: 0.2942 -
val_accuracy: 0.9062
Epoch 6/20
25/25 - 48s - loss: 0.1671 - accuracy: 0.9350 - val_loss: 0.2095 -
val_accuracy: 0.9438
Epoch 7/20
25/25 - 47s - loss: 0.1881 - accuracy: 0.9400 - val_loss: 0.1893 -
val_accuracy: 0.9500
Epoch 8/20
25/25 - 47s - loss: 0.1352 - accuracy: 0.9575 - val_loss: 0.1294 -
val_accuracy: 0.9625
Epoch 9/20
25/25 - 47s - loss: 0.1343 - accuracy: 0.9450 - val_loss: 0.1388 -
val_accuracy: 0.9625
Epoch 10/20
25/25 - 48s - loss: 0.1191 - accuracy: 0.9663 - val_loss: 0.1583 -
val_accuracy: 0.9563
Epoch 11/20
25/25 - 49s - loss: 0.2061 - accuracy: 0.9262 - val_loss: 0.1232 -
val_accuracy: 0.9625
Epoch 12/20
73
25/25 - 48s - loss: 0.1070 - accuracy: 0.9625 - val_loss: 0.0635 -
val_accuracy: 0.9812
Epoch 13/20
25/25 - 48s - loss: 0.1112 - accuracy: 0.9688 - val_loss: 0.1486 -
val_accuracy: 0.9563
Epoch 14/20
25/25 - 48s - loss: 0.0712 - accuracy: 0.9737 - val_loss: 0.0886 -
val_accuracy: 0.9500
Epoch 15/20
25/25 - 48s - loss: 0.0861 - accuracy: 0.9688 - val_loss: 0.1132 -
val_accuracy: 0.9750
Epoch 16/20
25/25 - 48s - loss: 0.0636 - accuracy: 0.9775 - val_loss: 0.1641 -
val_accuracy: 0.9563
Epoch 17/20
25/25 - 48s - loss: 0.0621 - accuracy: 0.9812 - val_loss: 0.0335 -
val_accuracy: 0.9812
Epoch 18/20
25/25 - 49s - loss: 0.0907 - accuracy: 0.9688 - val_loss: 0.1496 -
val_accuracy: 0.9688
Epoch 19/20
25/25 - 49s - loss: 0.0660 - accuracy: 0.9787 - val_loss: 0.1093 -
val_accuracy: 0.9750
Epoch 20/20
25/25 - 49s - loss: 0.0418 - accuracy: 0.9837 - val_loss: 0.0474 -
val_accuracy: 0.9812
74
%matplotlib inline
uploaded = files.upload()
for fn in uploaded.keys():
# predicting images
path = fn
img = image.load_img(path, target_size=(150,150))
imgplot = plt.imshow(img)
x = image.img_to_array(img)
x = np.expand_dims(x, axis=0)
images = np.vstack([x])
classes = model.predict(images, batch_size=10)
print(fn)
if classes[0][0]==1:
print('Paper')
elif classes[0][1]==1:
print('Rock')
elif classes[0][2]==1:
print('Scissors')
75
satu prediksi untuk setiap elemen, memberikan 100
output. Perhitungan tersebut dapat dilakukan dalam batch,
yang ditentukan oleh batch_size. Hal tersebut dilakukan
untuk mencegah pada saat CPU/GPU RAM tidak bisa
memasukkan semua data di pada saat yang sama dan
pemrosesan batch diperlukan.
Hasil Prediksi :
76
DAFTAR PUSTAKA
77