PCA та випадкові ліси


12

Для нещодавнього змагання Kaggle я (вручну) визначив 10 додаткових функцій для мого навчального набору, які потім будуть використовуватися для тренування випадкового класифікатора лісів. Я вирішив запустити PCA на набір даних з новими функціями, щоб побачити, як вони порівнюють один одного. Я виявив, що ~ 98% дисперсії несе перший компонент (перший власний вектор). Потім я кілька разів тренував класифікатор, додаючи по черзі одну особливість і використовував перехресну перевірку та помилку RMS для порівняння якості класифікації. Я виявив, що класифікація покращується з кожною додатковою функцією, і що кінцевий результат (з усіма 10 новими функціями) був набагато кращим, ніж перший запуск з (скажімо) 2 ознаками.

  • Зважаючи на те, що PCA стверджував, що ~ 98% дисперсії було в першому компоненті мого набору даних, чому якість класифікацій настільки покращилася?

  • Чи справедливо це для інших класифікаторів? РЧ-шкала на декількох ядрах, тому тренуватись набагато швидше, ніж (скажімо, SVM).

  • Що робити, якщо я перетворив набір даних у простір "PCA" і запустив класифікатор на перетвореному просторі. Як змінилися б мої результати?


2
Ви нормалізували свої дані перед запуском PCA? Якби я мав здогадуватися, я думаю, що одна з твоїх рис була в набагато більших масштабах, ніж інші ...
Марк Шиверс

1
Функція PCA автоматично нормалізує все під час обчислення.
Вішал

1
Можливо, це лише я, але ви могли б пояснити наступне: ваш перший крок полягав у додаванні 10 (необроблених) функцій, по одній, або ви працювали безпосередньо з компонентами PCA? Як було сказано, я розумію, що це перший випадок, і вам цікаво, чи могли ви працювати безпосередньо з результатами PCA. В будь-якому випадку ви застосовували PCA до всіх змінних, включаючи нові функції, чи лише пізніші?
chl

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

Відповіді:


7

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

Це часто пояснюється різницею між регресією основних компонентів замість часткових найменших квадратів.


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

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

Тут виникає подальше запитання, як ви апріорі вибираєте функції для свого випадкового класифікатора лісів для покращення класифікації, фактично не використовуючи класифікатора? Чи є процес скринінгу? Як ти це робиш? :)
Вішал

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

1
Ви можете апріорі обчислити деякі заходи відокремленості для своїх класів, виходячи з ваших особливостей (відстань Джеффріса-Матусіта, розбіжність тощо). Це може допомогти вам розібратися в загальних рисах, які функції допоможуть вам розрізняти класи, але через функціонування РФ непросто вибрати тут, які функції дають найкращий набір для класифікації. Однією чіткою перешкодою є те, що РФ знаходить змінну взаємодію сама по собі.
JEquihua

6

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

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


3
"Насправді ми нещодавно обговорювали документ про резюме, де PCA" чи маєте ви посилання на це? Мені дуже цікаво :)
user603

Я буду шукати дискусію.
Майкл Р. Черник

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