Випадковість Лісу
Свайпніть щоб показати меню
Random Forest створює велику кількість дерев рішень — зазвичай близько 100 або навіть більше. Створити так багато різних дерев лише шляхом налаштування параметрів складно, тому для цього вводиться випадковість. На щастя, дерева рішень дуже чутливі до незначних змін у даних та налаштуваннях, що природно призводить до широкого різноманіття дерев у лісі.
У Random Forest існує два джерела випадковості:
- Вибірка даних для кожного дерева;
- Вибірка ознак на кожному вузлі прийняття рішення кожного дерева.
Вибірка даних
Щоб створити різний навчальний набір для кожного дерева рішень у лісі, використовується метод bootstrap (також відомий як bagging). Ідея полягає у вибірці, з поверненням, набору даних такого ж розміру для кожного дерева.
За замовчуванням розмір набору даних для кожного дерева відповідає розміру оригінального набору даних. Вибірка з поверненням означає випадковий вибір точки даних із навчального набору — подібно до витягування карти з колоди. Однак, на відміну від звичайного витягування карт, кожна вибрана точка даних не видаляється, тому одна й та сама точка може бути обрана кілька разів.
Кожне дерево навчається на різній підмножині даних, що вже сприяє різноманітності дерев. Щоб додати ще більше випадковості та пришвидшити навчання, можна також обмежити кількість ознак, які кожне дерево враховує під час розбиття.
Вибірка ознак
У стандартному рішенні дерева кожен вузол розглядає всі доступні ознаки для пошуку найкращого розбиття — зазвичай шляхом обчислення таких метрик, як Gini impurity. Цей процес є обчислювально затратним.
У випадковому лісі на кожному вузлі розглядається лише випадкова підмножина ознак. Це пришвидшує навчання та додає випадковість, що сприяє різноманітності дерев. Поширеним підходом є використання квадратного кореня із загальної кількості ознак. Наприклад, якщо є 9 ознак, на кожному вузлі випадково обирається 3; якщо ознак 10 000, приблизно 100 можуть бути вибрані.
Ознаки вибираються без повернення, тобто одна й та сама ознака не з’явиться більше одного разу на одному вузлі. Кількість ознак для розгляду можна налаштовувати залежно від задачі.
Можна керувати кількістю ознак, які розглядаються на кожному вузлі прийняття рішення, за допомогою параметра max_features у реалізації scikit-learn. Ось деякі популярні варіанти:
max_features='sqrt': використовується квадратний корінь із загальної кількості ознак. Це типовий вибір, який забезпечує баланс між точністю та ефективністю;max_features='log2': використовується двійковий логарифм від загальної кількості ознак, що забезпечує ще більшу випадковість;max_features=0.1: використовується 10% ознак, де значення розглядається як частка.
Також можна встановити max_features як будь-яку частку між 0 та 1 (наприклад, max_features=0.1 використовує 10% ознак).
Підсумовуючи, Random Forest побудований таким чином, що кожне дерево навчається на різній вибірці даних, а кожен вузол прийняття рішення в цих деревах розглядає різну випадкову підмножину ознак. Така вбудована випадковість призводить до різноманітності дерев, що в підсумку покращує загальну ефективність моделі.
Дякуємо за ваш відгук!
Запитати АІ
Запитати АІ
Запитайте про що завгодно або спробуйте одне із запропонованих запитань, щоб почати наш чат