Dapatkah Random Forests melakukan jauh lebih baik daripada 2,8% test error pada MNIST?

10

Saya belum menemukan literatur tentang penerapan Hutan Acak untuk MNIST, CIFAR, STL-10, dll. Jadi saya pikir saya akan mencobanya sendiri dengan permutasi MNIST invarian .

Di R , saya mencoba:

randomForest(train$x, factor(train$y), test$x, factor(test$y), ntree=500)

Ini berjalan selama 2 jam dan mendapat 2,8% kesalahan pengujian.

Saya juga mencoba scikit-belajar , dengan

RandomForestClassifier(n_estimators=2000,
                       max_features="auto", 
                       max_depth=None)

Setelah 70 menit, saya mendapat kesalahan pengujian 2,9%, tetapi dengan n_estimators = 200 sebagai gantinya, saya mendapat kesalahan pengujian 2,8% setelah hanya 7 menit.

Dengan OpenCV , saya mencoba

rf.train(images.reshape(-1, 28**2), 
         cv2.CV_ROW_SAMPLE, 
         labels.astype('int'))

Ini berjalan selama 6,5 ​​menit, dan menggunakan rfuntuk prediksi memberikan kesalahan pengujian 15%. Saya tidak tahu berapa banyak pohon yang dilatihnya, karena pengikatan Python mereka untuk Random Forests tampaknya mengabaikan paramsargumen, setidaknya dalam versi 2.3.1. Saya juga tidak tahu bagaimana menjelaskan kepada OpenCV bahwa saya ingin menyelesaikan masalah klasifikasi, daripada regresi - saya ragu, karena mengganti astype('int')dengan astype('float32')memberikan hasil yang sama.

Dalam jaringan saraf , untuk tolok ukur MNIST permutasi-invarian , keadaan saat ini adalah 0,8% kesalahan tes, meskipun pelatihan mungkin akan memakan waktu lebih dari 2 jam pada satu CPU.

Apakah mungkin melakukan jauh lebih baik daripada 2,8% tes kesalahan pada MNIST menggunakan Hutan Acak? Saya berpikir bahwa konsensus umum adalah bahwa Random Forest biasanya setidaknya sama baiknya dengan kernel SVM, yang saya percaya bisa mendapatkan kesalahan uji 1,4%.

MaxB
sumber
5
ingat bahwa hutan acak mengambil variabel keputusan 1 (yaitu piksel) sekaligus. Jadi itu tidak terlalu bagus untuk pemrosesan gambar -raw. Anda lebih baik terlebih dahulu menggunakan semacam preprocessing (misalnya PCA, dll) untuk mengembangkan variabel keputusan yang lebih bermakna
seanv507
Persis apa yang dikatakan seanv507. OpenCV memiliki banyak fungsi untuk ekstraksi fitur yang dapat mendeteksi variabel penjelas yang cukup berguna untuk bekerja dengan hutan acak.
JEquihua
3
Saya berpikir bahwa konsensus umum adalah bahwa Random Forest biasanya setidaknya sama baiknya dengan kernel SVM . Tidak ada konsensus seperti itu.
Marc Claesen

Jawaban:

15

Apakah mungkin melakukan jauh lebih baik daripada 2,8% tes kesalahan pada MNIST menggunakan Hutan Acak?

Mungkin iya. Tapi itu tidak berarti Anda akan menggunakan fitur yang sama dengan yang Anda dapatkan secara default. Pohon keputusan secara umum tidak berfungsi dengan baik pada masalah dimensi tinggi seperti ini, karena Anda hanya membagi satu fitur pada satu waktu. Random Forest memperluas kegunaan Decision Trees, tetapi mereka masih memiliki masalah yang sama. Mengalahkan 2,8% dengan RF mungkin akan mengharuskan Anda untuk melakukan beberapa fitur pra-pemrosesan dan mengubah fitur menjadi subset yang lebih berguna.

Neural Networks dan Kernel SVM secara implisit melakukan beberapa transformasi / rekayasa fitur. Jadi dalam beberapa hal mengesankan bahwa Random Forest menjadi dekat dengan baik tanpa kerja ekstra (memang alasan RF menjadi populer adalah itu sangat mudah untuk mendapatkan hasil "cukup baik").

Saya berpikir bahwa konsensus umum adalah bahwa Random Forest biasanya setidaknya sama baiknya dengan kernel SVM

Tidak ada konsensus seperti itu. Mereka sering memiliki hasil yang serupa dalam hal akurasi - tetapi mereka adalah algoritma yang sangat berbeda dengan kekuatan / kelemahan yang berbeda. Pada banyak masalah ada akurasi yang serupa, pada yang lain SVM menang dengan margin yang baik, pada beberapa RF menang dengan margin yang baik.

Raff
sumber