Training dan test set

Setelah seorang programmer melakukan tahap preprocessing untuk dataset yang ia miliki, langkah selanjutnya adalah membaginya ke dalam 2 jenis yaitu training dan test. Apa maksudnya?

Machine learning sesuai namanya adalah mesin yang dirancang untuk belajar (a machine that is designed to learn). Oleh karena itu agar kita bisa mengetahui apakah ia belajar sesuai keinginan kita, dan apakah performa yang diberikan sudah sesuai dengan tingkat akurasi yang kita inginkan, kita perlu melakukan sebuah tes.

Secara ringkas penjelasan dua bagian ini adalah sebagai berikut:

  • Training set adalah bagian dataset yang kita latih untuk membuat prediksi atau algoritma ML lainnya sesuai tujuannya masing-masing. Kita memberikan petunjuk melalui algoritma agar mesin yang kita latih bisa mencari korelasinya sendiri. Walau demikian proses belajar harusnya proporsional. Layaknya seorang murid yang terlalu diforsir belajar, maka hasilnya pun tidak akan baik. Dalam istilah ML disebut dengan overfitting. Akan lebih mudah memahami konsep overfitting melalui praktek.
  • Test set adalah bagian dataset yang kita tes untuk melihat keakuratannya, atau dengan kata lain melihat performanya.

 

Bahasa Python

import numpy as np
import matplotlib.pyplot as plt
import pandas as pd

# Membagi menjadi training set dan test set
from sklearn.cross_validation import train_test_split
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size = 0.2, random_state = 0)

Penjelasan:

  • Line ke 6 adalah proses import train_test_split
  • Line ke 7 adalah proses pendefinisian X_train sebagai data X yang ingin kita latih (train), X_test sebagai data X yang ingin kita tes, y_train adalah variabel dependen yang dilatih, dan y_test merupakan variabel dependen yang diuji. Kita mendefinisikan keempat variabel ini secara bersamaan. Pada perintah train_test_split diisi dengan parameter arrays X,y yang menunjukkan arrays yang dipakai adalah X sebagai variabel independen dan y sebagai variabel dependen. Parameter selanjutnya adalah test_size sebesar 20%. Biasanya sebagai rule of thumb (aturan umum) proporsi test set sebesar 20% dan train set 80%. Namun ada juga yang menentukan 25:75, terserah Anda ingin yang mana. Parameter lainnya adalah random_state yang merupakan random number generator (RNG). Bisa diisi apa saja, idenya adalah jika menggunakan angka 7 misalnya, maka bilangan random yang dibangkitkan akan selalu sama jika suatu saat kita menentukan angka 7 lagi. Untuk kali ini kita pilih angka nol.

Jika sudah, coba klik dua kali pada X_train dan X_test di Variable explorer. Tampilannya akan tmpak sebagai berikut:

Jika kita eksekusi lagi line 7 dengan angka random_state 7 misalnya, maka nilai X_test, X_train, y_test dan y_train akan berubah. Namun jika kita eksekusi lagi dengan random_state nol, maka nilainya akan sama lagi. itulah inti dari random_state di mana kita akan mendapatkan bilangan random yang sama untuk angka RNG yang sama.

Perlu diingat bahwa logika yang ingin kita bangun adalah kita membiarkan mesin belajar dari training set untuk kemudian diuji di test set. Jadi pada training set, ia akan mencari korelasi antara X_train dan y_train. Setelah korelasi ini ada dan terbentuk, kita akan mengujinya ke test set. Jika mesin ini belajar terlalu keras ia akan melakukan overfitting yang akan menghasilkan korelasinya terlau sempurna atau bahkan tidak terbentuk sama sekali. Ada banyak teknik untuk menghindari overfitting dan kita akan membahas ini di pembahasan regresi.

 

Bahasa R

# Membagi data menjadi training set dan test set
#install.packages('caTools')
library(caTools)
set.seed(123)
split = sample.split(dataset$Beli, SplitRatio = 0.8)

Langkah selanjutnya yang biasa dilakukan adalah melakukan penyamaan skala atau yang disebut dengan feature scaling. Walau demikian, langkah ini tidak selalu pasti dilakukan. Harus dilihat dulu apakah diperlukan atau tidak. Untuk lebih jelasnya silakan klik link ini.

Leave a Reply

avatar
  Subscribe  
Notify of