Які теоретичні причини не обробляти пропущені значення? Машини підвищення градієнта, дерева регресії обробляють пропущені значення. Чому Random Forest не робить цього?
Які теоретичні причини не обробляти пропущені значення? Машини підвищення градієнта, дерева регресії обробляють пропущені значення. Чому Random Forest не робить цього?
Відповіді:
Gradient Boosting Trees використовує дерева CART (у стандартній установці, як це запропонували його автори). Дерева CART також використовуються у випадкових лісах. Що @ user777 сказав, що це правда, що RF дерева обробляють пропущені значення або шляхом імпутації із середнім рівнем, або за приблизним середнім / режимом, або шляхом усереднення / режиму на основі близькості. Ці методи були запропоновані Брейманом і Катлером і використовуються для РФ. Це посилання від авторів Пропущені значення у навчальному наборі .
Однак можна створити GBM або RF з іншими типами дерев рішень. Звичайною заміною для CART є C4.5, запропонований Quinlan. У C4.5 відсутні значення не замінюються на наборі даних. Натомість обчислена функція домішки враховує пропущені значення шляхом покарання шкали домішок із нормою пропущених значень. На тестовому наборі оцінювання у вузлі, який має тест з відсутнім значенням, прогноз будується для кожного дочірнього вузла та агрегується пізніше (шляхом зважування).
Зараз у багатьох реалізаціях C4.5 використовується замість CART. Основна причина - уникати дорогих обчислень (CART має більш жорсткі статистичні підходи, які потребують більшого обчислення), результати, схоже, схожі, дерева в результаті часто менші (оскільки CART є двійковим, а C4.5 - ні). Я знаю, що Века використовує такий підхід. Я не знаю інших бібліотек, але очікую, що це не буде особливою ситуацією. Якщо це так з вашою реалізацією GBM, то це буде відповіддю.
"Які теоретичні причини [для РФ] не обробляють пропущені значення? Машини, що підсилюють градієнт, дерева регресії обробляють пропущені значення. Чому Random Forest не робить цього?"
РФ робить ручки пропущених значень, але тільки не в те ж саме , що ВООЗ та інші аналогічні алгоритми вирішення дерева роблять. User777 правильно описує два способи, використовувані РФ для обробки відсутніх даних (медіанна імпутація та / або міра на основі близькості), тоді як Френк Харрелл правильно описує обробку відсутніх значень у CART (сурогатні розщеплення). Для отримання додаткової інформації дивіться посилання на відсутність обробки даних для CART (або це двоюрідний брат FOSS: RPART ) та RF .
Відповідь на ваше актуальне питання чітко висвітлюється, ІМХО, у статті Ishwaran et al., Опублікованій у 2008 році під назвою Ліси випадкових виживань . Вони надають наступне правдоподібне пояснення того, чому РФ не обробляє відсутні дані так само, як CART або подібні класифікатори дерев єдиного рішення:
"Хоча сурогатне розщеплення добре працює для дерев, метод може бути не дуже підходящим для лісів. Швидкість - одне питання. Пошук сурогатного розщеплення обчислювально інтенсивний і може стати нездійсненним при вирощуванні великої кількості дерев, особливо для повністю насичених дерев, що використовуються Крім того, сурогатні розщеплення можуть не мати значення навіть у лісовій парадигмі. RF випадковим чином вибирає змінні під час розщеплення вузла, і, як така, змінні всередині вузла можуть бути некорельованими, і розумний сурогатний розкол може не існувати. сурогатне розщеплення змінює інтерпретацію змінної, що впливає на такі заходи, як [Змінна важливість].
З цих причин для РФ потрібна інша стратегія ".
Це вбік, але для мене це ставить під сумнів тих, хто стверджує, що РФ використовує ансамбль моделей CART. Я бачив це твердження, висловлене в багатьох статтях, але я ніколи не бачив, щоб подібні заяви були джерелами будь-якого авторитетного тексту про РФ. Для одного дерева в РФ вирощують без обрізки , що зазвичай не є стандартним підходом при побудові моделі CART. Іншою причиною може бути та, про яку ви натякаєте у своєму запитанні: CART та інші ансамблі дерев рішень обробляють пропущені значення, тоді як [оригінал] RF не має, принаймні не внутрішньо, як це робить CART.
Маючи на увазі ці застереження, я думаю, ви могли б сказати, що РФ використовує ансамбль дерев рішень, що нагадують CART (тобто, купу необрізаних дерев, вирощених на максимальну міру, без можливості обробляти відсутні дані за допомогою сурогатного розщеплення). Можливо, це одна з цих пунктичних смислових відмінностей, але це, на мою думку, варто відзначити.
EDIT : З моєї сторони, що не стосується фактично поставленого запитання, я заявив, що "я ніколи не бачив, щоб такі заяви були джерелами будь-якого авторитетного тексту щодо РФ". Виявляється, Breiman DID спеціально стверджує, що дерева рішень CART використовуються в оригінальному алгоритмі РФ:
"Найпростіший випадковий ліс із випадковими ознаками формується шляхом вибору випадковим чином на кожному вузлі невелику групу вхідних змінних, на яку слід розділити. Виростіть дерево, використовуючи методологію CART, до максимального розміру і не обрізайте." [Мій наголос]
Джерело: С.9 випадкових лісів. Брейман (2001)
Однак я все ще стою (хоч і більш химерно) на думці, що це дерева, що нагадують CART, так як вони вирощуються без обрізки, тоді як CART зазвичай ніколи не запускається в цій конфігурації, оскільки це майже напевно перевищує ваші дані ( звідси обрізка в першу чергу).
Випадковий ліс обробляє відсутні дані, і це два способи:
1) Без внесення пропущених даних, але без умовиводу. 2) Включення даних. Потім введені дані використовуються для висновку.
Обидва методи реалізовані в моєму R-пакеті randomForestSRC (співавтором з Удаєю Когалуром). По-перше, важливо пам’ятати, що оскільки випадкові ліси використовують випадковий вибір ознак, традиційні методи відсутніх даних, що використовуються для одиночних дерев (CART тощо), не застосовуються. Цей пункт був зроблений у Ishwaran та ін. (2008), "Ліси випадкових виживань", " Анали прикладної статистики" , 2 , 3 , і чудово сформульовані одним із коментаторів.
Метод (1) - метод "імпутації на ходу" (OTFI). Перед розділенням вузла відсутні дані для змінної присвоюються випадковим чином нанесенням значень з даних, що не містяться в сумці. Мета цих імпутованих даних - зробити можливість присвоювати випадки дочірнім вузлам у випадку, якщо вузол розділений на змінну з відсутніми даними. Однак імпутовані дані не використовуються для обчислення розбитої статистики, яка використовує лише відсутні дані. Після розбиття вузла введені дані скидаються до відсутніх і процес повторюється до досягнення термінальних вузлів. OTFI зберігає цілісність даних, що перебувають у пакеті, і тому значення продуктивності, такі як змінна важливість (VIMP), залишаються неупередженими. Алгоритм OTFI був описаний в Ishwaran et al (2008) та реалізований у звільненому пакеті randomSurvivalForest,
Метод (2) реалізується за допомогою функції "імпультувати" у randomForestSRC. Доступні непідконтрольні, рандомізовані та багатоваріантні методи поділу для введення даних. Наприклад, багатоваріантне розщеплення узагальнює надзвичайно успішний метод імпутації missForest ( Stekhoven & Bühlmann (2012), "MissForest - непараметрична імпутація відсутнього значення для даних змішаного типу", Bioinformatics , 28 , 1 ). Виклик функції імпультування з відсутніми даними поверне імпульований кадр даних, який можна встановити за допомогою первинної лісової функції "rfsrc".
Детальне порівняння різних лісових алгоритмів пропущених даних, реалізованих за допомогою "імпультувати", було описано в недавній роботі з Фей Тан "Випадкові алгоритми даних про лісові дані", 2017 рік . Я рекомендую проконсультуватися з довідковими файлами "rfsrc" та "impute" від randomForestSRC для отримання більш детальної інформації про імпутацію та OTFI.
У рекурсивному розподілі використовуються сурогатні розбиття, засновані на відсутніх провідників, які корелюються з предиктором, який має відсутнє значення для спостереження. Теоретично здається можливим реалізувати випадкові ліси, які використовують ту саму ідею. Я не знаю, чи зробив це якесь випадкове лісове програмне забезпечення.
За словами Лео Бреймана та Адель Катлер, які його винайшли, у Random Forest є два способи поводження з відсутніми значеннями.
Перший - швидкий і брудний: він просто заповнює медіанне значення для безперервних змінних або найпоширеніше нестача значення за класом .
Другий метод заповнює пропущені значення, потім запускає RF, потім для відсутніх безперервних значень RF обчислює середньозважене середнє значення пропущених значень. Потім цей процес повторюється кілька разів. Потім модель тренується остаточний час, використовуючи набір даних, імпульсованих РФ.
Замість використання середніх значень тощо я б настійно рекомендував переглянути пакет missRanger (наразі розробляється на Github) або пакет R missForest). Обидва ці пакети використовують випадкові ліси, щоб спочатку імпулювати ваші дані за допомогою методу, подібного до багаторазової імпутації за допомогою ланцюгових рівнянь (MICE). Це був би відповідний метод імпутації для використання, оскільки він відповідає тій чи іншій вашій моделі фактичного аналізу. Потім ви можете використовувати всі свої дані, не турбуючись про те, щоб скинути окремі рядки через відсутність спостережень. Крім того, імпульовані значення будуть набагато реальнішими, ніж просто вибір медіанів чи режимів.
Ви можете використовувати лише один заповнений набір імпутованих даних для своїх аналізів, але найкращий спосіб включити невизначеність щодо пропущених значень - це запустити кілька запусків цих методів імпутації, а потім оцінити вашу модель на кожному з результуючих наборів даних (тобто кілька імпутація), а потім комбінуйте оцінки за допомогою правил Рубіна (див. мітоли R пакета).
Для CART ви можете застосувати підхід, який відсутній у атрибутах (MIA). Тобто для категоричних прогнозів ви кодуєте як окрему категорію. Для числових предикторів ви створюєте дві нові змінні для кожної змінної з пропусками: ту, де ви кодуєте пропуски як -Inf та одну, де ви кодуєте пропуски як + Inf. Потім ви застосовуєте до своїх даних випадкову функцію лісу, як зазвичай.
Переваги MIA: 1) Обчислювально дешево, 2) не дає декількох наборів даних і, таким чином, моделей, як це робить багаторазова імпутація (література з імпутації зниклих даних, як правило, погоджується з тим, що одного введеного набору даних недостатньо), 3) не вимагає Ви вибираєте статистичний метод та / або модель введення даних.
Функції ctree()
та cforest()
від пакету partykit дозволяють застосовувати MIA, переходячи ctree_control(MIA = TRUE)
до їх control
аргументів.
Програма RuleFit Джерома Фрідмана, як видається, використовує МВС для боротьби з промахами, див. Https://statweb.stanford.edu/~jhf/r-rulefit/rulefit3/RuleFit_help.html#xmiss .
Опис підходу МВС можна знайти у Twala et al. (2008 р.):
Twala, BETH, Jones, MC та Hand, DJ (2008). Хороші методи подолання відсутніх даних у деревах рішень. Листи розпізнавання шаблонів, 29 (7), 950-956.
party
пакеті R. Одну статтю в блозі тут: exegetic.biz/blog/2013/05/…