Чи потрібно мені нормалізувати (або масштабувати) дані для randomForest (пакет R)?


77

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


7
scaleФункція не належить caret. Це частина "базового" пакету R. Існує unscaleфункція, яка переверне перетворення.
IRTFM

Відповіді:


88

Ні, масштабування не потрібно для випадкових лісів.

  • Природа ВЧ така, що проблеми збіжності та числової точності, які іноді можуть зіпсувати алгоритми, що використовуються в логістичній та лінійній регресії, а також нейронні мережі, не є настільки важливими. Через це вам не потрібно перетворювати змінні в загальний масштаб, як це можливо з NN.

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


25
Масштабування не тільки не є необхідним, воно може згладити нелінійний характер моделі. Якщо у вас є складні нелінійні зв’язки в p-мірному просторі, і ви перетворили свої дані, то при зворотному перетворенні y ці нелінійності не відображаються в оцінці.
Джеффрі Еванс,

11
@JeffreyEvans, будь ласка, поєднуйте свої чудові коментарі та публікуйте їх як відповідь. Інакше це просто проскочить під радаром кожного. Ви кажете: "Ні, не тільки не потрібно, це шкідливо з наступних причин а) б) в) ..."
smci

2
Я думаю, він має на увазі, що це не потрібно, але не зашкодить, якщо ви масштабуєте всі набори (тренування, тест) з однаковою функцією, визначеною навчальним набором.
Кіт

Здогадайтесь, що станеться в наступному прикладі, якщо у вас є 20 функцій прогнозування, 15 з них знаходяться в діапазоні [0; 10], а інші 5
Данило Жеребецький

Чи не залежить це - якщо масштаб значно відрізняється між змінними, тоді масштабовані функції потенційно не дозволять коротші дерева? Якщо мінімальна норма норми використовується над векторною нормою, то чи не буде топологія мережі теж іншою?
user3546025

17

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

Випадковий ліс є деревною моделлю, тому не вимагає масштабування функцій.

Цей алгоритм вимагає розділення, навіть якщо ви застосуєте Нормалізацію, тоді> результат буде однаковим.


4

Я не бачу пропозицій ні на сторінці довідки, ні у віньєтці, що передбачає, що масштабування необхідно для змінної регресії в randomForest. Цей приклад на Stats Exchange також не використовує масштабування.

Копія мого коментаря: scaleФункція не належить pkg: caret. Це частина "базового" пакету R. Існує unscaleфункція в пакетах БРТ і DMwR , які будуть повністю змінити перетворення, або ви можете просто помножити на атрибуті масштабу , а потім додати значення атрибутів центру.

Ваша концепція, чому потрібно "нормалізувати", може вимагати критичного обстеження. Перевірка ненормальності потрібна лише після того, як зроблені регресії, і може не знадобитися взагалі, якщо відсутні припущення про нормальність методології належності придатності. Отже: Чому ти запитуєш? Пошук у SO та Stats.Exchange може виявитися корисним: цитата №1 ; цитата No2 ; цитата No3

boxcoxФункція зазвичай використовується tranformation , коли один не має попередніх знань про twhat розподілу «повинен» бути і коли вам дійсно потрібно зробити tranformation. У застосуванні трансформацій є багато підводних каменів, тому той факт, що вам потрібно задати питання, викликає занепокоєння щодо того, що вам можуть знадобитися подальші консультації чи самонавчання.


Я розумію нормалізацію у своєму питанні як просте лінійне перетворення даних, наприклад, на інтервал 0-1. Це слід робити, наприклад, при використанні нейронних мереж. Тож те, що мені потрібно було, коли я запитав, відповів Hong Ooi. Я не знайшов функції без масштабу, яку ви запропонували. Але дякую за ваші зусилля.
gutompf

Додані цитати для відповіді на ваше друге запитання.
IRTFM

Я призначуюсь - я пропустив, що немасштабність - це пакети grt та DMwR
gutompf

Не потрібно вибачення. Я створив "помилкову пам'ять" про те, що вона знаходиться в "базі" і що вона згадується на сторінці довідки для scale. Ваше подальше запитання було корисним для прямого встановлення рекорду.
IRTFM

2
@BondedDust: чудова відповідь, але останній абзац виходить неприємним. Можливо, перефразуйте "Вам потрібно вчитися, коли ви робите, і не потрібно робити перетворення, як на предикторах, так і на змінній відповіді"
smci

1

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


6
Випадкові ліси - це нелінійна модель, і природа статистики розділення вузлів пояснює високі розмірні взаємодії. Таким чином, непотрібно і зовсім небажано намагатися визначити змінні взаємодії.
Джеффрі Еванс,

1

Здогадайтесь, що буде в наступному прикладі? Уявіть, у вас є 20 функцій передбачення, 18 з них знаходяться в діапазоні [0; 10], а інші 2 - у діапазоні [0; 1000000] (взято з реального прикладу). Запитання1: яку важливість функції надасть Random Forest. Питання 2: що станеться з важливістю функції після масштабування 2 великих функцій?

Масштабування важливо. Полягає в тому, що Random Forest менш чутливий до масштабування, ніж інші алгоритми, і може працювати з «приблизно» масштабованими функціями.


1
Випадкові ліси не потребують масштабування
Patrick Stetz,

6
Якщо потрібні лише передбачення, то здоровий глузд полягає в тому, що масштабування не потрібно (дерева рішень інваріантні до лінійних перетворень). Однак, якщо "важливість функції" або "вибір функції" або "особливість тощо" розглядаються, то масштабовані та немасштабовані дані дадуть різні результати, пов’язані з „особливостями”. Див., Наприклад: 1) Strobl et al "Упередження у випадкових вимірах важливості лісових змінних: Ілюстрації, джерела та рішення", BMC Bioinformatics, 2007; 2) пояснено.ai/
Данило Жеребецький

Стара відповідь, але: це неправильно, і надане посилання нічого не говорить про масштабування функцій. Єдина згадка про масштабування - це міра важливості , яка зовсім інша
Хун Оой,

0

Випадкове використання лісів за information gain / gini coefficientсвоєю суттю, на яке масштабування не вплине, на відміну від багатьох інших моделей машинного навчання, які будуть (наприклад, кластеризація k-означає, PCA тощо). Однак це могло б "безперечно" пришвидшити конвергенцію, як натякають інші відповіді

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