Implementasi randomForest tidak memungkinkan pengambilan sampel melebihi jumlah pengamatan, bahkan ketika pengambilan sampel dengan penggantian. Kenapa ini?
Bekerja dengan baik:
rf <- randomForest(Species ~ ., iris, sampsize=c(1, 1, 1), replace=TRUE)
rf <- randomForest(Species ~ ., iris, sampsize=3, replace=TRUE)
Apa yang ingin saya lakukan:
rf <- randomForest(Species ~ ., iris, sampsize=c(51, 1, 1), replace=TRUE)
Error in randomForest.default(m, y, ...) :
sampsize can not be larger than class frequency
Kesalahan serupa tanpa sampel bertingkat:
rf <- randomForest(Species ~ ., iris, sampsize=151, replace=TRUE)
Error in randomForest.default(m, y, ...) : sampsize too large
Karena saya mengharapkan metode untuk mengambil sampel bootstrap ketika diberi ganti = BENAR dalam kedua kasus, saya tidak mengharapkan batas ini.
Tujuan saya adalah untuk menggunakan ini dengan opsi pengambilan sampel bertingkat, untuk menarik sampel yang cukup besar dari kelas yang relatif jarang.
Jawaban:
Ini tidak menjawab mengapa , tetapi untuk menyiasatinya, seseorang dapat menduplikasi data untuk kelas langka dalam data pelatihan, dan mengambil sampel hasil yang distratifikasi.
Dua kelemahan dari pendekatan ini, dibandingkan dengan oversampling "alami":
tetapi itu akan memungkinkan seseorang untuk membangun hutan dengan rasio kelas yang diinginkan.
sumber
Saya memiliki pertanyaan yang sama persis dan menemukan ini di changelog untuk randomForest :
Perubahan 4.1-0:
Pengaturan ganti = TRUE secara manual juga sepertinya tidak mengesampingkan ini.
sumber
rf <- randomForest(Species ~ ., iris, sampsize=c(51, 1, 1), strata=iris$Species, replace=TRUE)