Вибір кількості основних компонентів для збереження


10

Один із запропонованих мною методів - переглянути графік обсипу та перевірити "ліктем", щоб визначити правильну кількість ПК для використання. Але якщо сюжет не зрозумілий, чи має R обчислення для визначення числа?

fit <- princomp(mydata, cor=TRUE)

3
Не те, що я знаю. По-перше, якщо ви посилаєтесь на "власне значення вище 1 великого пальця" або так зване правило Кайзера, ви, мабуть, знайдете кількість ПК, які задовольняють це (майте на увазі, що це загалом завищує кількість розмірів), дивлячись точніше, у вашому сюжеті. По-друге, паралельний аналіз - кращий спосіб визначення кількості компонентів; див. psyабо psychпакунок у програмах R, SPSS, SAS та MATLAB для визначення кількості компонентів та факторів. Більш загальне використання паралельного аналізу та тесту MAP Velicer .
chl

Відповіді:


10

Наступна стаття: Затримання компонентів в аналізі основних компонентів із застосуванням даних мікроматриці кДНК Кангелосі та Горіелі дає досить хороший огляд стандартного правила великих пальців для визначення кількості компонентів у дослідженні. (Графік екрана, Пояснюється пропорція загальної дисперсії, Середнє правило власного значення, Діаграма власного значення значення Log і т.д.) Більшість з них досить просто реалізувати в Р.

Загалом, якщо ваш сюжет осипів дуже непереконливий, то вам просто потрібно "забрати отруту". Не існує абсолютного права чи неправильності для будь-яких даних, оскільки насправді кількість ПК, які потрібно використовувати, насправді залежить від вашого розуміння проблеми. Єдиний набір даних, з якого ви можете «реально» знати розмірність, - це той, який ви сконструювали самі. :-) Основні компоненти в кінці дня забезпечують оптимальне розкладання даних за метрикою RSS (де в якості побічного продукту ви отримуєте кожен компонент для відображення основного режиму зміни) та включаючи або виключаючи задану кількість компонентів диктує ваше сприйняття мірності вашої проблеми.

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

Спробуйте більше зрозуміти свої дані. напр. Ви дійсно вірите, що 99,99% варіацій вашої набору даних обумовлено коваріатами вашої моделі? Якщо це, мабуть, вам, ймовірно, не потрібно включати розміри, які демонструють таку невелику частку загальної дисперсії. Чи вважаєте ви, що насправді компонент відображає зміну нижче порогу просто помітних відмінностей? Це, ймовірно, означає, що включення цього компонента до вашого аналізу є мало релевантним.

У будь-якому випадку, удачі та уважно перевіряйте свої дані. (Розміщення їх також творить чудеса.)


Ви можете вказати на код matlab, я не можу його знайти.
mrgloom

Я думаю, що я знайшов це дослідження.microsoft.com
en-us/um/people/minka/papers/pca

Дріж! Це було посилання, на яке я мав на увазі.
usεr11852

Цікаво, чи застосовується зараз підхід Мінки в R? Скажімо, найважливіші ПК були визначені в дослідженні різними методами, ми знаємо, що це повинні бути сигнальною частиною даних. Чи випадково ви знаєте, чи є якесь обмеження у% -ній різниці, яку пояснюють ці комп'ютери, нижче яких вважається «Недоступним» для подальшого аналізу? будь-яка довідка буде дуже вдячна.
докторантура

6

Протягом останніх кількох років з цього питання було дуже приємно працювати над цією проблемою. Я настійно рекомендую наступний документ Гавіша та Доного: Оптимальний жорсткий поріг для сингулярних значень - 4 / sqrt (3)

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

σn×n

λ=4σn3

Вони також пояснюють неквадратний випадок у статті. Тут є приємне доповнення коду (в MATLAB), але алгоритми було б легко реалізувати в R або деінде: https://purl.stanford.edu/vg705qn9070

Застереження:

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

+1, однак цей документ виглядає надзвичайно цікаво. Дуже дякую, що згадуєте про це.
амеба

4

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

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