← Back to Articles

Training, Validation, Testing, dan Cross-Validation: Mengapa Data Machine Learning Harus Dipisahkan?

Pada artikel sebelumnya kita membahas bahwa salah satu orientasi utama Machine Learning adalah prediction: membangun model dari data yang tersedia agar mampu memberikan prediksi yang baik pada data baru.

Namun muncul pertanyaan penting:

Bagaimana kita mengetahui bahwa model benar-benar mampu memprediksi data baru, dan bukan sekadar menghafal data yang digunakan untuk membangunnya?

Di sinilah konsep training, validation, testing, dan cross-validation menjadi sangat penting.

Secara sederhana, prinsipnya adalah:

Model belajar dari satu bagian data, tetapi harus diuji menggunakan data yang tidak digunakan untuk belajar.

Mengapa Tidak Menggunakan Seluruh Data Sekaligus?

Bayangkan kita mempunyai data 10.000 orang untuk mengembangkan model prediksi hipertensi.

Variabel yang tersedia antara lain:

  • umur,
  • jenis kelamin,
  • indeks massa tubuh,
  • aktivitas fisik,
  • status merokok,
  • denyut nadi,
  • dan status hipertensi.

Kita kemudian menggunakan seluruh 10.000 data tersebut untuk membangun model.

Setelah model selesai, kita mengevaluasinya menggunakan 10.000 orang yang sama.

Hasilnya:

Accuracy = 95%

Apakah berarti model kita sangat bagus?

Belum tentu.

Model sudah pernah melihat seluruh data tersebut selama proses pembelajaran. Karena itu, performa yang tinggi dapat mencerminkan kemampuan model menyesuaikan diri terhadap data yang sudah diketahui, bukan kemampuannya menghadapi data baru.

Situasi ini dapat dianalogikan dengan seorang mahasiswa yang diuji menggunakan soal yang persis sama dengan soal yang sudah diberikan beserta jawabannya saat belajar.

Yang ingin kita ukur sebenarnya adalah:

Apakah ia tetap dapat menjawab ketika diberikan soal yang belum pernah dilihat sebelumnya?

Dalam Machine Learning, prinsip ini disebut generalization.

Training Data: Tempat Model Belajar

Bagian pertama adalah training set.

Training data digunakan untuk membangun model.

Misalnya:

10.000 observation –> 8.000 Training Data –> Machine Learning Algorithm –> Trained Model

Pada tahap inilah algoritma mempelajari hubungan antara features dengan target.

Sebagai contoh:

Age + BMI + Smoking + Physical Activity + Pulse –> Training –> Prediction Model for Hypertension

Model dapat menyesuaikan parameter, memilih pola, atau membentuk struktur berdasarkan algoritma yang digunakan.

Karena itu:

Training data adalah data yang boleh “dilihat” oleh model ketika belajar.

Testing Data: Ujian Akhir untuk Model

Sebagian data kemudian disimpan sebagai test set.

Misalnya:

80% Training

20% Testing

Test data tidak digunakan untuk membangun model.

Setelah proses training selesai:

Trained Model –> Testing Data yang belum pernah dilihat –> Prediction –> Compare Prediction vs Actual Outcome

Dari sini kita dapat menghitung berbagai ukuran performance seperti:

  • accuracy,
  • sensitivity,
  • specificity,
  • precision,
  • recall,
  • F1-score,
  • ROC-AUC,
  • dan calibration.

TRIPOD+AI, pedoman terbaru untuk pelaporan model prediksi menggunakan regression maupun Machine Learning, menekankan pentingnya evaluasi performa model, termasuk discrimination, calibration, dan clinical utility. [3]

Dengan demikian, test data mempunyai fungsi yang sangat spesifik:

memberikan gambaran yang lebih objektif mengenai bagaimana model bekerja pada data yang tidak digunakan untuk mengembangkannya.

Lalu, Apa Fungsi Validation Data?

Persoalannya, selama membangun model kita sering harus membuat banyak keputusan.

Misalnya:

Random Forest

Berapa jumlah trees?

Decision Tree

Berapa maksimum kedalamannya?

k-Nearest Neighbors

Berapa nilai k?

Neural Network

Berapa layer dan neuron yang digunakan?

Pilihan seperti ini disebut hyperparameters.

Jika kita terus mencoba berbagai konfigurasi dan memilih model berdasarkan performance pada test data, maka secara tidak langsung test data telah ikut digunakan dalam proses pengembangan.

Test set tidak lagi benar-benar independen.

Karena itu kita dapat menambahkan:

validation set.

Workflow-nya menjadi:

Training Data = untuk membangun model

Validation Data = untuk memilih model dan hyperparameter

Testing Data = untuk evaluasi akhir

Mengapa Cross-Validation Dibutuhkan?

Membagi dataset sekali saja mempunyai kelemahan.

Misalnya kita melakukan:

80% training

dan

20% validation

Bagaimana jika secara kebetulan validation set berisi kelompok yang lebih mudah atau lebih sulit diprediksi?

Hasil evaluasi dapat berubah hanya karena pembagian data.

Salah satu pendekatan yang umum digunakan untuk mengurangi masalah tersebut adalah:

Cross-Validation

Metode yang sangat populer adalah k-fold cross-validation.

Misalnya:

5-Fold Cross-Validation

Data dibagi menjadi lima bagian:

Fold 1 | Fold 2 | Fold 3 | Fold 4 | Fold 5

Pada putaran pertama:

Fold 1 = Validation

Fold 2–5 = Training

Putaran kedua:

Fold 2 = Validation

Fold 1, 3, 4, 5 = Training

Proses tersebut dilanjutkan sampai seluruh fold pernah menjadi validation data.

Akhirnya kita memperoleh lima hasil performance yang kemudian dapat diringkas, misalnya menggunakan rata-rata.

Cross-validation merupakan salah satu metode penting dalam model assessment dan model selection dan dibahas secara fundamental dalam literatur statistical learning. [1,2]

Contoh Sederhana

Misalnya kita ingin membandingkan tiga model prediksi hipertensi:

Logistic Regression

Random Forest

Support Vector Machine

Dengan 5-fold cross-validation kita memperoleh:

ModelMean AUC
Logistic Regression0,79
Random Forest0,82
Support Vector Machine0,80

Hasil ini dapat membantu kita memilih model dan melakukan tuning.

Setelah seluruh proses pengembangan selesai, model yang dipilih kemudian dievaluasi sekali lagi menggunakan test set yang sejak awal disimpan terpisah.

Konsepnya menjadi:

Development Data

→ Training
→ Cross-Validation
→ Hyperparameter Tuning
→ Model Selection

kemudian:

Independent Test Data

→ Final Evaluation

Jangan Sampai Terjadi Data Leakage

Memisahkan training dan testing belum cukup jika proses pengolahan datanya salah.

Salah satu masalah yang sangat penting dalam Machine Learning adalah:

Data Leakage

Data leakage terjadi ketika informasi dari validation atau test data secara tidak sengaja masuk ke dalam proses training.

Contoh sederhana adalah melakukan standardisasi menggunakan:

mean dan standard deviation seluruh dataset

sebelum data dibagi menjadi training dan testing.

Model secara tidak langsung telah memperoleh informasi dari test data.

Workflow yang lebih tepat adalah:

Split Data — > Training Data

  • Hitung mean, SD, imputasi, feature selection, dan preprocessing lainnya
  • Terapkan parameter tersebut pada validation/test data.

Prinsip dasarnya:

Informasi dari masa depan atau dari test set tidak boleh digunakan untuk membantu model belajar.

Masalah Khusus pada Data Kesehatan

Dalam data kesehatan, pemisahan data membutuhkan perhatian tambahan.

Misalnya satu pasien mempunyai 10 kali kunjungan.

Jika lima kunjungan masuk training dan lima kunjungan lainnya masuk testing, sebenarnya model sudah pernah “melihat” pasien yang sama.

Performance model dapat terlihat lebih tinggi daripada kemampuan sebenarnya ketika menghadapi pasien baru.

Dalam kondisi seperti ini, splitting sebaiknya dilakukan pada:

patient level

bukan sekadar:

row level.

Prinsip yang sama berlaku pada data longitudinal, rumah sakit, fasilitas kesehatan, atau wilayah.

Kadang evaluasi yang lebih realistis justru menggunakan:

temporal validation

misalnya model dibangun menggunakan data 2020–2024 dan diuji pada data 2025,

atau:

geographical/external validation

misalnya model dibangun menggunakan data Jakarta dan diuji pada populasi Jawa Barat.

Internal Evaluation vs External Evaluation

Ada perbedaan penting antara mengevaluasi model menggunakan data dari sumber yang sama dengan mengevaluasinya pada populasi yang benar-benar berbeda.

Internal Evaluation

Misalnya:

Cross-validation

Bootstrapping

atau pemisahan development/test dari dataset yang sama.

Tujuannya mengetahui seberapa stabil model dalam data pengembangan.

TRIPOD+AI memasukkan train-test split, cross-validation, dan bootstrapping sebagai pendekatan untuk internal validation/evaluation model prediksi. [3]

External Evaluation

Model diuji pada:

  • rumah sakit berbeda,
  • daerah berbeda,
  • periode waktu berbeda,
  • atau populasi berbeda.

External evaluation memberikan pertanyaan yang lebih sulit:

Apakah model masih bekerja ketika keluar dari lingkungan tempat ia dikembangkan?

Untuk model kesehatan yang akan digunakan secara luas, pertanyaan ini sangat penting.

Apakah Semakin Banyak Training Data Selalu Lebih Baik?

Secara umum, model memang memperoleh manfaat dari lebih banyak data training. Namun bukan berarti kita harus memasukkan seluruh data ke training set dan menghilangkan evaluasi independen. Kita tetap membutuhkan mekanisme untuk mengetahui apakah model mampu melakukan generalisasi.

Pada dataset yang relatif kecil, pembagian train-validation-test secara sederhana bahkan dapat membuang banyak informasi. Karena itu cross-validation atau bootstrapping sering menjadi pendekatan yang lebih efisien untuk internal evaluation.

Pemilihan strategi harus mempertimbangkan:

  • jumlah data,
  • prevalensi outcome,
  • struktur longitudinal,
  • clustering,
  • tujuan prediction,
  • dan populasi target.

Tidak ada satu rasio seperti 80:20 atau 70:30 yang otomatis selalu benar untuk semua penelitian.

Referensi

  1. Hastie T, Tibshirani R, Friedman J. The Elements of Statistical Learning: Data Mining, Inference, and Prediction. 2nd ed. New York: Springer; 2009. doi:10.1007/978-0-387-84858-7.
  2. James G, Witten D, Hastie T, Tibshirani R. An Introduction to Statistical Learning: with Applications in R. 2nd ed. New York: Springer; 2021. doi:10.1007/978-1-0716-1418-1.
  3. Collins GS, Moons KGM, Dhiman P, et al. TRIPOD+AI statement: updated guidance for reporting clinical prediction models that use regression or machine learning methods. BMJ. 2024;385. doi:10.1136/bmj-2023-078378.