Чи залежить оптимальна кількість дерев у випадковому лісі від кількості предикторів?


46

Чи може хтось пояснити, навіщо нам потрібна велика кількість дерев у випадкових лісах, коли кількість предикторів велика? Як можна визначити оптимальну кількість дерев?

Відповіді:


70

Випадковий ліс використовує мішковину (підбір вибірки спостережень, а не всіх) та метод випадкового підпростору (вибір вибірки особливостей, а не всіх, іншими словами - атрибути забою ) для вирощування дерева. Якщо кількість спостережень велика, але кількість дерев занадто мала, то деякі спостереження прогнозуватимуться лише один раз або навіть зовсім не будуть. Якщо кількість предикторів велика, але кількість дерев занадто мала, то деякі функції можна (теоретично) пропустити у всіх використовуваних підпросторах. Обидва випадки призводять до зниження випадкової лісової прогнозної сили. Але останній є досить крайнім випадком, оскільки вибір підпростори виконується на кожному вузлі.

Під час класифікації розмірність підпростору за замовчуванням дорівнює (досить невелика, - загальна кількість предикторів), але дерево містить багато вузлів. Під час регресії розмірність підпростору за замовчуванням дорівнює (досить велика), хоча дерево містить менше вузлів. Тож оптимальна кількість дерев у випадковому лісі залежить від кількості предикторів лише в крайніх випадках. pp/3ppp/3

На офіційній сторінці алгоритму зазначається, що випадковий ліс не переповнює, і ви можете використовувати стільки дерев, скільки хочете. Але Марк Р. Сегал (14 квітня 2004 р. "Машинне вивчення еталонів та випадкова регресія лісів". Центр біоінформатики та молекулярної біостатистики) виявив, що це надмірно підходить для деяких галасливих наборів даних. Отже, для отримання оптимальної кількості ви можете спробувати навчитись випадковим лісом за сіткою ntreeпараметрів (простий, але більш споживаючий процесор) або побудувати один випадковий ліс з багатьма деревами keep.inbag, обчислити коефіцієнт помилок поза мешком (OOB) для перших дерев (де змінюється від до ) і побудувати графік помилок OOB у порівнянні з кількістю дерев (складніший, але менш споживчий процесор).n 1нн1ntree


-2

Відповідно до цієї статті

Вони припускають, що випадковий ліс повинен мати кількість дерев між 64 - 128 деревами . З цим ви повинні мати хороший баланс між RUC AUC та часом обробки.


10
Здається дивним, що в їх результатах немає залежності від кількості функцій у наборі даних ...
naught101

-5

Я хочу додати somthings, якщо у вас є більше 1000 можливостей ви і 1000 рядків, ви не можете просто взяти випадкове число дерева.

я пропоную вам спочатку виявити кількість процесора та оперативної пам’яті, перш ніж намагатися запустити перехресну перевірку, щоб знайти співвідношення між ними та кількістю дерева

якщо ви використовуєте sikit learn в python, у вас є можливість n_jobs=-1використовувати весь процес, окрім вартості кожного ядра, що вимагає копію даних, після цього ви можете проаналізувати цю формулу

ntree = sqrt (кількість рядків * кількість стовпців) / numberofcpu


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