Apakah ada perpustakaan yang tersedia untuk metode seperti CART menggunakan prediktor & respons jarang?

11

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 Matrixpaket 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!

David J. Harris
sumber
2
Bukan R, tetapi Python scikits.learn memiliki beberapa dukungan yang berkembang untuk matriks yang jarang.
chl
@ ch1 terima kasih. Sepertinya mereka belum menambahkan metode pohon. Seseorang sedang mengerjakan implementasi , tetapi saya tidak yakin apakah itu akan dapat menggunakan data yang jarang. Saya pasti akan mengingat metode SVM yang jarang dalam pikiran!
David J. Harris
Ketika Anda mengatakan "seperti CART", apakah Anda secara khusus menginginkan pohon keputusan atau model prediksi apa pun?
Michael McGowan
@Michael - Saya ingin pohon, karena saya akan memberi mereka makan untuk meningkatkan prosedur dan mereka memiliki varian yang tinggi.
David J. Harris
2
Saya tidak tahu tentang model pohon, tetapi glmnetdan e1071::svmkeduanya mendukung Matrixbenda jarang . GAMboostdan GLMboost(dari paket GAMboost) juga.
Zach

Jawaban:

2

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).

Ryan Bressler
sumber
1

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
Terima kasih balasannya. Downsampling terdengar seperti ide yang menarik. Saat ini, aku turun bobot beberapa aspek dari data karena alasan lain, tapi itu bisa menjadi ide yang baik juga. Tetapi mengapa Anda mengatakan kode untuk ini tidak mungkin ada? Saya ditautkan ke sebuah makalah dari 12 tahun yang lalu yang tampaknya telah mengatasi masalah yang sama.
David J. Harris
@ David Singkatnya, saya merasa ini tidak masuk akal - ini adalah masalah "pertanyaan yang salah". Sparseness menunjukkan bahwa data berada dalam bentuk yang sangat suboptimal, dan pendekatan yang jauh lebih efektif adalah dengan mencoba mengubahnya. Makalah yang Anda tautkan merupakan masalah lain.
Aku takut tidak mengerti apa yang kamu katakan. Mengubah bentuk data adalah persis apa yang ingin saya lakukan, dan sejauh yang saya tahu, itulah yang dilakukan makalah ini. Mereka tidak ingin membuat daftar semua fitur yang tidak dimiliki oleh masing-masing bahan kimia, hanya fitur yang dimilikinya. Ini masuk akal dalam situasi mereka karena sebagian besar bahan kimia tidak memiliki sebagian besar fitur, seperti dalam kasus saya. Jadi mereka mengkonversi fitur mereka ke matriks jarang dan kemudian algoritma partisi rekursif mereka pada matriks jarang secara langsung. Saya mencari cara sumber terbuka untuk melakukan hal yang sama dengan data saya. Apa yang saya lewatkan? Terima kasih
David J. Harris
@ David, saya pikir poin mbq adalah bahwa pengkodean 1-of-n yang besar (misalnya situs web / pelanggan, dll.) Atau daftar bahan kimia yang ada) sering merupakan representasi yang sangat buruk untuk pembelajaran. Anda lebih baik berganti ke "fitur", misalnya untuk situs web mungkin kategorisasi: toko / berita / blog olahraga / teknologi dll.
seanv507
1

Sudahkah Anda melihat caretpaket dalam R? Ini menyediakan antarmuka yang membuatnya lebih mudah untuk menggunakan berbagai model, termasuk beberapa untuk partisi rekursif seperti rpart, ctreedan ctree2.

paul
sumber
Saya kenal dengan paket-paket / fungsi-fungsi itu, dan tidak ada yang bekerja pada data jarang sejauh yang saya tahu.
David J. Harris
1
dukungan caret untuk Matrixobjek akan menjadi luar biasa, tetapi saat ini tidak ada. Semuanya dipaksa untuk data.frame.
Zach
Anda dapat mencoba mengirim email kepada pengembang dan bertanya tentang hal ini. Saya mengirim email kepadanya tentang sesuatu yang lain dan dia memberikan jawaban yang bermanfaat - max.kuhn [at] pfizer.com
paul