Вибір особливостей за допомогою випадкових лісів


17

У мене є набір даних з переважно фінансовими змінними (120 функцій, приклади 4 к), які в основному є дуже корельованими та дуже галасливими (наприклад, технічні показники), тому я хотів би вибрати приблизно 20-30 для подальшого використання при навчанні моделі (двійкова класифікація - збільшення / зменшення).

Я думав про використання випадкових лісів для ранжирування ознак. Чи корисно використовувати їх рекурсивно? Наприклад, скажімо, що в першому раунді я скидаю найгірші 20%, другий теж тощо, поки не отримаю потрібну кількість функцій. Чи варто використовувати перехресну перевірку з РФ? (Для мене інтуїтивно не використовувати резюме, тому що це вже майже те, що вже робить РФ.)

Крім того, якщо я йду зі випадковими лісами, чи варто використовувати їх як класифікатори для двійкових чи регресорів для фактичного збільшення / зменшення для отримання імпортних ознак?

До речі, моделями, які я хотів би спробувати після вибору особливостей, є: SVM, нейронні мережі, локально зважені регресії та випадковий ліс. Я в основному працюю в Python.


2
хотів би підключитися до обміну думками. Я працюю над чимось подібним
user670186

чи є причина , чому ніхто не запропонував просто використовувати built-inатрибут RandomForestClassifier в sklearnназивається feature_importances_....? Ви побачите це за посиланням.
Candic3

Будьте обережні, тому що multicollinearityможуть спотворювати імпорт функцій та вибір функцій. перевірити це тут
Candic3

Остерігайтеся алгоритмів за замовчуванням: parrt.cs.usfca.edu/doc/rf-importance/index.html
Тім

Відповіді:


13

Для вибору функції нам потрібна функція підбору балів , а також спосіб пошуку для оптимізації функції скорингу.

Ви можете використовувати RF як метод ранжирування функцій, якщо визначити якийсь відповідний показник важливості. РФ буде вибирати функції, засновані на випадковому методі заміни, і групувати кожну підмножину в окремому підпросторі (званому випадковим підпростором). Одна важлива оцінка функції може базуватися на призначенні точності кожного дерева для кожної функції у цьому випадковому підпросторі. Потім ви робите це для кожного окремого дерева. Оскільки джерело генерації підпросторів є випадковим, ви можете поставити поріг для обчислення оцінки важливості.

Підсумок:

Крок 1 : Якщо функція X2 з’являється у 25% дерев, тоді, забийте її. В іншому випадку не варто враховувати класифікацію функції, оскільки ми не маємо достатньої інформації про її ефективність

Крок 2 : Тепер призначте показник продуктивності кожного дерева, в якому X2 з'являється до X2, і оцініть середній бал. Наприклад: perf (Tree1) = 0,85 perf (Tree2) = 0,70 perf (Tree3) = 0,30

Тоді важливість функції X2 = (0,85 + 0,70 + 0,30) / 3 = 0,6167

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

Що стосується способу пошуку , то ваш рекурсивний метод здається розумним як спосіб вибору найбільш рейтингових.

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


Дякуємо за вклад. Я хотів це зазначити (0.85+0.70+0.30)/3 = 0.6167.
Хенді

5
Якщо ви працюєте з python, ви можете безпосередньо використовувати змінну важливість, обчислену в sklearn, при виклику випадкового лісу.
Скретч

5

У мене є набір даних з переважно фінансовими змінними (120 особливостей, приклади 4 к), які в основному є дуже корельованими та дуже галасливими (наприклад, технічні показники), тому я хотів би вибрати приблизно 20-30 для подальшого використання при навчанні моделі (двійкова класифікація - збільшення / зменшення).

4k прикладів насправді недостатньо, щоб оцінити щось дуже складне - потрібно використовувати найпростіші можливі моделі (лінійна / логістична регресія, лінійний svm) та невелику кількість змінних

З огляду на те, що ваші дані є галасливими та співвіднесеними, PCA - це, мабуть, найкраща ставка [це ефективно визначає загальні сигнали, що усереднюються за окремими показниками]

Регуляризація L2 (для лінійної моделі) також допоможе усереднювати шум [наприклад, якщо у вас n шумних копій одного і того ж сигналу, регуляризація l2 стимулює ваги бути однаковими - усереднення цих n змінних]

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