Apakah pengambilan sampel bertingkat diperlukan (hutan acak, Python)?

14

Saya menggunakan Python untuk menjalankan model hutan acak pada dataset tidak seimbang saya (variabel target adalah kelas biner). Ketika membagi dataset pelatihan dan pengujian, saya kesulitan apakah akan menggunakan pengambilan sampel bertingkat (seperti kode yang ditunjukkan) atau tidak. Sejauh ini, saya mengamati dalam proyek saya bahwa kasus bertingkat akan mengarah pada kinerja model yang lebih tinggi. Tapi saya pikir jika saya akan menggunakan model saya untuk memprediksi kasus-kasus baru yang mungkin sangat berbeda dalam distribusi kelas target dengan dataset saya saat ini. Jadi saya cenderung melonggarkan batasan ini dan menggunakan split yang tidak terstratifikasi. Adakah yang bisa menyarankan untuk mengklarifikasi hal ini?

train,test=train_test_split(myDataset, test_size=0.25, stratify=y)
LUSAQX
sumber

Jawaban:

13

Jika jumlah nilai milik masing-masing kelas tidak seimbang, menggunakan stratified sampling adalah hal yang baik. Anda pada dasarnya meminta model untuk mengikuti pelatihan dan set tes sehingga proporsi kelas sama dengan seluruh dataset, yang merupakan hal yang benar untuk dilakukan. Jika kelas Anda seimbang maka shuffle (tidak diperlukan stratifikasi di sini) pada dasarnya dapat menjamin ujian yang adil dan melatih perpecahan.

Sekarang model Anda akan mampu atau setidaknya cukup diperlengkapi untuk memprediksi kelas yang kalah jumlah (kelas dengan jumlah poin lebih sedikit). Itulah sebabnya alih-alih menghitung Akurasi, Anda telah diberikan metrik lain seperti Sensitivitas dan Spesifisitas . Awasi ini, ini adalah penjaga.

Semoga ini membantu.

Kiritee Gak
sumber