Saya memiliki dataset dengan 26 fitur dan 31000 baris. Ini adalah dataset dari 38 subjek. Ini untuk sistem biometrik. Jadi saya ingin dapat mengidentifikasi mata pelajaran.
Untuk memiliki set pengujian, saya tahu saya harus menghapus beberapa nilai.
Jadi apa yang lebih baik untuk dilakukan dan mengapa?
(a) simpan 30 subjek sebagai set pelatihan dan hapus 8 subjek sebagai set pengujian
(B) menyimpan 38 mata pelajaran, tetapi menghapus beberapa baris masing-masing. Jadi pada akhirnya saya akan berakhir dengan satu set pelatihan: 24.800 baris 38 mata pelajaran dan satu set pengujian: 6200 baris 38 mata pelajaran
Jawaban:
Saya pikir jawaban Matthew Gunn benar, tetapi bagi saya sepertinya CV "bijaksana" dapat mencakup dua konsep berbeda:
Rekaman dipartisi secara acak menjadi lipatan, terlepas dari subjek atau waktu.
Catatan dipartisi menjadi lipatan berbasis waktu, tanpa lipatan yang digunakan untuk pelatihan yang berisi data dari setelah awal lipatan tes.
Dalam kasus pertama, sifat rangkaian waktu dari data Anda sedang dikompromikan, karena set pelatihan Anda dapat menyertakan data dari sebelum dan sesudah set tes Anda. Prinsip Train / Test adalah bahwa data Pelatihan mewakili data yang diketahui hingga saat ini, dan Data uji mewakili data yang belum terlihat (mungkin secara harfiah dari masa depan).
Mungkin autokorelasi seri waktu mengkompromikan opsi # 2. Mungkin elemen waktu dari model ini tidak terlalu penting sehingga pengamatan "masa lalu" dan "masa depan" cenderung sama. Dalam kasus ini, tidak ada yang # 1 atau # 2 adalah cara untuk pergi.
Jika hanya ada musim dan bukan tren, sepertinya tidak apa-apa untuk memasukkan "masa depan" dalam pelatihan untuk beberapa mata pelajaran untuk memprediksi mata pelajaran baru (yang akan dipengaruhi oleh musim yang sama). Jika ada tren, pelatihan di masa depan harus mempelajari sesuatu tentang masa depan yang Anda benar-benar tidak akan tahu ketika menggunakan model dalam produksi.
Dalam contoh OP, sepertinya subjek-bijaksana itu baik. Tetapi jika tren dan kekhawatiran deret waktu adalah bagian dari model, saya akan mencoba menggunakan partisi berdasarkan subjek dan waktu sehingga Anda melatih satu set subjek sebelum titik waktu tertentu, kemudian menguji subjek lain setelah titik waktu tertentu.
sumber
Sebuah kritis perbedaan adalah apakah Anda ingin:
Kasus yang jauh lebih umum adalah nomor kasus (1). Misalnya, seberapa baik Anda memprediksi serangan jantung untuk seseorang yang datang ke ruang gawat darurat? Dan jika Anda dalam kasus (1), Anda hampir pasti harus melakukan (a) validasi silang subjek-bijaksana daripada (b) cross-validasi record-wise. Melakukan validasi catatan-bijaksana jika (1) kemungkinan akan menyebabkan perkiraan kinerja palsu yang terlalu tinggi pada subjek baru.
Saya tidak benar-benar mengerti apa yang Anda coba lakukan (dan mungkin ini adalah belajar mandiri sehingga pertanyaannya tidak sepenuhnya realistis). Saya tidak tahu kasus apa yang Anda hadapi. Jika Anda berada dalam kasus yang kurang umum (2), validasi catatan yang bijaksana mungkin ok.
Tema umum dalam statistik adalah untuk berpikir dengan hati-hati tentang apa yang independen dan apa yang berkorelasi. Secara umum, pengamatan independen cenderung menjadi subjek yang berbeda. Jika Anda ingin memprediksi kinerja pada subjek baru , Anda harus menguji pada subjek yang tidak Anda latih!
Mengapa validasi silang subjek-bijaksana daripada catatan-bijaksana?
Dalam pengaturan yang khas, pengamatan berulang dari individu yang sama berkorelasi satu sama lain bahkan setelah pengkondisian fitur. Oleh karena itu dengan validasi silang catatan-bijaksana, set tes Anda tidak terlepas dari set pelatihan Anda! Dalam kasus ekstrim korelasi sempurna, Anda akan memiliki pengamatan yang sama persis di set pelatihan dan set tes! Anda akan berlatih di set tes! Kinerja yang diukur dalam validasi silang tidak akan menjadi prediksi kinerja pada subjek baru.
Sebagai contoh, makalah ini baru-baru ini panggilan validasi lintas catatan bijaksana, `` Voodoo Machine Learning. "
Apa yang harus dilakukan dengan begitu sedikit subjek ...
Mungkin beberapa komentator yang lebih berpengalaman dengan cross-validation daripada saya bisa berpadu, tetapi bagi saya, ini sepertinya kandidat yang mungkin untuk (alias tinggalkan satu validasi silang)?k=n
Untuk memaksimalkan data untuk pelatihan, sesuatu yang bisa Anda lakukan adalah meninggalkan satu subjek untuk validasi silang. Setiap iterasi, uji pada subjek bertahan yang berbeda dan latih semua yang lain.
Jika semua subjek sangat berbeda, Anda mungkin secara efektif mendekati dan mungkin ingin memasukkan sebanyak mungkin subjek independen dalam rangkaian pelatihan.n=38
sumber
Itu benar-benar tergantung pada bagaimana Anda membayangkan pengaturan yang ingin Anda tiru dengan kereta / test split. Untuk membuat segala sesuatunya konkret, katakan setiap baris menggambarkan kualitas tidur suatu subjek dalam satu malam.
Mungkin saja, di masa depan, setiap subjek akan terlebih dahulu datang ke laboratorium tidur, dan memberi Anda kualitas tidur selama beberapa malam. Setelah itu, Anda perlu memperkirakan kualitas tidur malam berikutnya untuk mata pelajaran ini . Dalam hal ini, Anda akan menggunakan opsi Anda b). Di
sklearn
, Anda bisa menggunakansklearn.model_selection.StratifiedShuffleSplit
Mungkin saja, di masa mendatang, beberapa subjek pertama-tama akan datang ke laboratorium tidur, dan memberi Anda kualitas tidur selama beberapa malam. Setelah itu, Anda perlu memprediksi kualitas tidur malam berikutnya untuk mata pelajaran lain . Dalam hal ini, Anda akan menggunakan opsi Anda a). Di
sklearn
, Anda bisa menggunakansklearn.cross_validation.LeavePLabelOut
sumber
Untuk berpadu, saya berasumsi bahwa aplikasi ini untuk memprediksi subjek yang tidak dikenal. Itu berarti (terlepas dari apakah Anda memiliki deret waktu atau pengukuran berulang yang secara inheren tidak berurutan) bahwa pemisahan perlu dilakukan sehingga subjek yang tidak diketahui diuji => pemisahan a)
Mengingat Anda hanya memiliki 38 subjek, Anda harus mempertimbangkan validasi resampling. Dari pengalaman saya bekerja dengan ukuran sampel yang sama kecil (meskipun lebih banyak fitur), berikut adalah beberapa rekomendasi singkatnya:
Pergi untuk keluar-dari-bootstrap bijaksana atau iterasi lintas validasi. Mereka memungkinkan untuk menilai stabilitas model Anda yang sangat penting dalam masalah ukuran sampel kecil. Hasil bahkan dapat digunakan untuk model agregat jika ketidakstabilan adalah masalah.
Jangan tidak melakukan cuti-satu-subjek-out. Itu tidak memungkinkan untuk mengukur stabilitas model, atau untuk menguranginya. Selain itu, ada situasi di mana ia cenderung bias pesimistis besar karena ukuran sampel yang kecil (berlawanan dengan bias pesimistis minimal yang diharapkan).
Jika Anda menggunakan angka klasifikasi tipikal seperti akurasi, sensitivitas, spesifisitas, dll. Dan tugasnya adalah mengklasifikasikan subjek dengan benar: berhati-hatilah bahwa masalah krusial adalah mengukur kinerja karena ketidakpastian hasil pengujian tergantung pada angka absolut kasus uji. Sebagai contoh, mengamati 17 prediksi yang benar dari 17 subjek yang benar-benar positif sesuai dengan interval kepercayaan 95% untuk sensitivitas mulai dari sekitar 80% hingga 100%.
Dengan kata lain, Anda tidak akan dapat melakukan optimasi model berbasis data berdasarkan itu.
Ini juga berarti bahwa Anda tidak perlu menyiapkan pemisahan tiga set (validasi silang bersarang), karena Anda akan menyia-nyiakan sumber daya untuk perbandingan yang tidak bermakna secara statistik di sini - pengoptimalan Anda hampir dijamin gagal (meskipun Anda mungkin tidak memperhatikan bahwa jika Anda jangan periksa stabilitas).
Perhitungan yang sama untuk interval kepercayaan binomial untuk 5 (3) tes / optimisasi / validasi subjek yang diusulkan menghasilkan 95% ci untuk semua yang benar berkisar hingga 50% (30%) jadi berdasarkan hasil tes sempurna interval kepercayaan Anda masih akan mencakup 50 / 50 menebak!
Beberapa makalah kami menulis tentang mata pelajaran ini:
Beleites, C .; Baumgartner, R .; Bowman, C.; Somorjai, R .; Steiner, G .; Salzer, R. & Sowa, MG Pengurangan varians dalam memperkirakan kesalahan klasifikasi menggunakan dataset jarang, Chemom Intell Lab Syst, 79, 91 - 100 (2005).
Beleites, C. & Salzer, R .: Menilai dan meningkatkan stabilitas model kemometrik dalam situasi ukuran sampel kecil, Anal Bioanal Chem, 390, 1261-1271 (2008). DOI: 10.1007 / s00216-007-1818-6
Beleites, C. dan Neugebauer, U. dan Bocklitz, T. dan Krafft, C. dan Popp, J .: Perencanaan ukuran sampel untuk model klasifikasi. Anal Chim Acta, 2013, 760, 25-33. DOI: 10.1016 / j.aca.2012.11.007
naskah diterima di arXiv: 1211.1323
sumber