Cara Melakukan Split Dataset untuk Training – Testing – Validation – Dataset adalah kumpulan data yang disusun secara sistematis dan dapat digunakan untuk keperluan analisis, penelitian, atau pengembangan model. Dataset dapat berupa kumpulan informasi dalam berbagai bentuk, seperti teks, gambar, audio, atau numerik. Dalam konteks analisis data dan pembelajaran mesin, dataset menjadi elemen kunci untuk melatih dan menguji model.
Berikut beberapa konsep dasar terkait dataset:
- Observasi/Data Point: Setiap item dalam dataset disebut sebagai observasi atau data point. Misalnya, dalam dataset gambar, setiap gambar mungkin dianggap sebagai satu observasi.
- Variabel: Variabel adalah atribut atau fitur tertentu dari setiap observasi. Misalnya, dalam dataset pasien rumah sakit, variabel dapat mencakup usia, jenis kelamin, tekanan darah, dll.
- Label: Dalam tugas pembelajaran mesin terawasi, dataset biasanya memiliki label yang menunjukkan output yang diharapkan atau kategori tertentu. Misalnya, dalam dataset pengenalan gambar, label dapat menunjukkan jenis objek yang terdapat dalam gambar.
- Training Set dan Test Set: Dataset umumnya dibagi menjadi dua bagian utama: training set (set pelatihan) dan test set (set uji). Training set digunakan untuk melatih model, sedangkan test set digunakan untuk menguji sejauh mana model dapat menggeneralisasi informasi yang telah dipelajari dari training set.
- Feature Vector: Setiap observasi dapat direpresentasikan sebagai vektor fitur, yang berisi nilai-nilai dari setiap variabel atau atribut. Ini adalah bentuk representasi data yang mudah dimengerti oleh model pembelajaran mesin.
- Preprocessing: Proses membersihkan dan mempersiapkan dataset sebelum digunakan untuk pelatihan model. Ini dapat mencakup penghapusan nilai-nilai yang hilang, normalisasi data, atau konversi label kategorikal menjadi format yang sesuai.
- Open Data dan Proprietary Data: Dataset dapat bersifat terbuka (open) yang artinya dapat diakses oleh publik atau bersifat properti dan hanya dapat diakses oleh pihak tertentu.
- Big Data: Beberapa dataset sangat besar dan kompleks sehingga memerlukan teknik-teknik khusus untuk analisis dan pemrosesan. Ini dikenal sebagai big data.
Contoh-contoh dataset melibatkan berbagai domain, seperti dataset ekonomi, dataset medis, dataset citra, dataset teks, dan banyak lagi. Penting untuk memahami karakteristik dataset saat merancang dan mengimplementasikan model pembelajaran mesin untuk memastikan kualitas dan generalisasi yang baik.
Pembagian Dataset
Dataset dalam konteks pembelajaran mesin umumnya dibagi menjadi tiga bagian utama: dataset pelatihan (training set), dataset pengujian (testing set), dan dataset validasi (validation set). Pembagian ini penting untuk mengukur kinerja model dengan benar dan menghindari overfitting. Berikut adalah penjelasan detail tentang masing-masing:
- Dataset Pelatihan (Training Set):
- Fungsi: Digunakan untuk melatih model.
- Karakteristik:
- Terdiri dari sejumlah besar data.
- Berisi berbagai variasi dan representasi dari data yang mungkin dihadapi model di dunia nyata.
- Proses Penggunaan:
- Model mempelajari pola dan hubungan dalam data ini selama proses pelatihan.
- Parameter model disesuaikan berdasarkan data pelatihan.
- Dataset Pengujian (Testing Set):
- Fungsi: Digunakan untuk mengukur kinerja model pada data yang belum pernah dilihat sebelumnya.
- Karakteristik:
- Terpisah sepenuhnya dari dataset pelatihan.
- Tidak digunakan selama proses pelatihan model.
- Proses Penggunaan:
- Setelah model dilatih, diuji pada dataset ini untuk mengukur sejauh mana model dapat menggeneralisasi ke data baru.
- Hasil pengujian memberikan perkiraan kinerja model di dunia nyata.
- Dataset Validasi (Validation Set):
- Fungsi:
- Digunakan untuk menilai dan memilih model terbaik selama proses pelatihan.
- Mencegah overfitting dan membantu tuning parameter model.
- Karakteristik:
- Terpisah dari dataset pelatihan dan pengujian.
- Digunakan untuk memvalidasi kinerja model selama pelatihan.
- Proses Penggunaan:
- Model diuji pada dataset validasi setelah setiap epoch atau batch selama pelatihan.
- Berdasarkan performa pada dataset validasi, dapat dilakukan penyesuaian parameter model atau pemilihan model terbaik.
- Fungsi:
Pembagian dataset ini membantu mencegah model dari overfitting, yaitu kondisi di mana model terlalu “mengingat” data pelatihan dan kinerjanya menurun pada data baru. Dengan menggunakan dataset pengujian yang terpisah, kita dapat mengukur sejauh mana model dapat memperoleh pengetahuan dari data pelatihan dan menerapkannya dengan baik pada data baru. Dataset validasi membantu memastikan bahwa model yang dihasilkan optimal dan tidak hanya optimal pada data pelatihan.
Cara Melakukan Split Dataset untuk Training – Testing – Validation
Untuk melakukan split dataset sebenarnya cukup mudah kok, mari kita coba dengan dataset iris
import torch import numpy as np from sklearn import datasets import pandas as pd iris = datasets.load_iris() X = iris.data y = iris.target data = np.hstack((X,y.reshape(len(y),1))) df = pd.DataFrame(data,columns=['x1','x2','x3','x4','y']) print(df.head(5))
hasilnya
print(df.head(5)) x1 x2 x3 x4 y 0 5.1 3.5 1.4 0.2 0.0 1 4.9 3.0 1.4 0.2 0.0 2 4.7 3.2 1.3 0.2 0.0 3 4.6 3.1 1.5 0.2 0.0 4 5.0 3.6 1.4 0.2 0.0
kita bisa melihat masing2 kelas mempunyai 30 record
print(df[['x1','y']].groupby('y').count())
hasilnya
x1 y 0.0 50 1.0 50 2.0 50
Sekarang kita akan split yaitu training 75%, testing 20% dan validation 5%
[0.75, 0.2, 0.05],
class_names = df['y'].unique() num_class = len(class_names) image_files = np.arange(0,len(df),1) idx_to_class = {i:j for i, j in enumerate(class_names)} class_to_idx = {value:key for key,value in idx_to_class.items()} train_idx, test_idx, val_idx = torch.utils.data.random_split(image_files, [0.75, 0.2, 0.05], generator=torch.Generator().manual_seed(42)) train_list = df.loc[train_idx.indices].reset_index() test_list = df.loc[test_idx.indices].reset_index() val_list = df.loc[val_idx.indices].reset_index()
hasilnya bisa kalian lihat untuk train_list sebagai berikut
index x1 x2 x3 x4 y 0 42 4.4 3.2 1.3 0.2 0.0 1 95 5.7 3.0 4.2 1.2 1.0 2 30 4.8 3.1 1.6 0.2 0.0 3 64 5.6 2.9 3.6 1.3 1.0 4 52 6.9 3.1 4.9 1.5 1.0 .. ... ... ... ... ... ... 108 1 4.9 3.0 1.4 0.2 0.0 109 103 6.3 2.9 5.6 1.8 2.0 110 125 7.2 3.2 6.0 1.8 2.0 111 85 6.0 3.4 4.5 1.6 1.0 112 2 4.7 3.2 1.3 0.2 0.0