Saya bekerja dengan beberapa set data besar menggunakan paket gbm di R. Baik matriks prediktor saya dan vektor respons saya cukup jarang (yaitu sebagian besar entri adalah nol). Saya berharap untuk membangun pohon keputusan menggunakan algoritma yang mengambil keuntungan dari jarangnya ini, seperti yang dilakukan di sini ). Dalam makalah itu, seperti dalam situasi saya, sebagian besar item hanya memiliki sedikit dari banyak fitur yang mungkin, sehingga mereka dapat menghindari banyak perhitungan yang terbuang dengan mengasumsikan bahwa item mereka tidak memiliki fitur yang diberikan kecuali data secara eksplisit mengatakan sebaliknya. Harapan saya adalah bahwa saya bisa mendapatkan speedup serupa dengan menggunakan algoritma semacam ini (dan kemudian membungkus algoritma peningkatan di sekitarnya untuk meningkatkan akurasi prediksi saya).
Karena mereka sepertinya tidak mempublikasikan kode mereka, saya bertanya-tanya apakah ada paket open source atau pustaka (dalam bahasa apa pun) yang dioptimalkan untuk kasus ini. Idealnya, saya ingin sesuatu yang bisa mengambil matriks jarang langsung dari Matrix
paket R , tapi saya akan mengambil apa yang bisa saya dapatkan.
Saya telah melihat sekeliling dan sepertinya hal seperti ini seharusnya ada di luar sana:
Ahli kimia tampaknya banyak mengalami masalah ini (makalah yang saya tautkan di atas adalah tentang belajar menemukan senyawa obat baru), tetapi implementasinya yang dapat saya temukan bersifat eksklusif atau sangat khusus untuk analisis kimia. Mungkin saja salah satu dari mereka bisa dirancang ulang.
Klasifikasi dokumen juga tampaknya menjadi area di mana pembelajaran dari ruang fitur jarang berguna (sebagian besar dokumen tidak mengandung banyak kata). Misalnya, ada referensi miring untuk implementasi jarang dari C4.5 (algoritma seperti CART) dalam makalah ini , tetapi tidak ada kode.
Menurut mailing list , WEKA dapat menerima data yang jarang, tetapi tidak seperti metode dalam makalah yang saya tautkan di atas, WEKA tidak dioptimalkan untuk benar-benar memanfaatkannya dalam hal menghindari siklus CPU yang terbuang.
Terima kasih sebelumnya!
sumber
glmnet
dane1071::svm
keduanya mendukungMatrix
benda jarang .GAMboost
danGLMboost
(dari paketGAMboost
) juga.Jawaban:
Saya ingin melihat patokan implementasi jarang mereka terhadap implementasi CART modern yang digunakan dalam rf. Makalah itu cukup tua dalam hal kemajuan di bidang ini dan saya akan terkejut jika masih memberikan kecepatan yang signifikan.
Sebagian alasannya adalah bahwa menggunakan algoritma pengurutan yang pintar seperti Quicksort dalam pencarian terpisah dapat memberikan kinerja mendekati O (n) untuk fitur hampir konstan (termasuk yang jarang). Implementasi cepat juga melacak ketika fitur telah menjadi konstan dalam cabang pohon dan seharusnya tidak lagi diperiksa. Representasi fitur yang padat memberikan tampilan cepat dalam mode yang mudah digunakan cpu cache sehingga Anda akan membutuhkan representasi yang sangat pintar untuk menang dalam siklus cpu.
Ini dibahas di sini , di sini , di sini .
Saya benar-benar menerapkan representasi data yang jarang dari data pada satu titik dalam paket rf saya CloudForest tetapi ternyata lebih lambat daripada representasi data yang padat dan meninggalkannya meskipun itu memang memberikan beberapa keunggulan memori.
Rekomendasi saya akan mencoba scikit belajar atau cloudforest dibangun dalam meningkatkan hal-hal dan melihat apakah itu cukup cepat. Keduanya dapat diperpanjang dengan kriteria peningkatan kustom jika Anda ingin melakukan sesuatu yang tidak standar. (Saya sebenarnya menulis cloudforest awalnya untuk bekerja dengan set data genetik besar yang sangat mirip dengan apa yang Anda gambarkan).
sumber
Mungkin ada sedikit peluang untuk kode apa pun yang akan mengambil keuntungan dari itu - Anda lebih suka menulis sesuatu sendiri.
Namun, opsi lainnya adalah mengubah data Anda untuk mengurangi ukuran data Anda menghapus informasi yang berlebihan. Sulit untuk mengatakan bagaimana tanpa informasi tentang data Anda, tetapi mungkin Anda dapat menggabungkan beberapa fitur yang Anda tahu tidak tumpang tindih, bagian PCA atau mengubah representasi beberapa deskriptor? Juga, jika Anda mengatakan respons Anda juga jarang, mungkin masuk akal untuk menurunkan objek dengan 0 sebagai respons?
sumber
Sudahkah Anda melihat
caret
paket dalam R? Ini menyediakan antarmuka yang membuatnya lebih mudah untuk menggunakan berbagai model, termasuk beberapa untuk partisi rekursif sepertirpart
,ctree
danctree2
.sumber
Matrix
objek akan menjadi luar biasa, tetapi saat ini tidak ada. Semuanya dipaksa untuk data.frame.