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. Kita memberikan petunjuk melalui algoritma agar mesin yang kita latih bisa mencari korelasinya sendiri atau belajar pola dari data yang diberikan.
- 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.
done
bagaimana cara training dan testing dengan memanggil data secara terpisah?
misal data training ada di Folder “Train”
dan data testting ada di folder “Test”
Mudah saja, cukup buat variabel dengan nama training, dan variabel lain dengan nama test. Lalu copy masing-masing folder ke nama variabel tersebut sesuai peruntukannya.
Prakteknya bisa dilihat di pembahasan aplikasi CNN di web ini.
Semoga menjawab.
Baik, Terima kasih..
apakahi ini bisa diimplementkan untuk kasus lebih dari 2 kelas?
Kurang jelas apa yang dimaksud dengan 2 kelas di sini.
di contoh yg CNN mas kan pake data gambar kucing dan anjing. misalnya lebih dari 2 kelas/jenis, misalkan ada 5 jenis binatang. apakah bisa? Terima kasih
Bisa, activation function-nya yang diganti.
Untuk random_state pada text classification apakah bisa digunakan pak ? atau harus mengubah text ke angka terlebih dahulu ?
random_state yang dimaksud di sini adalah untuk split training dan test set bukan?
Jika iya, maka fungsinya hanya sebagai RNG (random number generator). Jika ingin hasil pembagian train dan test split nya selalu sama berkali-kali, maka selalu gunakan angka yang sama untuk random_state nya.
Mohon maaf kak mau tanya, syntax R untuk data training jika ingin di aplikasikan ke algoritma K-means gimana cara memasukkan datanya?
Clustering tidak memerlukan splitting training dan test set.
Jadi kalau seumpama kita menggunakan metode penelitian K-means Machine Learning itu gimana kak? Apa perlu di splitting training dan test set atau tidk perlu di splitting?
Maaf kak baru pemula jdi belum faham sama skli
Untuk clustering tidak perlu splitting data ya
Asli ini Artikel bagus bangetttt ;.; TERIMA KASIH MIN! TERUS MENYEBARKAN ILMU
klo kita mengambil data training nya 60 dan testing 40. itu gpp kan? maksdnya apakah menghasilkan akurasi yg baik atau malah sebaliknya?
Untuk komposisi bebas. Nanti tinggal pilih komposisi yang memberikan performa terbaik.
saat kita menngunakan split data untuk klasifikasi menggunakan python, lalu dari dataset yang sudah kita scraping apakah data training dan data testing bisa ditampilkan? terimakasih
Harusnya sih bisa-bisa saja.
mau nanya kak, untuk pembagian X dan Y jika datanya unvariate itu bagaimana? apakah X dan Y disini pengertiannya sama dengan variabel independen dan dependen?
terimakasih
Univariate hanya ada 1 variabel, tidak bisa dibagi X dan Y.
Iya betul X adalah independen dan Y adalah dependen.
maaf izin bertanya, apakah dalam kasus penggunaan metode naive bayes, dapat menggunakan data training dan data testing berbeda, tetapi pada data training tetap harus di split data. terimakasih
Data training bisa di-split lagi, biasanya untuk cross validation.
Apakah punya sintaks R untuk metode Eemdnya? dr awal smpai akhir.
Misalkan dalam proses dekomposisi ensemble tersebut apakah perlu dibagi datanya menjadi data training dan testing?
Terimakasih
Sudah coba cek di internet? Atau bisa terjemahkan langsung dari urutannya?