Saya mencoba membuat prediksi menggunakan model hutan acak di R.
Namun saya mendapatkan kesalahan karena beberapa faktor memiliki nilai yang berbeda di set tes daripada di set pelatihan. Misalnya, suatu faktor Cat_2
memiliki nilai 34, 68, 76
, dll., Di set tes yang tidak muncul di set pelatihan. Sayangnya, saya tidak memiliki kendali atas set Tes ... Saya harus menggunakannya apa adanya.
Solusi saya satu-satunya adalah mengubah faktor yang bermasalah kembali ke nilai numerik, menggunakan as.numeric()
. Ini berfungsi tetapi saya tidak begitu puas, karena nilai-nilai ini adalah kode yang tidak memiliki arti numerik ...
Apakah Anda pikir akan ada solusi lain, untuk menjatuhkan nilai-nilai baru dari set tes? Tetapi tanpa menghapus semua nilai faktor lainnya (katakanlah nilai 1, 2, 14, 32
, dll.) Yang ada dalam pelatihan dan tes, dan berisi informasi yang berpotensi berguna untuk prediksi.
sumber
Jawaban:
Jika set tes memiliki banyak poin ini dengan nilai-nilai faktor baru maka saya tidak yakin apa pendekatan terbaiknya. Jika itu hanya beberapa poin Anda mungkin bisa lolos dengan sesuatu yang aneh seperti memperlakukan tingkat faktor yang salah sebagai data yang hilang dan menusuk mereka dengan pendekatan apa pun yang Anda inginkan. Implementasi R memiliki beberapa cara untuk menghubungkan data yang hilang, Anda hanya perlu mengatur level faktor ini menjadi NA untuk menunjukkan bahwa data tersebut hilang.
sumber
King dan Bonoit , cuplikan ini dapat berguna untuk menyelaraskan level:
Ini juga mencetak atribut mana yang diubah. Saya tidak menemukan cara yang baik untuk menulisnya dengan lebih elegan (dengan ldply atau sesuatu). Setiap tips sangat dihargai.
sumber
Berikut adalah beberapa kode yang saya tulis yang membahas tanggapan @ King di atas. Ini memperbaiki kesalahan:
sumber
Set tes dan pelatihan harus digabungkan sebagai satu set dan kemudian mengubah level set pelatihan. Kode saya adalah:
Ini berfungsi dalam setiap kasus di mana jumlah level dalam ujian lebih atau kurang dari pelatihan.
sumber
Saya memiliki solusi yang buruk ketika saya menggunakan randomForest di R. Ini mungkin tidak secara teoritis terdengar, tetapi hal itu berjalan.
atau sebaliknya. Pada dasarnya, itu hanya memberi tahu R bahwa itu adalah nilai yang valid hanya ada 0 kasus; jadi berhentilah menggangguku tentang kesalahan.
Saya tidak cukup pintar untuk mengkodekannya sehingga secara otomatis melakukan tindakan untuk semua fitur kategorikal. Kirimkan saya kode jika Anda tahu caranya ...
sumber
Saya yakin Anda sudah memikirkan hal ini jika ini masalahnya, tetapi jika set tes memiliki nilai aktual dan Anda menggunakan set tes untuk tujuan validasi silang, kemudian membelah ulang kerangka data menjadi pelatihan dan kerangka data uji di mana keduanya seimbang pada faktor-faktor ini akan menghindari masalah Anda. Metode ini dikenal sebagai validasi silang bertingkat .
sumber