Відповіді:
Випадковий ліс використовує мішковину (підбір вибірки спостережень, а не всіх) та метод випадкового підпростору (вибір вибірки особливостей, а не всіх, іншими словами - атрибути забою ) для вирощування дерева. Якщо кількість спостережень велика, але кількість дерев занадто мала, то деякі спостереження прогнозуватимуться лише один раз або навіть зовсім не будуть. Якщо кількість предикторів велика, але кількість дерев занадто мала, то деякі функції можна (теоретично) пропустити у всіх використовуваних підпросторах. Обидва випадки призводять до зниження випадкової лісової прогнозної сили. Але останній є досить крайнім випадком, оскільки вибір підпростори виконується на кожному вузлі.
Під час класифікації розмірність підпростору за замовчуванням дорівнює (досить невелика, - загальна кількість предикторів), але дерево містить багато вузлів. Під час регресії розмірність підпростору за замовчуванням дорівнює (досить велика), хоча дерево містить менше вузлів. Тож оптимальна кількість дерев у випадковому лісі залежить від кількості предикторів лише в крайніх випадках. pp/3
На офіційній сторінці алгоритму зазначається, що випадковий ліс не переповнює, і ви можете використовувати стільки дерев, скільки хочете. Але Марк Р. Сегал (14 квітня 2004 р. "Машинне вивчення еталонів та випадкова регресія лісів". Центр біоінформатики та молекулярної біостатистики) виявив, що це надмірно підходить для деяких галасливих наборів даних. Отже, для отримання оптимальної кількості ви можете спробувати навчитись випадковим лісом за сіткою ntree
параметрів (простий, але більш споживаючий процесор) або побудувати один випадковий ліс з багатьма деревами keep.inbag
, обчислити коефіцієнт помилок поза мешком (OOB) для перших дерев (де змінюється від до ) і побудувати графік помилок OOB у порівнянні з кількістю дерев (складніший, але менш споживчий процесор).n 1ntree
Відповідно до цієї статті
Вони припускають, що випадковий ліс повинен мати кількість дерев між 64 - 128 деревами . З цим ви повинні мати хороший баланс між RUC AUC та часом обробки.
Я хочу додати somthings, якщо у вас є більше 1000 можливостей ви і 1000 рядків, ви не можете просто взяти випадкове число дерева.
я пропоную вам спочатку виявити кількість процесора та оперативної пам’яті, перш ніж намагатися запустити перехресну перевірку, щоб знайти співвідношення між ними та кількістю дерева
якщо ви використовуєте sikit learn в python, у вас є можливість n_jobs=-1
використовувати весь процес, окрім вартості кожного ядра, що вимагає копію даних, після цього ви можете проаналізувати цю формулу
ntree = sqrt (кількість рядків * кількість стовпців) / numberofcpu