Train/test split adalah salah satu metode yang dapat digunakan untuk mengevaluasi performa model machine learning. Metode evaluasi model ini membagi dataset menjadi dua bagian yakni bagian yang digunakan untuk training data dan untuk testing data dengan proporsi tertentu.
Train data digunakan untuk fit model machine learning, sedangkan test data digunakan untuk mengevaluasi hasil fit model tersebut.
Train/test split dapat digunakan untuk problem regresi maupun klasifikasi.
Evaluasi Model Train/test Split
Evaluasi model machine learning dengan train/test split cocok digunakan untuk dataset yang berukuran besar. Seperti yang kita ketahui, train/test split membagi dataset menjadi train set dan test set, atau dengan kata lain, data yang digunakan untuk proses training dan testing merupakan kumpulan data yang berbeda.
Metode train/test split ini akan memberikan hasil prediksi yang lebih akurat untuk new data atau data yang belum pernah di-train.
Baca juga: Cara Binning Data di Python dengan Pandas
Karena data testing tidak digunakan untuk melatih model, maka model tidak mengetahui outcome dari data tersebut. Ini yang disebut dengan out-of-sample testing.
Suatu model dikatakan bagus jika memiliki akurasi yang tinggi atau bagus untuk data out-of-sample, karena tujuan utama dibuatnya sebuah model tentunya adalah untuk memprediksi dengan benar data yang belum diketahui outcome-nya.
Train/test split di Python
Python memiliki library yang dapat mengimplementasikan train/test split dengan mudah yaitu Scikit-Learn. Untuk menggunakannya, kita perlu mengimport Scikit-Learn terlebih dahulu, kemudian setelah itu kita dapat menggunakan fungsi train_test_split()
.
from sklearn.model_selection import train_test_split
Setelah itu kita definisikan data yang menjadi source-nya (X
) dan juga data targetnya (y
). Misalnya data source-nya adalah semua kolom kecuali kolom terakhir yang di ujung sebelah kanan dataset df, sedangkan data targetnya adalah kolom paling ujung kanan dengan nama kolom “Class”, maka kita dapat mendefinisikannya seperti di bawah ini.
X = df.iloc[:, :-1] y = df['Class']
Setelah didefinisikan, kita dapat langsung mengimplementasikan train/test split.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2)
- X_train: Untuk menampung data source yang akan dilatih.
- X_test: Untuk menampung data target yang akan dilatih.
- y_train: Untuk menampung data source yang akan digunakan untuk testing.
- y_test: Untuk menampung data target yang akan digunakan untuk testing.
X
dan y
adalah nama variabel yang digunakan saat mendefinisikan data source dan data target. Parameter test_size
digunakan untuk mendefinisikan ukuran data testing. Dalam contoh di atas, test_size=0.2
berarti data yang digunakan sebagai data testing adalah sebesar 20% dari keseluruhan dataset.
Baca juga: Cara Memilih Algoritma Machine Learning
Perlu diketahui bahwa metode ini akan membagi train set dan test set secara random atau acak. Jadi, jika kita mengulang proses running, maka tentunya hasil yang didapat akan berubah-ubah. Untuk mengatasinya, kita dapat menggunakan parameter random_state seperti contoh di bawah ini.
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=3)
Angka yang didefinisikan pada parameter random_state boleh angka berapa saja yang berupa integer.
Menerapkan Hasil Train/test Split Dalam Pemodelan
Selanjutnya, kita dapat menggunakannya untuk pemodelan dengan algoritma tertentu misalnya disini menggunakan Linear Regression seperti contoh berikut.
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_absolute_error
# fit the model
model = LinearRegression()
model.fit(X_train, y_train)
# memprediksi model dengan test set
pred = model.predict(X_test)
# mengevaluasi model dengan MAE
mae = mean_absolute_error(y_test, pred)
print("Mean Absolute Error (MAE): ", mae)
Baca juga: Konsep Regresi Linear: Simple Linear Regression
LinearRegression()
adalah fungsi untuk mengimplementasikan algoritma Linear Regression di Python. Fungsi fit()
digunakan untuk melatih model, predict()
digunakan untuk memprediksi hasil model, sedangkan mean_absolute_error()
adalah fungsi untuk men-generate nilai Mean Absolute Error (MAE) yang merupakan salah satu metode untuk mengukur seberapa baik hasil prediksi untuk kasus regresi.
Semoga bermanfaat!
Jika Anda yang sedang belajar data science atau mengolah data dengan bahasa pemrograman Python namun masih suka bingung menulis kode Python-nya, kami telah menyusun Paket E-modul Data Science dengan Python yang didesain khusus untuk pemula dengan penjelasan bahasa Indonesia yang lengkap untuk setiap blok kode-nya. Dapatkan sekarang juga dengan klik di sini!