Випадковий ліс - як поводитися з насадкою


41

У мене є інформація з інформатики, але я намагаюся навчити себе даним, вирішуючи проблеми в Інтернеті.

Я працюю над цією проблемою останні кілька тижнів (приблизно 900 рядків і 10 функцій). Спочатку я використовував логістичну регресію, але тепер перейшов на випадкові ліси. Коли я запускаю свою випадкову лісову модель за моїми навчальними даними, я отримую дійсно високі значення для аук (> 99%). Однак, коли я запускаю ту саму модель за тестовими даними, результати не такі хороші (Точність приблизно 77%). Це приводить мене до думки, що я перестала відповідати навчальним даним.

Які найкращі практики щодо запобігання надмірному розміщенню у випадкових лісах?

Я використовую r і rstudio як своє середовище розробки. Я використовую randomForestпакет і прийняв за замовчуванням всі параметри


4
Брейман стверджує, що РФ не є надмірною. stat.berkeley.edu/~breiman/RandomForests/cc_home.htm Якщо припущення, що він правильний, можливо, є якась невідповідність між вашим навчальним і тестовим набором?
Відновіть Моніку

Російська Федерація перешкоджає уникненню тестуючих даних, якщо оптимізувати параметр настройки
Brash Equilibrium

Я вважаю, що sampsize є повноцінним параметром настройки. stackoverflow.com/questions/34997134 / ...
Сорен Havelund Welling

Відповіді:


30

kk{5,10}


1
Дякую. Чи є підручник, який показує, як оптимізувати ці параметри?
Абхі

Вам потрібно буде зареєструватися на онлайн-курсах Стенфорда, що досить просто, але ось відео-посібник для цього на R: class.stanford.edu/courses/HumanitiesScience/StatLearning/…
Brash Equilibrium

Якщо я правильно це розумію, ми використовуємо перехресну перевірку, щоб визначити кількість особливостей, що входять у випадкову лісову модель, на відміну від кількості особливостей, які модель буде намагатися на кожному кроці. Правильно?
Абхі

4
Я б заперечував проти цієї відповіді: дві привабливі особливості РФ - це те, що їх важко переозброїти, а параметри за замовчуванням зазвичай досить хороші. Ця відповідь, мабуть, означає, що РФ чутливі до значень за замовчуванням, що трапляється рідко
Чарльз

7
Емпірично мені зовсім не складно переоцінити випадковий ліс, керований випадковий ліс, регульований випадковий ліс або керований регульований випадковий ліс. Вони регулярно працюють дуже добре при перехресній валідації, але погано використовуються з новими даними через надмірне пристосування. Я вважаю, що це стосується типу моделюваних явищ. Це не є великою проблемою при моделюванні механічного процесу, але з чимось на зразок поведінкової моделі я отримую набагато стабільніші результати з чітко визначеною регресією.
Hack-R

33

Як ви отримуєте 99% AUC на своїх навчальних даних? Майте на увазі, що між ними є різниця

predict(model)

і

predict(model, newdata=train)

при отриманні прогнозів для навчального набору даних. Перший варіант отримує передбачення поза сумками з випадкового лісу. Це, як правило, те, що ви хочете, порівнюючи передбачувані значення з фактичними на навчальних даних.

Друга обробляє ваші дані тренувань так, ніби це новий набір даних, і проводить спостереження вниз по кожному дереву. Це призведе до штучно тісного взаємозв'язку між прогнозами та фактичними показниками, оскільки алгоритм РФ, як правило, не обрізає окремі дерева, а покладається на ансамбль дерев, щоб контролювати надмірну обробку. Тому не робіть цього, якщо хочете отримати прогнози щодо даних про навчання.


3
Я використовував прогноз (модель, дані = поїзд). Зараз я перейшов на прогнозування (модель), і мій аук знизився до 87%. Це хороша річ чи погана?
Абхі

2
Дякую! Я виявив, що це питання було і для мене. Я розмістив подальше запитання щодо того, який захід використовувати як «помилку навчання» для моделей РФ тут: stats.stackexchange.com/questions/162353/…
Berk U.

Чудово, дякую !! Я теж робив цю помилку! Для @Abhi: це добре, тому що попередній AUC був безглуздо високим. Цей реалістичніший. Спробуйте перехресну валідацію та виміряйте AUC на цьому, і, ймовірно, ви побачите подібне значення.
Цікаво

7

Для дерев рішень є два способи поводження з надлишковою обробкою: (a) не вирощувати дерева в повному обсязі (b) обрізати

Те ж стосується лісу дерев - не вирощуйте їх занадто багато і не обріжте.

Я мало використовую randomForest, але, наскільки мені відомо, є кілька параметрів, які можна використовувати для налаштування лісів:

  • nodesize - мінімальний розмір кінцевих вузлів
  • maxnodes - максимальна кількість кінцевих вузлів
  • mtry - кількість змінних, використовуваних для створення кожного дерева (спасибі @ user777)

1
І mtry, кількість змінних, яку алгоритм малює для створення кожного дерева, за замовчуванням квадратний корінь із кількості загальних функцій.
Відновіть Моніку

Я б замість цього залишив maxnodes та менший sampsize. Обидва decresing maxnodes і sampsize дають дерева з меншою глибиною і надійнішими лісами, sampsize однак нижчою кореляцією дерева також, і ліс, ймовірно , сходиться до зниження помилки перехресної перевірки передбачення см stackoverflow.com/questions/34997134 / ...
Сорен Havelund Веллінг

2

Ви можете скористатись методами перехресної перевірки, такими як K-кратна перехресна перевірка.


вам потрібно нормалізувати / масштабувати функції?
charles

4
@charles мої вибачення. Дійсно не потрібно масштабувати особливості використання випадкових лісів. Див: stackoverflow.com/questions/8961586 / ...
FRE

Я думаю, перехресне підтвердження було б корисним. Це порівняно невеликий набір даних із розділеною валідацією вибірки, яка потенційно дає нестабільні оцінки помилок (хоча, мабуть, я розумію, що це не проблема тут)
charles

1

ви можете налаштувати параметри за допомогою gridsearch

from sklearn.ensemble import RandomForestClassifier

from sklearn.grid_search import GridSearchCV

random_classifier = RandomForestClassifier()

parameters = { 'max_features':np.arange(5,10),'n_estimators':[500],'min_samples_leaf': [10,50,100,200,500]}

random_grid = GridSearchCV(random_classifier, parameters, cv = 5)

Спробуваний редактор припускає, що модуль GridSearchCVвикликається model_selection, і таким чином повинен бути другий рядок коду from sklearn.model_selection import GridSearchCV.
gung - Відновіть Моніку

0

Спробуйте налаштувати параметр max_depth у діапазоні [5, 15], але не більше цього, тому що якщо взяти велику глибину, велика ймовірність перевиконання.

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