PCA і поїзд / тест розділилися


35

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

Чи можливо зробити PCA один раз для всього набору даних, а потім використовувати новий набір даних меншої розмірності для перехресної перевірки, як описано вище? Або мені потрібно зробити окремий PCA для кожного навчального набору (що означатиме зробити окремий PCA для кожного класифікатора та для кожного перехресного перевірки)?

З одного боку, PCA не використовує етикетки. З іншого боку, він використовує дані тесту для трансформації, тому я боюся, що це може змістити результати.

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


Для подальшого ознайомлення. Дивіться це питання про те, як зробити крос-валідацію з PCA в R з caretпакетом: PCA та k-кратна перехресна перевірка в Caret .
амеба каже, що повернеться до Моніки


Відповіді:


34

Для вимірювання похибки узагальнення вам потрібно зробити останнє: окремий PCA для кожного навчального набору (що означало б зробити окремий PCA для кожного класифікатора та для кожного згину CV).

Потім ви застосуєте те саме перетворення до тестового набору: тобто ви не робите окремого PCA на тестовому наборі! Ви віднімаєте середнє значення (і при необхідності ділиться на стандартне відхилення) тренувального набору, як пояснено тут: Нульове центрування тестового набору після PCA на навчальному наборі . Потім ви проектуєте дані на ПК навчального набору.


  • Вам потрібно буде визначити автоматичний критерій для кількості використовуваних ПК.
    Оскільки це лише перший крок зменшення даних до "фактичної" класифікації, використання декількох занадто багатьох ПК, швидше за все, не зашкодить їх продуктивності. Якщо ви очікуєте, скільки ПК буде корисним з досвіду, ви можете просто скористатися цим.

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

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

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


Мені все ще важко зрозуміти, як початковий PCA у всьому наборі даних буде зміщувати результати, не бачачи міток класів.

Але він дійсно бачить дані. І якщо дисперсія між класом велика порівняно з дисперсією між класом, дисперсія між класом впливатиме на проекцію PCA. Зазвичай крок PCA робиться тому, що потрібно стабілізувати класифікацію. Тобто, в ситуації , коли додаткові випадки роблять вплив на моделі.

Якщо дисперсія між класами невелика, це зміщення не буде великим, але в цьому випадку PCA також не допоможе класифікації: проекція PCA не може не підкреслити поділ між класами.


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

@Bitwise: перегляньте мою
редакцію

Привіт @cbeleites, я хочу зробити цю тему "канонічною" темою для запитань про PCA та розбиття поїздів / тестів (їх багато!) Та позначте їх як дублікати. Я взяв на себе сміливість додати до Вашої відповіді одне речення, яке може усунути непорозуміння, яке часто виникає в повторюваних питаннях. Сподіваюся, ви задоволені моєю редакцією, але будь ласка, перевірте! +1, btw.
Амеба каже, що повернеться Моніка

@amoeba, дуже дякую Так, це важливий момент, який ви додали. Будь-яке вдячне за роботу, яку ви вклали в прибирання колекції питань.
cbeleites підтримує Моніку

1
@FelipeAlmeida: так
cbeleites підтримує Моніку

2

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

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


0

Зробіть останнє, PCA на тренуванні встановлюйте кожен раз

У PCA ми вивчаємо зменшену матрицю: U, яка допомагає нам отримати проекціюZ_train = U x X_train

У тестовий час ми використовуємо той же U, який вивчили на етапі тренувань, а потім обчислимо проекціюZ_test = U x X_test

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

Основне припущення полягає в тому, що набір тестів і поїздів повинен здійснюватися з одного і того ж розподілу, що пояснює вищевказаний метод.

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