Random forest
Шаблон:Машинне навчання Random forest (Шаблон:Lang-en) — ансамблевий метод машинного навчання для класифікації, регресії та інших завдань, який працює за допомогою побудови численних дерев прийняття рішень під час тренування моделі й продукує моду для класів (класифікацій) або усереднений прогноз (регресія) побудованих дерев. Недоліком є схильність до перенавчання.
Розширення алгоритму було запропоновано Шаблон:Li[1][2] і Шаблон:Li, «Random Forests» є їхньою торговою маркою. Алгоритм поєднує в собі дві основні ідеї: метод беггінга Бреймана і Шаблон:Li, запропонованийШаблон:Li.
Алгоритм навчання класифікатора
Нехай навчальна вибірка складається з N прикладів, розмірність простору ознак дорівнює M, і заданий параметр m (в задачах класифікації зазвичай ).
Усі дерева комітету будуються незалежно один від одного за такою процедурою:
- Згенеруємо випадкову підвибірку з повторенням розміром n з навчальної вибірки. (Таким чином, деякі приклади потраплять в неї кілька разів, а приблизно N/3 прикладів не ввійдуть у неї взагалі).
- Далі випадково обиремо m предикторів (ознак) із М.
- Побудуємо дерево рішень, яке класифікує приклади даної підвибірки, причому в ході створення чергового вузла дерева будемо вибирати ознаку, на основі якої проводиться розбиття, не з усіх M ознак, а лише з m випадково вибраних. Вибір найкращого з цих m ознак може здійснюватися різними способами. В оригінальному коді Брейман використовується критерій Джині, що застосовується також в алгоритмі побудови вирішальних дерев CART. У деяких реалізаціях алгоритму замість нього використовується Шаблон:Нп.[3]
- Розділимо ознаку Х на два класи, Xі Sі та Xі < Sі.
- Виміряємо гомогенність у двох нових класах за допомогую критерію Джині.
- Оберемо таке значення «спліт-поінту» Sі ознаки Х, для якого досягнуто максимальної гомогенності класу.
- Дерево будується до повного вичерпання підвибірки і не піддається процедурі Шаблон:Нп (на відміну від дерев рішень, побудованих за таким алгоритмам, як CART або C4.5).
- Повертаємося до пункту 1. генеруємо нову вибірку і повторюємо пункти 2. — 4. будуючи наступне дерево. Чим більше дерев побудовано, тим меншою буде помилка класифікатора на тестовій вибірці.[4]
Класифікація об'єктів проводиться шляхом голосування: кожне дерево комітету відносить об'єкт, який класифікується до одного з класів, і перемагає клас, за який проголосувало найбільше число дерев.
Оптимальне число дерев підбирається таким чином, щоб мінімізувати помилку класифікатора на тестовій вибірці. У разі її відсутності, мінімізується оцінка помилки out-of-bag: частка прикладів навчальної вибірки, неправильно класифікованих комітетом, якщо не враховувати голоси дерев на прикладах, що входять в їх власну навчальну підвибірку.
Оцінка важливості змінних
Випадкові ліси, отримані в результаті застосування технік, описаних раніше, можуть бути природним чином використані для оцінки важливості змінних в задачах регресії та класифікації. Наступний спосіб такої оцінки був описаний Breiman.
Перший крок в оцінці важливості змінної в тренувальному наборі — тренування випадкового лісу на цьому наборі. Під час процесу побудови моделі для кожного елемента тренувального набору вважається так звана out-of-bag — помилка. Потім для кожної сутності така помилка опосередковується по всьому випадковому лісі.
Для того, щоб оцінити важливість -ого параметра після тренування, значення -ого параметра перемішуються для всіх записів тренувального набору та out-of-bag — помилка рахується знову. Важливість параметра оцінюється шляхом усереднення по всіх деревах різниці показників out-of-bag — помилок до і після перемішування значень. При цьому значення таких помилок нормалізуються на стандартне відхилення.
Параметри вибірки, які дають більші значення, вважаються більш важливими для тренувального набору. Метод має наступний потенційний недолік — для категоріальних змінних з великою кількістю значень метод схильний вважати такі змінні більш важливими. Часткове переваження значень в цьому випадку може знижувати вплив цього ефекту.[5][6] Якщо дані містять групи корельованих ознак, що мають подібне значення для результату, то більш дрібні групи мають переваги над більшими групами.[7]
Переваги
- Здатність ефективно обробляти дані з великим числом ознак і класів.
- Нечутливість до масштабування (і взагалі до будь-яких монотонних перетворень) значень ознак.
- Однаково добре обробляються як безперервні, так і дискретні ознаки. Існують методи побудови дерев за даними з пропущеними значеннями ознак.
- Існують методи оцінювання значущості окремих ознак в моделі.
- Внутрішня оцінка здатності моделі до узагальнення (тест out-of-bag).
- Здатність працювати паралельно в багато потоків.
Недоліки
- Алгоритм схильний до перенавчання на деяких завданнях, особливо з великою кількістю шумів.[8]
- Великий розмір отримуваних моделей. Потрібно пам'яті для зберігання моделі, де — число дерев.
Реалізації
- Авторська реалізація Шаблон:Webarchive Брейман і Катлер на мові Fortran77
- Пакет randomForest Шаблон:Webarchive для R — портована версія оригінального авторського коду в R
- Пакет party Шаблон:Webarchive для R, містить модифікацію алгоритму
- Існують реалізації алгоритму в системах Weka і Шаблон:Нп
- FastRandomForest Шаблон:Webarchive
Примітки
Література
- ↑ Шаблон:Cite journalШаблон:Ref-enШаблон:Перевірено
- ↑ Опис алгоритму на сайті Лео Бреймана Шаблон:WebarchiveШаблон:Ref-enШаблон:Перевірено
- ↑ Опис процедури побудови дерев, яка застосовується в Apache Mahout Шаблон:Webarchive Шаблон:Ref-en Шаблон:Перевірено
- ↑ Шаблон:Cite web
- ↑ Шаблон:Cite conference
- ↑ Шаблон:Cite journal
- ↑ Шаблон:Cite journal
- ↑ Шаблон:CitationШаблон:Ref-enШаблон:Проверено