Alternatif untuk pohon klasifikasi, dengan kinerja prediksi yang lebih baik (misalnya: CV)?

23

Saya mencari alternatif untuk Pohon Klasifikasi yang mungkin menghasilkan daya prediksi yang lebih baik.

Data yang saya hadapi memiliki faktor untuk variabel penjelas dan penjelas.

Saya ingat pernah menemukan hutan acak dan jaringan saraf dalam konteks ini, meskipun tidak pernah mencobanya sebelumnya, apakah ada kandidat lain yang baik untuk tugas pemodelan seperti itu (dalam R, tentu saja)?

Tal Galili
sumber
5
Jangan repot-repot dengan jaringan saraf, ini adalah teknologi yang usang.
1
@ mbq apakah Anda masih mendukung pernyataan ini?
rhombidodecahedron
@rhombidodecahedron Tentu, bermain dengan NNs dari 2010 dan Anda akan setuju. Selain itu, saya ragu bahwa setiap model DL akan membawa apa pun ke meja dengan data (mungkin) ukuran kecil tersebut.

Jawaban:

25

Saya pikir akan sangat berharga untuk mencoba Random Forests ( randomForest ); beberapa referensi diberikan sebagai jawaban atas pertanyaan terkait: Pemilihan fitur untuk model "final" saat melakukan validasi silang dalam pembelajaran mesin ; Bisakah model CART dibuat kuat? . Boosting / bagging membuat mereka lebih stabil daripada satu CART yang dikenal sangat sensitif terhadap gangguan kecil. Beberapa penulis berpendapat bahwa itu dilakukan serta dihukum SVM atau Gradient Boosting Machines (lihat, misalnya Cutler et al., 2009). Saya pikir mereka pasti mengungguli NNs.

Boulesteix dan Strobl memberikan gambaran yang bagus tentang beberapa pengklasifikasi dalam pemilihan pengklasifikasi Optimal dan bias negatif dalam estimasi tingkat kesalahan: studi empiris pada prediksi dimensi tinggi (BMC MRM 2009 9: 85). Saya pernah mendengar tentang penelitian lain yang baik pada pertemuan IV EAM , yang harus ditinjau dalam Statistik dalam Kedokteran ,

João Maroco , Dina Silva, Manuela Guerreiro, Alexandre de Mendonça. Apakah Hutan Acak Mengungguli Jaringan Saraf Tiruan, Mendukung Mesin Vektor, dan pengklasifikasi Analisis Diskriminan? Sebuah studi kasus dalam evolusi ke demensia pada pasien usia lanjut dengan keluhan kognitif

Saya juga menyukai paket caret : ia didokumentasikan dengan baik dan memungkinkan untuk membandingkan akurasi prediktif dari pengklasifikasi yang berbeda pada set data yang sama. Ini menangani pengelolaan sampel pelatihan / uji, akurasi komputasi, dll dalam beberapa fungsi yang mudah digunakan.

The glmnet paket, dari Friedman dan coll., Alat dihukum GLM (lihat review di Journal of Software statistik ), sehingga Anda tetap dalam kerangka pemodelan terkenal.

Jika tidak, Anda juga dapat mencari pengklasifikasi berdasarkan aturan asosiasi (lihat Tampilan Tugas CRAN pada Pembelajaran Mesin atau 10 algoritma teratas dalam penambangan data untuk pengenalan lembut pada beberapa di antaranya).

Saya ingin menyebutkan pendekatan lain yang menarik yang saya rencanakan untuk diterapkan kembali dalam R (sebenarnya, ini adalah kode Matlab) yang merupakan Analisis Korespondensi Diskriminan dari Hervé Abdi. Meskipun awalnya dikembangkan untuk mengatasi studi sampel kecil dengan banyak variabel penjelas (akhirnya dikelompokkan menjadi blok yang koheren), tampaknya secara efisien menggabungkan DA klasik dengan teknik reduksi data.

Referensi

  1. Cutler, A., Cutler, DR, dan Stevens, JR (2009). Metode Berbasis Pohon , dalam Analisis Data Dimensi Tinggi dalam Penelitian Kanker , Li, X. dan Xu, R. (eds.), Hlm. 83-101, Springer.
  2. Saeys, Y., Inza, I., dan Larrañaga, P. (2007). Tinjauan teknik pemilihan fitur dalam bioinformatika . Bioinformatika, 23 (19): 2507-2517.
chl
sumber
2
+1 Jawaban bagus. Saya juga setuju dengan rekomendasi tanda sisipan.
Shane
12

Penting untuk diingat bahwa tidak ada satu algoritma yang selalu lebih baik daripada yang lain. Sebagaimana dinyatakan oleh Wolpert dan Macready, "dua algoritma apa pun setara ketika kinerjanya dirata-rata untuk semua masalah yang mungkin terjadi." (Lihat Wikipedia untuk detailnya.)

Untuk aplikasi yang diberikan, yang "terbaik" umumnya adalah yang paling dekat dengan aplikasi Anda dalam hal asumsi yang dibuatnya, jenis data yang dapat ditangani, hipotesis yang dapat diwakilinya, dan sebagainya.

Jadi, ide yang bagus untuk mengkarakterisasi data Anda sesuai dengan kriteria seperti:

  • Apakah saya memiliki set data yang sangat besar atau yang sederhana?
  • Apakah dimensionalitasnya tinggi?
  • Apakah variabel numerik (kontinu / diskrit) atau simbolis, atau campuran, dan / atau dapatkah mereka diubah jika perlu?
  • Apakah variabel cenderung mandiri atau cukup tergantung?
  • Apakah mungkin ada variabel yang redundan, berisik, atau tidak relevan?
  • Apakah saya ingin dapat memeriksa model yang dihasilkan dan mencoba memahaminya?

Dengan menjawab ini, Anda dapat menghilangkan beberapa algoritme dan mengidentifikasi yang lainnya berpotensi relevan, dan kemudian mungkin berakhir dengan serangkaian kecil metode kandidat yang telah Anda pilih secara cerdas yang sepertinya berguna.

Maaf tidak memberi Anda jawaban sederhana, tapi saya harap ini membantu!

Penyangga Irlandia
sumber
2
+1 Suka kutipan. ("dua algoritma apa pun setara ketika kinerjanya dirata-rata untuk semua masalah yang mungkin terjadi.")
Assad Ebrahim
8

Untuk klasifikasi multi-kelas, mesin vektor dukungan juga merupakan pilihan yang baik. Saya biasanya menggunakan paket R kernlab untuk ini.

Lihat kertas JSS berikut untuk diskusi yang baik: http://www.jstatsoft.org/v15/i09/

Shane
sumber
@Tal Berikut ini adalah tinjauan SVM vs. RF yang adil (atau saya pikir begitu) : Perbandingan komprehensif hutan acak dan mesin vektor dukungan untuk klasifikasi kanker berbasis mikro , j.mp/ab7U8V . Saya juga lebih memilih kernlabuntuk e1071.
chl
2
@ chl Saya tidak suka makalah ini karena dibuat dari perspektif pembelajaran SVM - membuat satu pengulangan algoritma stokastik (RF) hanyalah sampah; juga lampiran 2 menunjukkan betapa buruknya menerapkan alur kerja SVM ke RF. Namun saya setuju bahwa hampir selalu SVM dapat disetel untuk mengungguli RF karena trik kernel (yang tidak dimiliki RF biasa, sementara itu bukan berarti tidak dapat memilikinya secara umum), tetapi dengan upaya optimasi yang tumbuh secara eksponensial.
@mbq Memang, ini poin yang bagus.
chl
3

Seperti yang telah disebutkan Hutan Acak adalah "peningkatan" alami dan, belakangan ini, SVM umumnya merupakan teknik yang direkomendasikan untuk digunakan.

Saya ingin menambahkan bahwa lebih sering daripada tidak beralih ke SVM menghasilkan hasil yang sangat mengecewakan. Masalahnya, sementara teknik seperti pohon acak hampir sepele untuk digunakan, SVM agak rumit.

Saya menemukan makalah ini sangat berharga ketika saya menggunakan SVM untuk pertama kalinya (Panduan Praktis untuk Mendukung Klasifikasi Vektor) http://www.csie.ntu.edu.tw/~cjlin/papers/guide/guide.pdf

Dalam R Anda dapat menggunakan paket e1071 untuk SVM, itu bertautan dengan standar de facto (setidaknya dalam perangkat lunak bebas!) LibSVM.

Dr G
sumber
2
kernlab juga menggunakan libsvm untuk optimisasi, jadi tidak ada perbedaan besar dalam hal itu (walaupun jauh lebih fleksibel).
Shane