Чи можуть випадкові ліси зробити набагато краще, ніж 2,8% помилки тесту на MNIST?


10

Я не знайшов жодної літератури щодо застосування випадкових лісів до MNIST, CIFAR, STL-10 тощо. Тому я подумав, що спробував би їх з інваріантним перестановкою MNIST.

У R я спробував:

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

Це тривало протягом 2 годин і отримало 2,8% тестової помилки.

Я також спробував scikit-learn , с

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

Через 70 хвилин я отримав 2,9% тестової помилки, але замість n_estimators = 200 я отримав 2,8% -ву помилку тесту лише через 7 хвилин.

З OpenCV я спробував

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

Це тривало 6,5 хвилин, і використання rfдля прогнозування дало помилку тесту в 15%. Я не знаю, скільки дерев воно навчило, оскільки, схоже, їхня прив'язка Python для випадкових лісів ігнорує цей paramsаргумент, принаймні у версії 2.3.1. Я також не міг зрозуміти, як дати зрозуміти OpenCV, що я хочу вирішити проблему класифікації, а не регресію - я маю сумніви, тому що заміна astype('int')на astype('float32')дає такий же результат.

У нейромережах для еталону інваріантної перестановки MNIST найсучаснішим є похибка тесту на 0,8%, хоча навчання, можливо, займе більше 2 годин на одному процесорі.

Чи можна зробити набагато краще, ніж 2,8% тестової помилки на MNIST за допомогою випадкових лісів? Я подумав, що загальний консенсус полягав у тому, що випадкові ліси зазвичай принаймні такі ж хороші, як і SVM ядра, які, на мою думку, можуть отримати помилку тесту на 1,4%.


5
пам'ятайте, що випадковий ліс одночасно приймає змінну 1 рішення (тобто піксель). Тож це не дуже добре для обробки зображень -raw. Вам краще спочатку скористатися якоюсь
формою

Саме те, що сказав seanv507. OpenCV має безліч функцій для вилучення функцій, які можуть виявити досить корисні пояснювальні змінні для випадкових лісів, з якими можна працювати.
JEquihua

3
Я подумав, що загальний консенсус полягав у тому, що випадкові ліси зазвичай принаймні такі ж хороші, як і SVM ядра . Такого консенсусу немає.
Марк Клайсен

Відповіді:


15

Чи можна зробити набагато краще, ніж 2,8% тестової помилки на MNIST за допомогою випадкових лісів?

Напевно, так. Але це не означає, що ви будете використовувати ті самі функції, які ви отримуєте за замовчуванням. Дерева рішень, як правило, не працюють добре на таких високих розмірах, як ця, оскільки ви розділяєте лише одну функцію за один раз. Випадковий ліс розширює корисність дерев рішень, але вони все ще мають те саме питання. Побиття 2,8% за допомогою РФ, ймовірно, вимагатиме від вас попередньої обробки та перетворення функцій у більш корисну підмножину.

Нейрові мережі та SVM-файли ядра неявно роблять певну трансформацію / інженерію функцій. Тож у певному сенсі вражає те, що Random Forest стає пристойно близьким без зайвих робіт (справді справжньою причиною РФ стала популярною - це було дурно легко отримати "досить хороші" результати).

Я подумав, що загальний консенсус полягав у тому, що випадкові ліси зазвичай принаймні такі ж хороші, як і SVM ядра

Такого консенсусу немає. Вони часто мають схожі результати за точністю - але це дуже різні алгоритми з різними сильними / слабкими сторонами. У багатьох проблемах точність схожа, в інших SVM виграють з хорошою відривкою, на деяких РФ виграє з хорошою відривкою.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.