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 rf
untuk prediksi memberikan kesalahan pengujian 15%. Saya tidak tahu berapa banyak pohon yang dilatihnya, karena pengikatan Python mereka untuk Random Forests tampaknya mengabaikan params
argumen, 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%.
Jawaban:
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").
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.
sumber