Випадковий ліс на багаторівневих / ієрархічно структурованих даних


13

Я зовсім новачок у машинному навчанні, CART-техніці тощо, і я сподіваюся, що моя наївність не надто очевидна.

Як Random Forest обробляє багаторівневі / ієрархічні структури даних (наприклад, коли взаємозв'язок на рівні рівнів представляє інтерес)?

Тобто набори даних з одиницями аналізу на декількох ієрархічних рівнях ( наприклад , учні вкладені в школи, з даними як про учнів, так і про школи).

В якості прикладу розглянемо багаторівневий набір даних з особами першого рівня ( наприклад , з даними про поведінку при голосуванні, демографією тощо), що вкладаються у країни на другому рівні (з даними на рівні країни; наприклад , кількість населення):

ID voted age female country population
1 1 19 1 1 53.01
2 1 23 0 1 53.01
3 0 43 1 1 53.01
4 1 27 1 1 53.01
5 0 67 0 1 53.01
6 1 34 1 2 47.54
7 0 54 1 2 47.54
8 0 22 1 2 47.54
9 0 78 0 2 47.54
10 1 52 0 2 47.54

Давайте скажемо, що votedце змінна відповідь / залежність, а інші - прогнозні / незалежні змінні. У таких типах випадків граничні та граничні ефекти змінної (часткова залежність) для певної змінної вищого рівня ( наприклад , population) для різних змінних індивідуального рівня тощо можуть бути дуже цікавими. У випадку, подібному до цього, glmзвичайно, доцільніше - але коли існує багато змінних, взаємодій та / або відсутніх значень, та / або дуже масштабних наборів даних тощо, glmце не так надійно.

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

(Питання Випадковий ліс за згрупованими даними , можливо, подібний, але насправді на це не відповідає.)


Привіт @MikaelAndersson, ти знайшов рішення на поставлені питання? Я стикаюся з подібною ситуацією і сподіваюся почути ваш досвід. Спасибі.
NoviceProg

Відповіді:


4

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

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

Ви також повинні бути обережними, як кодувати дані у випадковий ліс. Здається, countryце категорична змінна. Подавати його як числове число було б трохи грубо, але не безнадійно (особливо якщо ви замовляли посвідчення чимось корисним).


Чи можете ви трохи розширити, чому оцінки помилок OOB будуть занадто оптимістичними?
dmartin

2
Я думаю, що їх оптимізм залежить від того, як можуть виглядати нові дані. Якщо нові дані надходили з інших повітів, то цей випадковий ліс, ймовірно, не буде працювати так добре, як це вказує на помилки OOB. Це пов’язано з тим, що помилки OOB все ще надходять, наприклад, із зразків із того ж набору округів.
Ши Паркес

3

Я фактично працюю над пакетом R, який запускає randomForest як локальний класифікатор за попередньо визначеною ієрархією класів. Пакет можна знайти в R Forge в розділі "hie-ran-forest". Пакет вже працює, хоча він не відповідає одному з тестів на кран (для MAC), я не впевнений, чому саме. Крім того, що насправді працює randomForest для кожного батьківського вузла вниз за ієрархією, пакет також містить функції прогнозування та функції продуктивності. Один із показників ефективності насправді пояснює ієрархічну структуру класів.

Пакет розглядає взаємодію між рівнем, спочатку запускаючи випадковий ліс як локальний класифікатор у кожному батьківському вузлі ієрархії класів. Далі функція прогнозування витягує частку голосів, що надійшли за сумку, що були отримані у кожному локальному класифікаторі. Тоді є два способи перетворити частку голосів на чітку класифікацію: 1. Покрокове правило більшості - Почніть з локального класифікатора, найближчого до кореня дерева, і виберіть дочірню цього класифікатора, який отримав найбільшу частку голосів. Далі подивіться на всіх дітей вибраного вузла і знову виберіть дитину, яка отримала найбільшу частку голосів у відповідному локальному класифікаторі. Продовжуйте, поки не буде досягнуто термінального вузла. 2.

Мультиплікативна частка голосів порівнянна з часткою голосів, отриманих звичайним випадковим Форестом


2
Чи можете ви пояснити, що ваш пакунок стосується "взаємодії на рівні рівнів", і якщо так, то як це робити? Сказати, що пакет існує - це не багато відповіді (я не маю на увазі бути надто критичним, але CV прагне створити постійне сховище високоякісної інформації про ML, і те, що пакет існує, не означає цілком відповідають цьому стандарту.)
gung - Відновіть Моніку

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

Це чудово, дякую @YoniGavish. Чому б не відредагувати свою відповідь і не додати цю інформацію до неї?
gung - Відновіть Моніку

Це краще @gung?
Йоні Гавіш

Так, це зробить, @YoniGavish, +1. Ласкаво просимо на сайт.
gung - Відновіть Моніку

3

У одному дереві класифікації ці групи кодуються так само, як і будь-яка інша категоріальна змінна. Це часто робиться як двійкове кодування, так і просто за допомогою цілого числа. Існують різні аргументи для використання будь-якого. У випадкових лісах, якщо ви використовуєте двійкове кодування, деякі групи будуть включені / виключені для будь-якого дерева. Тож у вас може бути індикатор, country_2але ні country_3. Якщо ви залишите змінну групи як ціле число, впорядкування може вплинути і на результат. Що це означає для country > 5і country < 12? Як це зміниться, якщо ви випадково повторно позначити країни новими цілими числами?

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

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

У вашому випадку countryі populationідеально колінеарні. Немає інформації, отриманої за допомогою обох змінних у вашій моделі. Тож ви можете подумати про те, як випадкова лісова модель поводиться з цими змінними у ваших даних.

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