Вибір компонентів PCA, які розділяють групи


13

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

  1. наскільки це розумно / виправдано, та
  2. чи є кращі способи досягнення того ж.

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

Ось мій підхід. Я буду використовувати приклад "metabo" набору даних з pca3d в Р.

Ідея полягає в тому, щоб оцінити, скільки дисперсії кожного компонента можна пояснити незалежною змінною. Для цього я обчислюю просту модель для кожного компонента і використовую як метрику, щоб упорядкувати компоненти від «найцікавішого» до «найменш цікавого».R2

require( pca3d )
# data on metabolic profiles of TB patients and controls
data( metabo )
# first column is the independent variable
pca <- prcomp( metabo[,-1], scale.= T ) 

# create a model for each component
lm.m <- lm( pca$x ~ metabo[,1] )
lm.s <- summary( lm.m )
lm.r2 <- sapply( lm.s, function( x ) x$r.squared )
plot( lm.r2, type= "l" )
text( 1:length( lm.r2 ), lm.r2, 1:length( lm.r2 ), pos= 3 )

Ось результат. Діаграма показує відсоток у відхиленні кожного компонента, пояснений незалежною змінною в metabo[,1].

введіть тут опис зображення

Ми можемо сортувати компоненти по щоб з’ясувати, з якими потрібно відобразити ; перші три компоненти - 2, 1 і 7.r2order( lm.r2, decreasing= TRUE )

pca3d( pca, components= c( 1, 2, 7 ), group= metabo[,1] )

Ось сюжет:

введіть тут опис зображення

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

Щоб переформулювати мої запитання,

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

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


2
Я хотів би зробити лише два коментарі щодо вашого цікавого питання. 1) Схарактеризуйте словами свій підхід, окрім показу коду (пам’ятайте, що люди тут використовують різні програми, не обов'язково R). 2) Скептер не дуже переконливий без шипів на його підлогу. Крім того , якщо у вас є якісь - або конкретні сумніви щодо приводу вашого підходу, будь ласка , говоріть їм, щоб зробити це питання більш зосередженим.
ttnphns

1
відредаговано: Для уточнення ви спочатку проводите PCA, а потім намагаєтесь виділити основні компоненти, які найкраще пояснюються якоюсь конкретною змінною? Ви перехресно оцінюєте їх за допомогою сюжету? Може статися так, що якийсь х, який ви вибираєте зі свого набору даних, трапляється пояснити велику дисперсію в основному компоненті, але я не впевнений, що це означає що, якщо дисперсія дуже низька вздовж цього основного компонента.
shadowtalker

1
@ssdecontrol Ну що, я роблю погану рандомізацію людини, щоб побачити, чи обчислена значно вище фонового шуму. Що стосується того, чи означає це щось - справа в тому, що зазвичай це відбувається насправді. Оскільки я так чи інакше роблю всі набори класичних аналізів та / або керую машинним навчанням, коли я бачу, що PCX пояснюється у значній частині класифікатором, я (i) знайду кілька змінних, що відрізняються між групами цього класифікатора та ( ii) що я можу успішно тренувати SML. R2
Січень

2
to find out what share of the overall variance in the data matrix is explained by a given classificationЯкщо ви хочете дізнатися саме це, вам не потрібно PCA. Просто обчисліть частку міжгрупової суми квадратів до загальної суми квадратів: (SStotal-SSwithin)/SStotalде SSwithin об'єднано в межах групи суми квадратів.
ttnphns

1
Я не бачу жодних проблем з тим, як ви використовуєте PCA, але я не розумію, для чого вам це потрібно. (Тільки тому, що вам це подобається, можливо?) Тому що я не бачу вашої точної мети, я нічого не можу сказати для вас Is there anything better?.
ttnphns

Відповіді:


8

Відповідь на ваше запитання №1 - так, ваше рішення - екскавація даних. Відповідь на ваше запитання №2 - так, в літературі є чудові методи.

n<<p

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

Якщо ви по-справжньому прагнете керувати PCA на своїх даних, а потім використовуєте багатоваріантну регресію, ви повинні використовувати відповідний метод. Наприклад, вивчіть MRCE та споріднені методи [1].

Однак, незважаючи на кілька чудових коментарів, які ви зробили, все, що в аналізі, як представлено в даний час, говорить про те, що ваша кінцева мета - виявити взаємозв'язки між великим набором безперервних змінних (метабо [, - 1]) та однією категоричною змінною (метабо [ , 1]). PCA - це поганий спосіб цього досягти. У великомірному випадку є два загальні класи вирішення цієї проблеми: по-перше, рішення, що припускають розрідженість, і рішення, що передбачають факторну структуру.

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

Зауважте, що я не обов'язково рекомендую будь-які методи, які я згадав для ваших даних; ви повинні ретельно розглянути свої цілі та апріорні знання проблеми при виборі відповідного методу.

[1] Ротман, Левіна, Чжу (2010). Рідка багатоваріантна регресія з оцінкою коваріації. Журнал обчислювальної та графічної статистики, Том 19, Число 4, Сторінки 947–962.

[2] Ніколай Т. Трендафілов, Ян Т. Джолліфф, DALASS: Варіабельний вибір у дискримінантному аналізі за допомогою LASSO, Обчислювальна статистика та аналіз даних, Том 51, Випуск 8, 1 травня 2007 р., Сторінки 3718-3736.

[3] Ю, Ян (2001). Прямий алгоритм LDA для об'ємних даних із застосуванням для розпізнавання обличчя. Розпізнавання шаблонів 34, 2067-2070.


2
Я розпочав нову нагороду, щоб нагородити цю відповідь.
січня

1
@January: Це хороша відповідь, але я хотів би зазначити, що "прямий LDA" є в кращому випадку дуже дивним алгоритмом , див. Гао та Девіс, 2005, Чому прямий LDA не є еквівалентним LDA : "ми це демонструємо. .. D-LDA може накласти значне обмеження продуктивності в загальних програмах ", тому будьте обережні.
амеба каже: Відновіть Моніку

@amoeba Дякую за цитування. У мене вже деякий час виникають занепокоєння щодо DLDA, оскільки немає виправдання вибору компонентів саме таким чином. Я розглядаю це як дуже специфічне рішення, яке не обов'язково узагальнює поза межами проблем дискримінації, хоча воно може бути легко адаптоване до будь-якої проблеми з певними знаннями, які компоненти є найбільш корисними для дискримінації. Кожне рішення, що реалізує дискримінацію великої міри з припущеною факторною структурою, страждає від проблем ... Ви знайшли кращі підходи? Мені тут цікава ваша думка.
ахфосс

nk

4

@ahfoss вже вказав на LDA як аналог класифікації PCA. Насправді ці два методи пов'язані між собою, а також з PLS:

nature of dependent variable (for supervised)     unsupervised    supervised
or structure of data (unsupervised)
continuous                                        PCA             PLS
factor/groups/classes                                             LDA

II

np

ПЛС можна розглядати як регуляризацію, як LASSO, а також доступна розріджена PLS (хоча я не використовував її: мої дані більше підходять до звичайних PLS, які не передбачають рідкості). Для приємного обговорення різних методів регуляризації див., Наприклад, Елементи статистичного навчання .

np

T=X×W
L=X×B


L(n×k1)=T(n×m)B(m×k1)
L(n×k1)=X(n×p)W(p×m)B(m×k1)
L(n×k1)=X(n×p)B(p×k1)
BBBLBBB

Практична примітка: якщо ви працюєте в R, у мене розробляється пакет, який надає моделі PLS-LDA та PCA-LDA. Дайте мені знати, чи хочете ви спробувати.


Щоб уникнути днопоглиблення даних, потрібно перевірити остаточну модель (= виміряти її продуктивність) незалежними даними.

Незалежне тут означає , що в цьому випадку (пацієнт?) Чи не вносять вклад в моделі фитинга в будь-якому шляху. Зокрема,

  • не вводили жодного виду попередньої обробки, що передбачає кілька випадків, таких як центрування або стандартизація
  • не ввів розрахунок PCA / PLS / ...
  • не використовувався для оцінки гіперпараметрів.

Оскільки у вас є лише кілька випадків, стратегія перекомпонування буде доречною. У цій ситуації, мабуть, найкраще за допомогою зовнішніх знань зафіксувати будь-які гіперпараметри (наприклад, кількість ПК або латентних змінних ПЛС або зв’язане з LASSO), щоб уникнути другого внутрішнього розбиття ваших навчальних даних для оптимізації гіперпараметра.


+1 для перехресних моделей. Надзвичайно важливий. Однак я хотів би почути від ОП @January, який заявив, що не зацікавлений у дискримінації, хоча його проблема виглядає дуже добре підходить до аналізу дискримінації / класифікації.
ахфосс

Я не згоден з вашим твердженням, що k-засоби / PCA / тощо належать одній родині. Це означає, що це окремі випадки однієї моделі або алгоритму, що не відповідає дійсності. Алгоритм PCA - це простий матричний обчислення, тоді як k-засоби - це ітеративний алгоритм, який порівнюється з алгоритмом ЕМ (технічно не правильний, оскільки функція вірогідності не існує, але все-таки корисний порівняння в деяких відношеннях ІМХО).
ахфосс

1
Ви маєте на увазі функцію plsgenomics :: pls.lda? Якщо ні, то як ваш пакет відрізняється / покращується? Я також зазначу зацікавленим читачам, що PLS-LDA в цілому перевершує загальноприйняту техніку простого запуску PLS із змінною результатом, кодованою фіктивним кодом. Хоча цей останній підхід не обов'язково є неправильним, він, безумовно, хитрує, не в останню чергу тому, що ви можете отримати прогнозовані ймовірності менше нуля або більше, ніж один!
ахфосс

@ahfoss: Я не мав на увазі алгоритми, оскільки одна і та ж основна модель може бути обчислена за різними алгоритмами. Наприклад, для PCA можна використовувати ітеративний (NIPALS, POWER) або неітераційний (EVD, SVD) алгоритми. Можливо, кращим терміном замість k-засобів був би "кластерний аналіз, що мінімізує суму кластерів у межах кластера, для яких, наприклад, k-означає, є евристичним наближенням". Зараз у мене немає часу, згодом переглянемо відповідь, або ми зможемо зустрітися в чаті і знайти кращий опис.
cbeleites незадоволений SX

1
... Технічна різниця полягає в тому, що я використовую pls::plsrдля pls (що дозволяє вибирати різні алгоритми). У мене є купа функцій після обробки, наприклад, для гортання та обертання моделі, що іноді корисно для інтерпретації.
cbeleites незадоволений SX
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.