Saya memiliki satu set data dengan N ~ 5000 dan sekitar 1/2 hilang pada setidaknya satu variabel penting. Metode analitik utama adalah bahaya proporsional Cox.
Saya berencana untuk menggunakan beberapa imputasi. Saya juga akan membagi menjadi set kereta dan tes.
Haruskah saya membagi data dan kemudian menghubungkannya secara terpisah, atau menghubungkan dan kemudian membagi?
Jika hal itu penting, saya akan menggunakan PROC MI
di SAS
.
cross-validation
survival
multiple-imputation
train
Peter Flom - Pasang kembali Monica
sumber
sumber
Jawaban:
Anda harus berpisah sebelum pra-pemrosesan atau imputasi.
Pembagian antara pelatihan dan set tes adalah upaya untuk mereplikasi situasi di mana Anda memiliki informasi masa lalu dan sedang membangun model yang akan Anda uji pada informasi yang belum diketahui di masa mendatang: set pelatihan menggantikan masa lalu dan set tes mengambil tempat masa depan, sehingga Anda hanya bisa menguji model terlatih Anda sekali.
Dengan mengingat analogi masa lalu / masa depan, ini berarti apa pun yang Anda lakukan untuk melakukan pra-proses atau memproses data Anda, seperti memasukkan nilai-nilai yang hilang, yang harus Anda lakukan pada pelatihan yang ditetapkan saja. Anda kemudian dapat mengingat apa yang Anda lakukan pada set pelatihan Anda jika set tes Anda juga perlu pra-pemrosesan atau imputasi, sehingga Anda melakukannya dengan cara yang sama pada kedua set.
Ditambahkan dari komentar: jika Anda menggunakan data uji untuk mempengaruhi data pelatihan, maka data uji digunakan untuk membangun model Anda, sehingga tidak lagi menjadi data uji dan tidak akan memberikan uji yang adil terhadap model Anda. Anda berisiko overfitting, dan itu untuk mencegah ini bahwa Anda memisahkan data tes di tempat pertama
sumber
Saya pikir Anda sebaiknya berpisah sebelum melakukan imputasi. Misalnya, Anda mungkin ingin memasukkan nilai yang hilang dengan rata-rata kolom. Dalam hal ini, jika Anda menyalahkan pertama dengan set data kereta + yang valid dan membelah selanjutnya, maka Anda telah menggunakan set data validasi sebelum Anda membangun model Anda, yang merupakan bagaimana masalah kebocoran data muncul dalam gambar.
Tetapi Anda mungkin bertanya, jika saya menyalahkan setelah pemisahan, mungkin terlalu membosankan ketika saya perlu melakukan validasi silang. Saran saya untuk itu adalah menggunakan pipa sklearn. Ini benar-benar menyederhanakan kode Anda, dan mengurangi kemungkinan melakukan kesalahan. Lihat Saluran Pipa
sumber
Hanya untuk menambahkan di atas saya juga akan lebih suka spliting sebelum memasukkan atau jenis pra-pemrosesan. Tidak ada yang Anda lakukan dengan data pelatihan yang harus diinformasikan oleh data tes (analoginya adalah bahwa masa depan seharusnya tidak mempengaruhi masa lalu). Anda kemudian dapat mengingat apa yang Anda lakukan pada set pelatihan Anda jika set tes Anda juga perlu pra-pemrosesan atau imputasi, sehingga Anda melakukannya dengan cara yang sama pada kedua set (analoginya adalah Anda dapat menggunakan masa lalu untuk membantu memprediksi masa depan) .
Jika Anda menggunakan data uji untuk mempengaruhi data pelatihan dengan cara apa pun, maka data uji digunakan untuk membangun model Anda, sehingga tidak lagi menjadi data uji dan tidak akan memberikan uji yang adil terhadap model Anda. Anda berisiko pas, dan itu untuk mencegah ini bahwa Anda memisahkan data tes di tempat pertama!
Saya pikir paket caret di r sangat berguna dalam pengaturan itu. Saya menemukan secara spesifik bahwa posting itu sangat membantu https://topepo.github.io/caret/model-training-and-tuning.html
sumber