Training dan test set

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 set. Apa maksudnya?

Machine learning (ML) 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, setelah mesin itu kita ajari (train), maka perlu kita tes (test).

Secara ringkas penjelasan dua bagian ini adalah sebagai berikut:

  • Training set adalah bagian dataset yang kita latih untuk membuat prediksi atau menjalankan fungsi dari sebuah algoritma ML lainnya sesuai tujuannya masing-masing. Kita memberikan petunjuk melalui algoritma agar mesin yang kita latih bisa mencari korelasinya sendiri.
  • Test set adalah bagian dataset yang kita tes untuk melihat keakuratannya, atau dengan kata lain melihat performanya.

Sekarang kita akan belajar cara membagi dataset menjadi training dan test set dengan bahasa python dan R.


Bahasa Python

 
# Membagi menjadi training set dan test set 
from sklearn.model_selection 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 2 adalah proses import train_test_split. Library train_test_split ini adalah sublibrary dari modul model_selection di library sklearn, sehingga penulisan untuk mengimportnya seperti itu (from.. import..)
  • Line ke 3 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 3 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 teknik-teknik machine learning.


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.

Bagikan artikel ini:

1
Leave a Reply

avatar
1 Comment threads
0 Thread replies
0 Followers
 
Most reacted comment
Hottest comment thread
1 Comment authors
hanru Recent comment authors
  Subscribe  
newest oldest most voted
Notify of
hanru
Guest
hanru

done