Machine Learning Life Cyle
3.2.3 Data splitting
Setelah mendapatkan data yang bersih, selanjutnya adalah melakukan
proses data spliting (pemecahan data) dimana kita membagi data tersebut
menjadi beberapa bagian diantaranya data latih (training data), data uji
(testing data), dan data validasi (validation data). Metode ini dikenal dengan
nama holdout dimana kita membagi dataset menjadi 2 bagian yaitu training
set dan holdout set. Training set berisi data latih yang digunakan untuk
membangun model dan biasanya ukurannya lebih besar dibandingkan
dengan holdout set.
Sedangkan holdout set dapat terdiri atas data uji (testing data), dan data
validasi (validation data) atau hanya data uji saja. Dengan kata lain kita dapat
memecah dataset tersebut menjadi 2 atau 3 tergantung kebutuhan. Data
validasi bersifat opsional dan hanya dibutuhkan ketika kita ingin melakukan
optimalisasi hyperparameter model yang telah dilatih atau pemilihan
algoritma terbaik. Sebagai contoh, pada algoritma yang berbasis jaringan
syaraf tiruan, dimana kita perlu menentukan hyperparameter seperti berapa
jumlah hidden unit, jumlah layer dan sebagainya. Untuk menentukan
hyperparameter tersebut maka diperlukan sebuah dataset yang tidak bias
sehingga menghasilkan hyperparameter yang optimal. Namun jika pada
pelatihan anda telah menetapkan hyperparameter model maka data evaluasi
biasanya tidak dibutuhkan. Selanjutnya data uji digunakan untuk mengukur
performa model yang telah dilatih.
Sebagai contoh pada Gambar 3.10, dimana kita memiliki sebuah dataset
mobil yang terdiri atas 1.000 data jenis mobil. Untuk melakukan pelatihan
model maka data tersebut akan dipecah menjadi 3 bagian. Data Latih terdiri
atas 800 data, Data evaluasi 100 data dan Data Uji 100 data.
94
Machine Learning: Teori, Studi Kasus dan Implementasi menggunakan Python
Gambar 3.10. Ilustrasi holdout sets
Tidak ada aturan yang pasti tentang berapa porsi pembagian masing
masing jenis data. Jika kita memiliki dataset yang besar, misalnya 500.000
sample maka kita dapat menggunakan 95% untuk data latih dan 2.5% untuk
validasi, dan 2.5% untuk data uji. Namun jika kita hanya memiliki 100 data
kita dapat memecahnya menjadi 70+15+15.
Kenapa dataset harus dipecah? Bayangkan jika anda melakukan ujian
dengan soal yang pernah anda kerjakan maka anda akan mendapatkan nilai
yang tinggi. Namun ujian tersebut tidak menggambarkan kemampuan anda
yang sebenarnya. Oleh karena itu soal yang digunakan pada saat
pembelajaran dan ujian harus berbeda, namun dari sumber yang sama.
Untuk melakukan split terhadap data di python menggunakan Numpy
maka dapat dilihat pada contoh berikut menggunakan [Link]
Untuk melakukan split terhadap data di python menggunakan Pandas
maka dapat dilihat pada contoh berikut:
95
Machine Learning Life Cyle
Untuk melakukan split terhadap data di python menggunakan Sk-Learn
maka dapat dilihat pada contoh berikut menggunakan fungsi
train_test_split:
Manfaat lainnya yang didapatkan ketika membagi data-data ini adalah
kita dapat melakukan deteksi terhadap dua masalah yang umum terjadi
pada saat pembelajaran yaitu underfitting dan overfitting:
• Underfitting adalah sebuah situasi dimana model yang dihasilkan gagal
untuk melakukan generalisasi relasi pada data. Sebagai contoh misalnya
ketika kita melakukan training pada data yang non-linear menggunakan
metode linear yang mengakibatkan performa dari training dan test
rendah. Umumnya masalah underfitting diidentifikasi dengan rendahnya
performa training dan test sets.
96
Machine Learning: Teori, Studi Kasus dan Implementasi menggunakan Python
• Overfitting adalah sebuah situasi dimana model yang dihasilkan
menghasilkan generalisasi yang kompleks dari data training.
Analoginya, model yang dihasilkan “menghapal” relasi pada data
sehingga ketika dievaluasi menggunakan test data maka performanya
akan turun. Masalah ini diidentifikasi dengan tingginya performa pada
training namun performa yang rendah pada test. Idealnya performa
antara training dan test tidak jauh berbeda.
Metode cross-validation
Cross-validation (CV) adalah metode statistik yang dapat digunakan
untuk mengevaluasi kinerja model atau algoritma dimana data dipisahkan
menjadi dua subset yaitu data latih dan data uji. Model atau algoritma dilatih
oleh subset pembelajaran dan divalidasi oleh subset validasi. Selanjutnya
pemilihan jenis CV dapat didasarkan pada ukuran dataset.
Untuk mengurangi variabilitas, maka dilakukan beberapa putaran
validasi silang dengan subset berbeda dari data yang sama. Lalu hasil
evaluasi tersebut digabungkan (rata-rata). Metode CV akan memberi kami
perkiraan performa model yang lebih akurat dibandingkan Holdout.
Berikut ini beberapa jenis CV diantaranya :
1. LOOCV (Leave one out cross-validation)
Pada LOOCV, data dibagi menjadi dua bagian, yaitu data uji dan data
latih, namun pada data latih hanya menggunakan 1 data. Sehingga jika kita
memiliki n data, maka kita akan memiliki sejumlah n-1 data latih dan 1 data
uji. Proses training dan evaluasi dilakukan sebanyak n kali. Ilustrasi LOCV
dapat dilihat pada Gambar 3.11
97
Machine Learning Life Cyle
Gambar 3.11. Ilustrasi Leave one out cross-validation
2. K-Fold cross-validation
K-fold adalah sebuah metode yang memecah dataset menjadi dua bagian
yaitu data latih dan data uji sebanyak k kelompok dimana jumlah data latih
dan data uji pada tiap-tiap kelompok sama. Sehingga kita akan melakukan
perulangan sebanyak K kali untk melakukan training dan evaluasi. K dapat
berisi sebuah nilai bulat. Jika k bernilai 1 maka metode ini sama dengan
holdout. Biasnya nilai k lebih besar dari 1. Ilustrasi K-Fold ditunjukkan pada
Gambar 3.12 .
Gambar 3.12. Ilustrasi K-Fold cross-validation
98
Machine Learning: Teori, Studi Kasus dan Implementasi menggunakan Python
10 fold CV adalah salah satu K-fold CV yang direkomendasikan untuk
pemilihan model terbaik karena cenderung memberikan estimasi akurasi
yang kurang bias dibandingkan dengan CV biasa dan leave-one-out CV.
Dalam 10 fold CV, data dibagi menjadi 10 fold berukuran kira-kira sama,
sehingga kita memiliki 10 subset data untuk mengevaluasi kinerja model
atau algoritma. Untuk masing-masing dari 10 subset data tersebut, CV akan
menggunakan 9 fold untuk pelatihan dan 1 fold untuk pengujian.
3. Stratified cross-validation
Stratified cross-validation mirip dengan K-Fold, namun perbedaannya
dalam pembagian data tiap iterasinya memperhatikan kondisi data set
seperti distribusi kelas, rata-rata dan varian, sehingga pembagian distribusi
kelas lebih merata. Perhatikan Gambar 3.13 sebagai ilustrasi, dimana pada
gambar tersebut distribusi kelas M dan L hampir sama pada tiap bagian data.
Gambar 3.13. Ilustrasi Stratified cross-validation
Pelatihan dan Uji Coba Model
Proses pelatihan model (model training) adalah sebuah proses
mengekstrak pola atau pengetahuan pada data latih menggunakan
algoritma tertentu. Berbagai jenis algoritma dapat digunakan pada tahap ini
tergantung task atau masalah apa yang ingin dipecahkan. Hasil atau luaran
99
Machine Learning Life Cyle
pelatihan menggunakan algoritma tertentu adalah adalah sebuah model
Machine Learning.
Pada proses fase pelatihan, digunakan dua jenis dataset yaitu training dan
validation dataset. Algoritma ML memanfaatkan training dataset yang telah
disiapkan pada fase sebelumnya untuk mengekstrak pola atau pengetahuan
pada data. Sedangkan Validation dataset, seting digunakan untuk
memvalidasi model dan melakukan hyperparameter optimalization.
Gambar 3.14. Proses Ilustrasi Pelatihan dan Pengujian Model
Pada tahap training juga biasanya dilakukan hyperparameter optimalization
(Tuning) dan evaluation. Hyperparameter adalah parameter yang harus ditetap
sebelum proses pembelajaran berlangsung. Hyperparameter ini berbeda-beda
tiap algoritma dan nilainya mempengaruhi performa dan dipengaruhi oleh
masalah dan data yang ingin dipecahkan. Oleh karena itu, biasanya pada
proses ini dilakukan berulang-ulang sehingga diperoleh beberapa model lalu
dipilih model yang terbaik. Untuk detail proses ini, anda dapat merujuk
pada bab selanjutnya tergantung algoritma apa yang akan digunakan.
100