Versi pendek: Saya mencari paket R yang dapat membangun pohon keputusan sedangkan setiap daun di pohon keputusan adalah model Regresi Linier penuh. AFAIK, perpustakaan rpart
membuat pohon keputusan di mana variabel dependen konstan di setiap daun. Apakah ada perpustakaan lain (atau rpart
pengaturan yang saya tidak sadari) yang dapat membangun pohon seperti itu?
Versi panjang: Saya mencari algoritme yang membangun pohon keputusan berdasarkan kumpulan data pelatihan. Setiap keputusan di pohon membagi data pelatihan yang ditetapkan menjadi dua bagian, sesuai dengan kondisi pada salah satu variabel independen. Akar pohon berisi kumpulan data lengkap, dan setiap item dalam kumpulan data terkandung persis dalam satu simpul daun.
Algoritmanya seperti ini:
- Mulailah dengan dataset lengkap, yang merupakan simpul akar dari pohon. Memilih node ini dan menyebutnya .
- Membuat model Regresi Linier pada data di .
- Jika dari model linier lebih tinggi dari beberapa ambang , maka kita selesai dengan , jadi tandai sebagai daun dan lompat ke langkah 5. N θ R 2 N N
- Coba putuskan secara acak, dan pilih yang menghasilkan di subnode:
- Pilih variabel independen acak , serta ambang acak .
- Keputusan membagi kumpulan data menjadi dua node baru, dan .
- Buat model Regresi Linier pada dan , dan hitung mereka (sebut saja dan ). ~ N R2 r ~ r
- Dari semua tupel , pilih yang dengan maksimum . Ini menghasilkan keputusan baru di pohon, dan memiliki dua subnode baru dan .( v i , θ i , r , ~ r ) m i n ( r , ~ r ) N N ~ N
- Kami memiliki selesai pengolahan . Pilih node yang belum diproses dan kembali ke langkah 2. Jika semua node telah diproses, algoritma berakhir.N
Ini akan secara rekursif membangun pohon keputusan yang membagi data menjadi bagian-bagian yang lebih kecil, dan menghitung Model Linier pada masing-masing bagian tersebut.
Langkah 3 adalah kondisi keluar, yang mencegah algoritma overfitting. Tentu saja, ada kemungkinan kondisi keluar lainnya:
- Keluar jika kedalaman di pohon di atas
- Keluar jika kumpulan data dalam lebih kecil dari
Apakah ada algoritma seperti itu dalam paket R?
sumber
Jawaban:
Walaupun mereka bekerja secara berbeda dari algoritma Anda, saya yakin Anda akan menemukan mob () dan FTtree menarik. Untuk massa Zeileis lihat http://cran.r-project.org/web/packages/party/vignettes/MOB.pdf Untuk FTtree, pohon fungsional Gama, implementasi tersedia di Weka dan dengan demikian RWeka. Lihat http://cran.r-project.org/web/packages/RWeka/index.html untuk detailnya.
sumber
Paket RWeka menawarkan banyak metode regresi. Di antara mereka, Anda dapat menemukan M5P (M5 Prime), yang merupakan model regresi berbasis pohon dengan persamaan linear dalam daun. Untuk detail lebih lanjut tentang metode M5, lihat publikasi .
Contoh kode adalah:
Jika Anda ingin menggunakan ensemble bagging dengan metode M5, coba sesuatu seperti:
Untuk melihat opsi kontrol untuk model M5P, coba:
Jika Anda ingin mengoptimalkan metode M5, ada solusi untuk itu dalam
caret
paket:sumber
Saya pikir ini menjawab versi singkat dari pertanyaan Anda:
Dari tampilan tugas Cran: Pembelajaran Mesin
sumber