Факторний аналіз. Метод основних компонентів. Метод основних компонентів Критерії відбору основних компонентів

Метод головних компонент – це метод, який переводить велику кількість пов'язаних між собою (залежних, корелюючих) змінних у меншу кількість незалежних змінних, оскільки велика кількість змінних часто ускладнює аналіз та інтерпретацію інформації. Строго кажучи, цей метод не відноситься до факторного аналізу, хоча має з ним багато спільного. Специфічним є, по-перше, те, що в ході обчислювальних процедур одночасно отримують всі головні компоненти та їх число спочатку дорівнює кількості вихідних змінних; по-друге, постулюється можливість повного розкладання дисперсії всіх вихідних змінних, тобто. її повне пояснення через латентні фактори (узагальнені ознаки).

Наприклад, уявимо, що ми провели дослідження, в якому виміряли у студентів інтелект з тесту Векслера, тесту Айзенка, тесту Равена, а також успішність із соціальної, когнітивної та загальної психології. Цілком можливо, що показники різних тестів на інтелект корелюватимуть між собою, так як вони вимірюють одну характеристику піддослідного - його інтелектуальні здібності, хоча і по-різному. Якщо змінних у дослідженні занадто багато ( x 1 , x 2 , …, x p ) , Деякі їх взаємопов'язані, то в дослідника іноді виникає бажання зменшити складність даних, скоротивши кількість змінних. Для цього і служить метод головних компонентів, який створює кілька нових змінних y 1 , y 2 , …, y p, кожна з яких є лінійною комбінацією початкових змінних x 1 , x 2 , …, x p :

y 1 =a 11 x 1 +a 12 x 2 +…+a 1p x p

y 2 =a 21 x 1 +a 22 x 2 +…+a 2p x p

(1)

y p =a p1 x 1 +a p2 x 2 +…+a pp x p

Змінні y 1 , y 2 , …, y pназиваються головними компонентами чи чинниками. Таким чином, фактор – це штучний статистичний показник, що виникає внаслідок спеціальних перетворень кореляційної матриці. . Процедура вилучення факторів називається факторизацією матриці. В результаті факторизації з кореляційної матриці може бути вилучено різну кількість факторів аж до числа, що дорівнює кількості вихідних змінних. Однак фактори, що визначаються в результаті факторизації, як правило, не є рівноцінними за своїм значенням.

Коефіцієнти a ij, що визначають нову змінну, вибираються таким чином, щоб нові змінні (головні компоненти, фактори) описували максимальну кількість варіативності даних та не корелювали між собою. Часто корисно уявити коефіцієнти a ij таким чином, щоб вони являли собою коефіцієнт кореляції між вихідною змінною та новою змінною (фактором). Це досягається множенням a ijстандартне відхилення фактора. У більшості статистичних пакетів так і робиться (у програмі STATISTICA також). Коефіцієнтиa ij Зазвичай вони подаються у вигляді таблиці, де фактори розташовуються у вигляді стовпців, а змінні у вигляді рядків:

Така таблиця називається таблицею (матрицею) факторних навантажень. Числа, наведені у ній, є коефіцієнтами a ij. Число 0,86 означає, що кореляція між першим фактором і значенням тесту Векслера дорівнює 0,86. Чим вище факторне навантаження по абсолютній величині, тим сильніший зв'язок змінної з фактором.

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

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

Цілі аналізу компонентів

Основна мета методу – виявити та зменшити розмірність набору даних, визначити нові значущі базові змінні. Для цього пропонується використовувати спеціальні інструменти, наприклад, зібрати багатовимірні дані в матриці даних TableOfReal, в якій рядки пов'язані з випадками та стовпцями змінних. Тому TableOfReal інтерпретується як вектори даних numberOfRows, кожен вектор яких має кількість елементів Columns.

Традиційно метод головних компонентів виконується за коваріаційною матрицею або кореляційною матрицею, які можна обчислити з матриці даних. Коваріаційна матриця містить масштабовані суми квадратів та крос-творів. Кореляційна матриця подібна до коваріаційної матриці, але в ній спочатку змінні, тобто стовпці, були стандартизовані. Спочатку доведеться стандартизувати дані, якщо дисперсії чи одиниці виміру змінних сильно відрізняються. Щоб виконати аналіз, вибирають матрицю даних TabelOfReal у списку об'єктів та навіть натискають перейти.

Це призведе до появи нового об'єкта у списку об'єктів за методом основних компонентів. Тепер можна скласти графік кривих власних значень, щоб отримати уявлення про важливість кожного. І також програма може запропонувати дію: отримати частку дисперсії або перевірити рівність числа власних значень та отримати їхню рівність. Оскільки компоненти отримані шляхом вирішення конкретної задачі оптимізації, вони мають деякі «вбудовані» властивості, наприклад, максимальна мінливість. Крім того, існує низка інших їх властивостей, які можуть забезпечити факторний аналіз:

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

Вибір кількості точок зберігання

Існує два способи вибрати потрібну кількість компонентів для зберігання. Обидва методи ґрунтуються на відносинах між власними значеннями. Для цього рекомендується збудувати графік значень. Якщо точки на графіку мають тенденцію вирівнюватися і досить близькі до нуля, їх можна ігнорувати. Обмежують кількість компонентів до числа, яке припадає певна частка загальної дисперсії. Наприклад, якщо користувача задовольняє 95% загальної дисперсії - отримують кількість компонентів (VAF) 0.95.

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

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

Основним компонентом є нормалізована лінійна комбінація вихідних предикторів у наборі даних методом головних компонент для чайників. На зображенні вище PC1 та PC2 є основними компонентами. Допустимо, є низка предикторів, як X1, X2 ..., XP.

Основний компонент можна записати у вигляді: Z1 = 11X1 + 21X2 + 31X3 + .... + p1Xp

  • Z1 є першим головним компонентом;
  • p1 - ​​вектор навантаження, що складається з навантажень (1, 2.) першого основного компонента.

Навантаження обмежені сумою квадрата 1. Це пов'язано з тим, що велика величина навантажень може призвести до великої дисперсії. Він також визначає напрямок основної компоненти (Z1), за якою дані найбільше різняться. Це призводить до того, що лінія в просторі р-мер, найближче до n-спостережень.

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

Перший основний компонент призводить до рядка, який найближче до даних і зводить до мінімуму суму квадрата відстані між точкою даних та лінією. Другий головний компонент (Z2) також являє собою лінійну комбінацію вихідних предикторів, яка фіксує дисперсію, що залишилася, в наборі даних і некорельована Z1. Іншими словами, кореляція між першим і другим компонентами має дорівнювати нулю. Він може бути представлений як: Z2 = 12X1 + 22X2 + 32X3 + .... + p2Xp.

Якщо вони некорельовані, їх напрями мають бути ортогональними.

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

Наприклад, необхідно зробити перетворення на тестовий набір, включаючи функцію центру та масштабування в мові R (вер.3.4.2) та його бібліотеці rvest. R - вільна мова програмування для статистичних обчислень та графіки. Він був реконструйований 1992 року для вирішення статистичних завдань користувачами. Це повний процес моделювання після отримання PCA.

Для реалізації PCA в python імпортують дані з бібліотеки sklearn. Інтерпретація залишається такою ж, як і користувачів R. Тільки набір даних, що використовується для Python, являє собою очищену версію, в якій відсутні поставлені значення, що відсутні, а категоріальні змінні перетворюються на числові. Процес моделювання залишається таким самим, як описано вище для користувачів R. Метод головних компонент, приклад розрахунку:

Ідея методу основного компонента полягає у наближенні цього виразу для виконання факторного аналізу. Замість підсумовування від 1 до p тепер підсумовуються від 1 до m, ігноруючи останні p-m членів у сумі та отримуючи третій вираз. Можна переписати це, як показано у виразі, що використовується для визначення матриці факторних навантажень L, що дає остаточне вираження матричної нотації. Якщо використовуються стандартизовані вимірювання, замінюють на матрицю кореляційної вибірки R.

Це формує матрицю L фактор-навантаження у факторному аналізі та супроводжується транспонованою L. Для оцінки конкретних дисперсій фактор-модель для матриці дисперсії-коваріації.

Тепер дорівнюватиме матриці дисперсії-коваріації мінус LL".

  • Xi – вектор спостережень для i-го суб'єкта.
  • S означає нашу вибіркову дисперсійно-коваріаційну матрицю.

Тоді p власні значення для цієї матриці коваріації дисперсії, а також відповідних власних векторів для цієї матриці.

Власні значення S:λ^1, λ^2, ..., λ^п.

Власні вектори S: е^1, e^2, ..., e^п.

Аналіз PCA – це потужний та популярний метод багатовимірного аналізу, який дозволяє досліджувати багатовимірні набори даних із кількісними змінними. За цією методикою широко використовується метод головних компонент у біоінформатиці, маркетингу, соціології та багатьох інших галузях. XLSTAT надає повну і гнучку функцію для вивчення даних безпосередньо в Excel і пропонує кілька стандартних і розширених опцій, які дозволять отримати глибоке уявлення про дані користувача.

Можна запустити програму на необроблених даних чи матрицях відмінностей, додати додаткові змінні чи спостереження, відфільтрувати змінні відповідно до різними критеріями оптимізації читання карт. Крім того, можна виконувати повороти. Легко налаштовувати кореляційне коло, графік спостережень як стандартні діаграми Excel. Достатньо перенести дані зі звіту про результати, щоб використати їх у аналізі.

XLSTAT пропонує кілька методів обробки даних, які будуть використовуватися на вхідних даних до обчислень основного компонента:

  1. Pearson, класичний PCA, який автоматично стандартизує дані для обчислень, щоб уникнути роздутого впливу змінних із великими відхиленнями від результату.
  2. Коваріація, що працює з нестандартними відхиленнями.
  3. Полігоричні, для порядкових даних.

Приклади аналізу даних розмірності

Можна розглянути метод основних компонентів з прикладу виконання симетричної кореляційної чи ковариационной матриці. Це означає, що матриця має бути числовою та мати стандартизовані дані. Допустимо, є набір даних розмірністю 300(n)×50(p). Де n – кількість спостережень, а p – число предикторов.

Оскільки є великий p = 50, можливо p(p-1)/2 діаграма розсіювання. У цьому випадку було б гарним підходом вибрати підмножину предиктора p (p<< 50), который фиксирует количество информации. Затем следует составление графика наблюдения в полученном низкоразмерном пространстве. Не следует забывать, что каждое измерение является линейной комбинацией р-функций.

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

Компоненти можна намалювати на діаграмі розсіювання в такий спосіб.

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

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

Метод головних компонентів в економетриці – це аналіз змінних, таких як ВНП, інфляція, обмінні курси і т. д. Їх рівняння потім оцінюються за наявними даними, головним чином, сукупними тимчасовими рядами. Однак економетричні моделі можуть використовуватися для багатьох програм, а не для макроекономічних. Таким чином, економетрика означає економічний вимір.

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

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

  • характер ймовірнісного процесу, що генерує дані;
  • рівень знань про це;
  • розмір системи;
  • форма аналізу;
  • обрій прогнозу;
  • математична складність системи.

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

Непараметрична статистика

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

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

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

Метод головних компонент у суспільних науках використовується для виконання двох головних завдань:

  • аналізу за даними соціологічних досліджень;
  • побудови моделей суспільних явищ.

Алгоритми розрахунку моделей

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

  • він опрацьовує відсутні дані;
  • послідовно обчислює компоненти.

Мета розгляду цього алгоритму:

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

Алгоритм послідовно витягує кожен компонент, починаючи з першого напряму найбільшої дисперсії, а потім другого і т.д. NIPALS обчислює один компонент за один раз. Обчислений перший еквівалент t1t1, а також p1p1 векторів, які були б знайдені з власного значення або розкладання за сингулярними значеннями, може обробляти дані в XX. Він завжди сходиться, але збіжність іноді може бути повільною. І також відомий, як алгоритм потужності для обчислення власних векторів і власних значень і добре працює для величезних наборів даних. Google використовував цей алгоритм для ранніх версій власної пошукової системи.

Алгоритм NIPALS показаний нижче.

Оцінки коефіцієнта матриці Т потім обчислюється як T=XW і частково коефіцієнтів регресії квадратів B з Y на X, обчислюються, як B = WQ. Альтернативний метод оцінки частин регресії часткових найменших квадратів можна описати так.

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

Компонентний аналіз відноситься до багатовимірних методів зниження розмірності. Він містить один спосіб - спосіб основних компонентів. Головні компоненти є ортогональною системою координат, у якій дисперсії компонент характеризують їх статистичні властивості.

Враховуючи, що об'єкти дослідження в економіці характеризуються великою але кінцевою кількістю ознак, вплив яких піддається впливу великої кількості випадкових причин.

Обчислення основних компонент

Першою головною компонентою Z1 досліджуваної системи ознак Х1, Х2, Х3, Х4,…, Хn називається така центровано-нормована лінійна комбінація цих ознак, яка серед інших центровано-нормованих лінійних комбінацій цих ознак має дисперсію найбільш мінливу.

Як другий головний компонент Z2 ми будемо брати таку центровано - нормовану комбінацію цих ознак, яка:

не корельована з першою головною компонентою,

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

K-ою головною компонентою Zk (k=1…m) ми називатимемо таку центровано - нормовану комбінацію ознак, яка:

не корельована з до-1 попередніми головними компонентами,

серед усіх можливих комбінацій вихідних ознак, які не

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

Введемо ортогональну матрицю U і перейдемо від змінних Х до змінних Z, причому

Вектор вибирається так, щоб дисперсія була максимальною. Після одержання вибирається т. о., щоб дисперсія була максимальною за умови, що не корелюється з і т.д.

Оскільки ознаки виміряні в непорівнянних величинах, то зручніше перейти до центровано-нормованих величин. Матрицю вихідних центровано-нормованих значень ознак знайдемо із співвідношення:

де - незміщена, заможна та ефективна оцінка математичного очікування,

Незміщена, заможна та ефективна оцінка дисперсії.

Матриця спостережених значень вихідних ознак наведена у Додатку.

Центрування та нормування здійснено за допомогою програми "Stadia".

Оскільки ознаки центровані та нормовані, то оцінку кореляційної матриці можна зробити за формулою:


Перед тим, як проводити компонентний аналіз, проведемо аналіз незалежності вихідних ознак.

Перевірка значущості матриці парних кореляцій за допомогою критерію Вілкс.

Висуваємо гіпотезу:

Н0: незначна

Н1: значуща

125,7; (0,05;3,3) = 7,8

т.к > , то гіпотеза Н0 відкидається і матриця є значущою, отже, має сенс проводити компонентний аналіз.

Перевіримо гіпотезу про діагональність коваріаційної матриці

Висуваємо гіпотезу:

Будуємо статистику, розподілену за законом із ступенями свободи.

123,21, (0,05;10) =18,307

т.к >, то гіпотеза Н0 відкидається і має сенс проводити компонентний аналіз.

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

Використовуємо для цієї операції функцію eigenvals системи MathCAD, яка повертає власні числа матриці:

Т.к. вихідні дані є вибірку з генеральної сукупності, ми отримали не власні числа і власні вектора матриці, які оцінки. Нас цікавитиме наскільки “добре” зі статистичної точки зору вибіркові характеристики описують відповідні параметри для генеральної сукупності.

Довірчий інтервал для i-го власного числа шукається за такою формулою:

Довірчі інтервали для своїх чисел в результаті набувають вигляду:

Оцінка значення кількох власних чисел потрапляє у довірчий інтервал інших чисел. Необхідно перевірити гіпотезу про кратність власних чисел.

Перевірка кратності здійснюється за допомогою статистики

де r-кількість кратних коренів.

Ця статистика у разі справедливості розподілена згідно із законом із кількістю ступенів свободи. Висунемо гіпотези:

Оскільки гіпотеза відкидається, тобто власні числа і не кратні.

Оскільки гіпотеза відкидається, тобто власні числа і не кратні.

Необхідно виділити основні компоненти лише на рівні інформативності 0,85. Міра інформативності показує яку частину або якусь частину дисперсії вихідних ознак становлять k-перших головних компонент. Мірою інформативності називатимемо величину:

На заданому рівні інформативності виділено три основні компоненти.

Запишемо матрицю =

Для отримання нормалізованого вектора переходу від вихідних ознак до основних компонентів необхідно вирішити систему рівнянь: де - відповідне власне число. Після отримання рішення системи необхідно потім нормувати отриманий вектор.

Для вирішення цього завдання скористаємося функцією eigenvec системи MathCAD, яка повертає нормований вектор для відповідного власного числа.

У нашому випадку перших чотирьох головних компонентів достатньо для досягнення заданого рівня інформативності, тому матриця U (матриця переходу від вихідного базису до базису з власних векторів)

Будуємо матрицю U, стовпцями якої є власні вектори:

Матриця вагових коефіцієнтів:

Коефіцієнти матриці А є коефіцієнтами кореляції між центровано - нормованими вихідними ознаками та ненормованими головними компонентами, і показують наявність, силу та напрямок лінійного зв'язку між відповідними вихідними ознаками та відповідними головними компонентами.

Метод основних компонент

Метод основних компонент(Англ. Principal component analysis, PCA ) - один з основних способів зменшити розмірність даних, втративши найменшу кількість інформації. Винайдений К. Пірсон (англ. Karl Pearson ) у р. Застосовується у багатьох областях, як-от розпізнавання образів , комп'ютерне зір , стиск даних, і т. п. Обчислення основних компонентів зводиться до обчислення власних векторів і власних значень ковариационной матриці вихідних даних. Іноді метод основних компонентів називають перетворенням Кархунена-Лоева(Англ. Karhunen-Loeve) або перетворення Хотеллінга (англ. Hotelling transform). Інші способи зменшення розмірності даних - це метод незалежних компонентів, багатовимірне шкалювання, а також численні нелінійні узагальнення: метод головних кривих і різноманіття, метод пружних карт, пошук найкращої проекції (англ. Projection Pursuit), нейромережеві методи «вузького горла», та ін.

Формальна постановка задачі

Завдання аналізу основних компонентів, має, як мінімум, чотири базові версії:

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

Перші три версії оперують кінцевими множинами даних. Вони еквівалентні і не використовують жодної гіпотези щодо статистичного породження даних. Четверта версія оперує випадковими величинами. Кінцеві множини з'являються тут як вибірки з даного розподілу, а вирішення трьох перших завдань - як наближення до «істинного» перетворення Кархунена-Лоева. У цьому виникає додаткове і цілком тривіальне питання точності цього наближення.

Апроксимація даних лінійними різноманіттями

Ілюстрація до знаменитої роботи К. Пірсона (1901): дані точки на площині, - відстань від до прямої. Шукається пряма , що мінімізує суму

Метод головних компонентів починався із завдання найкращої апроксимації кінцевої множини точок прямими і площинами (К. Пірсон, 1901). Дана кінцева безліч векторів. Для кожного серед усіх - мірних лінійних різноманіття в знайти таке , що сума квадратів ухилень від мінімальна:

,

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

,

де евклідова норма, - евклідовий скалярний твір, або в координатній формі:

.

Розв'язання задачі апроксимації для дається набором вкладених лінійних різноманітностей, . Ці лінійні різноманіття визначаються ортонормованим набором векторів (векторами основних компонентів) і вектором. Вектор шукається як вирішення задачі мінімізації для :

.

Вектори основних компонентів можуть бути знайдені як рішення однотипних задач оптимізації:

1) централізуємо дані (віднімаємо середнє): . Тепер; 2) знаходимо першу головну компоненту як розв'язання задачі; . Якщо рішення не єдине, то вибираємо одне з них. 3) Віднімаємо з даних проекцію першу головну компоненту: ; 4) знаходимо другу головну компоненту як розв'язання задачі. Якщо рішення не єдине, то вибираємо одне з них. … 2k-1) Віднімаємо проекцію на -ю головну компоненту (нагадаємо, що проекції на попередні основні компоненти вже віднято): ; 2k) знаходимо k-ю головну компоненту як розв'язання задачі: . Якщо рішення не єдине, то вибираємо одне з них. …

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

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

Пошук ортогональних проекцій з найбільшим розсіюванням

Перша головна компонента максимізує вибіркову дисперсію проекції даних

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

Теорія сингулярного розкладання була створена Дж. Дж. Сільвестр (англ. James Joseph Sylvester ) у м. і викладена у всіх докладних посібниках з теорії матриць .

Простий ітераційний алгоритм сингулярного розкладання

Основна процедура - пошук найкращого наближення довільної матриці матрицею виду (де - мірний вектор, а - мірний вектор) методом найменших квадратів:

Вирішення цієї задачі дається послідовними ітераціями за явними формулами. При фіксованому векторі значення, що доставляють мінімум формі, однозначно і явно визначаються з рівностей:

Аналогічно, при фіксованому векторі визначаються значення:

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

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

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

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

Сингулярне розкладання тензорів та тензорний метод головних компонент

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

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

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

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

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

Матриця перетворення до основних компонентів

Матриця перетворення даних до основних компонентів складається з векторів основних компонентів, розташованих у порядку зменшення своїх значень:

( означає транспонування),

Тобто, матриця є ортогональною.

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

Залишкова дисперсія

Нехай дані центровані, . При заміні векторів даних на їхню проекцію на перші головні компоненти вноситься середній квадрат помилки з розрахунку на один вектор даних:

де власні значення емпіричної коваріаційної матриці, розташовані в порядку зменшення, з урахуванням кратності.

Ця величина називається залишковою дисперсією. Величина

називається поясненою дисперсією. Їхня сума дорівнює вибірковій дисперсії. Відповідний квадрат відносної помилки – це відношення залишкової дисперсії до вибіркової дисперсії (тобто частка непоясненої дисперсії):

За відносною помилкою оцінюється застосування методу основних компонентів з проектуванням на перші компоненти.

Зауваження: у більшості обчислювальних алгоритмів власні числа з відповідними власними векторами – головними компонентами обчислюються в порядку «від великих – до менших». Для обчислення достатньо обчислити перші власних чисел і слід емпіричної коваріаційної матриці (суму діагональних елементів, тобто дисперсій по осях). Тоді

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

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

Питання: як оцінити кількість необхідних основних компонентів, якщо відношення «сигнал/шум» наперед невідоме?

Найпростіший і найстаріший метод відбору головних компонентів дає правило Кайзера(Англ. Kaiser"s rule): значущі основні компоненти, котрим

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

Оцінка числа основних компонентів за правилом зламаної тростини

Приклад: оцінка числа основних компонент за правилом зламаної тростини у розмірності 5.

Одним із найбільш популярних евристичних підходів до оцінки кількості необхідних головних компонентів є правило зламаної тростини(Англ. Broken stick model). Набір нормованих на одиничну суму власних чисел (, ) порівнюється з розподілом довжин уламків тростини одиничної довжини, зламаною -й випадково обраної точці (точки розлому вибираються незалежно і рівнорозподілені по довжині тростини). Нехай () - Довжини отриманих шматків тростини, занумеровані в порядку зменшення довжини: . Неважко знайти математичне очікування:

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

Рис. наведено приклад для 5-вимірного випадку:

=(1+1/2+1/3+1/4+1/5)/5; =(1/2+1/3+1/4+1/5)/5; =(1/3+1/4+1/5)/5; =(1/4+1/5)/5; =(1/5)/5.

Для прикладу вибрано

=0.5; =0.3; =0.1; =0.06; =0.04.

За правилом зламаної тростини в цьому прикладі слід залишати 2 головні компоненти:

За оцінками користувачів, правило зламаної тростини має тенденцію занижувати кількість значних основних компонент.

Нормування

Нормування після приведення до основних компонентів

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

.

Саме це перетворення найчастіше називається перетворенням Кархунена-Лоева. Тут – вектори-стовпці, а верхній індекс означає транспонування.

Нормування до обчислення основних компонентів

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

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

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

Механічна аналогія та метод головних компонент для зважених даних

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

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

Більш загальний спосіб зважування дає максимізація виваженої суми попарних відстанейміж проекціями. Для кожних двох точок даних вводиться вага ; та . Замість емпіричної коваріаційної матриці використовується

При симетрична матриця позитивно визначена, оскільки позитивна квадратична форма:

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

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

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

Спеціальна термінологія

У статистиці під час використання методу головних компонент використовують кілька спеціальних термінів.

Матриця даних; кожен рядок - вектор передопрацьованихданих ( центрованихі правильно нормованих), число рядків – (кількість векторів даних), число стовпців – (розмірність простору даних);

Матриця навантажень(Loadings); кожен стовпець - вектор головних компонент, число рядків - (розмірність простору даних), число стовпців - (кількість векторів головних компонент, вибраних проектування);

Матриця рахунків(Scores); кожен рядок – проекція вектора даних на головні компоненти; число рядків - (кількість векторів даних), кількість стовпців - (кількість векторів основних компонентів, вибраних для проектування);

Матриця Z-рахунків(Z-scores); кожен рядок - проекція вектора даних на головні компоненти, нормована на одиничну вибіркову дисперсію; число рядків - (кількість векторів даних), кількість стовпців - (кількість векторів основних компонентів, вибраних для проектування);

Матриця помилок(або залишків) (Errors or residuals) .

Основна формула:

Межі застосування та обмеження ефективності методу

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

Проте метод який завжди ефективно знижує розмірність при заданих обмеженнях на точність . Прямі та площини не завжди забезпечують хорошу апроксимацію. Наприклад, дані можуть з хорошою точністю слідувати будь-якої кривої, а ця крива може бути складно розташована в просторі даних. У цьому випадку метод головних компонент для прийнятної точності вимагатиме кількох компонент (замість однієї), або взагалі не дасть зниження розмірності при прийнятній точності. Для роботи з такими «кривими» головними компонентами винайдено метод головних різноманітностей та різні версії нелінійного методу головних компонентів. Більше неприємностей можуть завдати дані складної топології. Для їх апроксимації також винайдені різні методи, наприклад, карти Кохонена, що самоорганізуються, нейронний газ або топологічні граматики. Якщо дані статистично породжені з розподілом, що відрізняється від нормального, то для апроксимації розподілу корисно перейти від головних компонент до незалежним компонентам, які вже не ортогональні у вихідному скалярному творі Нарешті, для ізотропного розподілу (навіть нормального) замість еліпсоїда розсіювання отримуємо шар, і зменшити розмірність методами апроксимації неможливо.

Приклади використання

Візуалізація даних

Візуалізація даних - представлення у наочній формі даних експерименту чи результатів теоретичного дослідження.

Першим вибором у візуалізації множини даних є ортогональне проектування на площину перших двох головних компонент (або 3-мірне простір перших трьох головних компонент). Площина проектування є, по суті, плоским двовимірним «екраном», розташованим таким чином, щоб забезпечити «картинку» даних з найменшими спотвореннями. Така проекція буде оптимальна (серед усіх ортогональних проекцій на різні двовимірні екрани) у трьох відношеннях:

  1. Мінімальна сума квадратів відстаней від точок даних до проекцій на площину перших головних компонентів, тобто екран розташований максимально близько по відношенню до хмари точок.
  2. Мінімальна сума спотворень квадратів відстаней між усіма парами точок із хмари даних після проектування точок на площину.
  3. Мінімальна сума спотворень квадратів відстаней між усіма точками даних та їх «центром тяжкості».

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

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

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

Придушення шуму на зображеннях

Хемометрика

Метод головних компонент – один з основних методів у хемометриці (англ. Chemometrics ). Дозволяє розділити матрицю вихідних даних X на дві частини: «змістовну» та «шум». За найбільш популярним визначенням «Хемометрика - це хімічна дисципліна, що застосовує математичні, статистичні та інші методи, засновані на формальній логіці, для побудови або відбору оптимальних методів вимірювання та планів експерименту, а також для отримання найважливішої інформації при аналізі експериментальних даних».

Психодіагностика

  1. аналіз даних (опис результатів опитувань чи інших досліджень, які у вигляді масивів числових даних);
  2. опис соціальних явищ (побудова моделей явищ, зокрема і математичних моделей).

У політології метод головних компонентів був основним інструментом проекту «Політичний Атлас Сучасності» для лінійного та нелінійного аналізу рейтингів 192 країн світу за п'ятьма спеціально розробленими інтегральними індексами (рівня життя, міжнародного впливу, загроз, державності та демократії). Для картографії результатів цього аналізу розроблено спеціальну ГІС (Геоінформаційну систему), що поєднує географічний простір з простором ознак. Також створено карти даних політичного атласу, що використовують як підкладку двовимірні основні різноманіття в п'ятивимірному просторі країн. Відмінність карти даних від географічної карти у тому, що у географічної карті поруч виявляються об'єкти, які мають подібні географічні координати, тоді як у карті даних поруч виявляються об'єкти (країни) з подібними ознаками (індексами).

У цій статті я хотів би розповісти про те, як саме працює метод аналізу головних компонент (PCA – principal component analysis) з точки зору інтуїції, що стоїть за її математичним апаратом. Найбільш просто, але докладно.

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

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

Наприклад, витрата палива в нас вимірюється в літрах на 100 км, а США в милях на галон. На перший погляд, величини різні, але насправді вони залежать один від одного. У милі 1600км, а галоні 3.8л. Одна ознака строго залежить від іншої, знаючи одну, знаємо й іншу.

Але набагато частіше буває так, що ознаки залежать одна від одної не так строго і (що важливо!) не так очевидно. Об'єм двигуна в цілому позитивно впливає на розгін до 100 км/год, але це не завжди. А ще може виявитися, що з урахуванням не видимих ​​на перший погляд факторів (типу поліпшення якості палива, використання легших матеріалів та інших сучасних досягнень) рік автомобіля не сильно, але теж впливає на його розгін.

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

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

Крок 1. Підготовка даних

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

Згенеруємо вибірку:

X = np.arange(1,11) y = 2 * x + np.random.randn(10)*2 X = np.vstack((x,y)) print X OUT: [[ 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. ] [ 2.73446908 4.35122722 7.21132988 11.24872601 9.58103444 12.09865079 129 3.9

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

Для початку трохи статистики. Згадаємо, що з описи випадкової величини використовуються моменти. Потрібні нам – матюки. очікування та дисперсія. Можна сміливо сказати, що мат. очікування - це "центр тяжкості" величини, а дисперсія - це її "розміри". Грубо кажучи, матюки. очікування визначає положення випадкової величини, а дисперсія – її розмір.

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

Xcentered = (X - x.mean(), X - y.mean()) m = (x.mean(), y.mean()) print Xcentered print "Mean vector: ", m OUT: (array([ -4.5, -3.5, -2.5, -1.5, -0.5, 0.5, 1.5, 2.5, 3.5, 4.5]), array([-8.44644233, -8.32845585, -4.93314426, -2.56723136, 1.01013247, 0.58413394, 1.86599939, 7.00558491, 4.21440647, 9.59501658])) Mean vector: (5.5, 10.314393916)

Дисперсія ж залежить від порядків значень випадкової величини, тобто. чутлива до масштабування. Тому якщо одиниці виміру ознак сильно відрізняються своїми порядками, рекомендується стандартизувати їх. У нашому випадку значення не сильно відрізняються в порядках, так що для простоти прикладу ми не виконуватимемо цю операцію.

Крок 2. Коваріаційна матриця

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


Для опису форми випадкового вектора потрібна матриця.

Це матриця, яка має (i,j)-Елемент є кореляцією ознак (X i, X j). Згадаймо формулу коваріації:

У нашому випадку вона спрощується, тому що E(X i) = E(X j) = 0:

Зауважимо, що коли X i = X j:

і це справедливо для будь-яких випадкових величин.

Таким чином, у нашій матриці по діагоналі будуть дисперсії ознак (т.к. i = j), а в решті осередків – коваріації відповідних пар ознак. А в силу симетричності коваріації матриця також буде симетричною.

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

І справді, дисперсія одновимірної випадкової величини – це матриця розміру 1x1, в якій її єдиний член заданий формулою Cov(X,X) = Var(X).

Отже, сформуємо коваріаційну матрицю Σ для нашої вибірки. Для цього порахуємо дисперсії X i і X j, а також їхню коваріацію. Можна скористатися вищенаписаною формулою, але якщо ми озброїлися Python'ом, то гріх не скористатися функцією numpy.cov(X). Вона приймає на вхід список всіх ознак випадкової величини і повертає її коваріаційну матрицю і де X - n-вимірний випадковий вектор (n-кількість рядків). Функція відмінно підходить і для розрахунку незміщеної дисперсії, і для коварації двох величин, і для складання матриці коварії.
(Нагадаю, що в Python матриця є масивом-стовпцем масивів-рядків.)

Covmat = np.cov(Xcentered) print covmat, "n" print "Variance of X:", np.cov(Xcentered) print "Variance of Y: ", np.cov(Xcentered) print "Covariance X and Y: " , np.cov(Xcentered) OUT: [[ 9.16666667 17.93002811] [ 17.93002811 37.26438587]] Variance of X: 9.16666666667 Variance of Y:3:3

Крок 3. Власні вектори та значення (айгенпари)

О "кей, ми отримали матрицю, що описує форму нашої випадкової величини, з якої ми можемо отримати її розміри по x і y (тобто X 1 і X 2), а також зразкову форму на площині. Тепер треба знайти такий вектор (У нашому випадку тільки один), при якому максимізувався б розмір (дисперсія) проекції нашої вибірки на нього.

Зауваження:Узагальнення дисперсії на вищі розмірності - підступна матриця, і ці два поняття еквівалентні. При проекції на вектор максимізується дисперсія проекції, при проекції простору великих порядків – вся її ковариационная матриця.

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

Відповідно, дисперсія проекції:

Легко помітити, що дисперсія максимізується за максимального значення v T Σv. Тут нам допоможе ставлення Релея. Не вдаючись надто глибоко в математику, просто скажу, що відносини Релея мають спеціальний випадок для коваріаційних матриць:

Остання формула має бути знайома за темою розкладання матриці на власні вектори та значення. x є власним вектором, а - власним значенням. Кількість власних векторів та значень дорівнюють розміру матриці (і значення можуть повторюватися).

До речі, в англійській мові власні значення та вектори називаються eigenvaluesі eigenvectorsвідповідно.
Мені здається, це звучить набагато красивіше (і стисло), ніж наші терміни.

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

І це справедливо також для проекцій на більшу кількість вимірювань – дисперсія (коваріаційна матриця) проекції на m-мірний простір буде максимальною у напрямку m айгенвекторів, що мають максимальні власні значення.

Розмірність нашої вибірки дорівнює двом і кількість айгенвекторів у неї відповідно 2. Знайдемо їх.

У бібліотеці numpy реалізовано функцію numpy.linalg.eig(X)де X – квадратна матриця. Вона повертає 2 масиви – масив айгензначень та масив айгенвекторів (вектори-стовпці). І вектори нормовані - їхня довжина дорівнює 1. Саме те, що треба. Ці 2 вектори задають новий базис для вибірки, такий, що його осі збігаються з півосями апроксимуючого еліпса нашої вибірки.



На цьому графіку ми апроксимували нашу вибірку еліпсом з радіусами в 2 сигми (тобто він повинен містити в собі 95% всіх спостережень – що ми тут і спостерігаємо). Я інвертував більший вектор (функція eig(X) направляла його у зворотний бік) – нам важливий напрямок, а не орієнтація вектора.

Крок 4. Зниження розмірності (проекція)

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

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

Часто потрібно оцінити обсяг втраченої (і збереженої) інформації. Найзручніше уявити у відсотках. Ми беремо дисперсії по кожній осі і ділимо на загальну суму дисперсій по осях (тобто суму всіх власних чисел підступної матриці).
Таким чином, наш більший вектор описує 45.994/46.431*100% = 99.06%, а менший, відповідно, приблизно 0.94%. Відкинувши менший вектор і спроектувавши дані на більший, ми втратимо менше 1% інформації! Відмінний результат!

Зауваження:Насправді, здебільшого, якщо сумарна втрата інформації становить трохи більше 10-20%, можна спокійно знижувати розмірність.

Для проведення проекції, як згадувалося раніше на кроці 3, треба провести операцію v T X (вектор повинен бути довжини 1). Або якщо у нас не один вектор, а гіперплощина, то замість вектора v T беремо матрицю базисних векторів V T . Отриманий вектор (або матриця) буде масивом проекцій спостережень.

V = (-vecs, -vecs) Xnew = dot (v, Xcentered) print Xnew OUT: [-9.56404107 -9.02021624 -5.52974822 -2.96481262 0.68933859 0.7442 3 4 3 4 4 4

dot(X,Y)- почленний твір (так ми перемножуємо вектори та матриці в Python)

Неважко помітити, що значення проекцій відповідають картині на попередньому графіку.

Крок 5. Відновлення даних

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

Це дуже просто. У нас є вся необхідна інформація, а саме координати базисних векторів у вихідному базисі (вектори, на які ми проектували) та вектор середніх (для скасування центрування). Візьмемо, наприклад, максимальне значення: 10.596… і розкодуємо його. Для цього помножимо його праворуч на транспонований вектор і додамо вектор середніх, або в загальному вигляді для всієї вибоки: X T v T +m

Xrestored = dot(Xnew,v) + m print "Restored: ", Xrestored print "Original: ", X[:,9] OUT: Restored: [ 10.13864361 19.84190935] Original: [ 10. 19.9094

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

Замість укладання – перевірка алгоритму

Отже, ми розібрали алгоритм, показали як він працює на іграшковому прикладі, тепер залишилося лише порівняти його з PCA, реалізованим у sklearn – адже будемо користуватися саме ним.

З sklearn.decomposition import PCA pca = PCA(n_components = 1) XPCAreduced = pca.fit_transform(transpose(X))

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

Print "Our reduced X: n", Xnew print "Sklearn reduced X: n", XPCAreduced OUT: Our reduced X: [ -9.56404106 -9.02021625 -5.52974822 -2.96481262 0.68933859 0.74406645 2.33433492 7.39307974 5.3212742 10.59672425] Sklearn reduced X: [[ -9.56404106 ] [ -9.02021625] [ -5.52974822] [ -2.96481262] [ 0.68933859] [ 0.74406645] [ 2.33433492] [ 7.39307974] [7] 5 5

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

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

Перевіримо та інші параметри моделі – функція має ряд атрибутів, що дозволяють отримати доступ до проміжних змінних:

Вектор середніх: mean_
- Вектор(матриця) проекції: components_
- Дисперсії осей проекції (вибіркова): explained_variance_
- частка інформації (частка від загальної дисперсії): explained_variance_ratio_

Зауваження: explained_variance_ показує вибірковудисперсію, тоді як функція cov() для побудови коваріаційної матриці розраховує незміщенідисперсії!

Порівняємо отримані нами значення зі значеннями бібліотечної функції.

Print "Mean vector: ", pca.mean_, m print "Projection: ", pca.components_, v print "Explained variance ratio: ", pca.explained_variance_ratio_, l/sum(l) OUT: Mean vector: [ 5.5 10.31439 (5.5, 10.314393916) Projection: [[ 0.43774316 0.89910006]] (0.43774316434772387, 0.89910006232167594) Explained variance: [ 41.39455058] 45.9939450918 Explained variance ratio: [ 0.99058588] 0.990585881238

Єдина відмінність – у дисперсіях, але як ми вже згадували, ми використовували функцію cov(), яка використовує незміщену дисперсію, тоді як атрибут explained_variance_ повертає вибіркову. Вони відрізняються лише тим, що перша для отримання мат. очікування ділить на (n-1), а друга – на n. Легко перевірити, що 45.99 ∙ (10 – 1) / 10 = 41.39.

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

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

Отже, ми розглянули принципи роботи алгоритму PCA та його реалізації у sklearn. Сподіваюся, ця стаття була досить зрозуміла тим, хто тільки починає знайомство з аналізом даних, а також хоч трохи інформативна для тих, хто добре знає цей алгоритм. Інтуїтивне уявлення дуже корисне для розуміння того, як працює метод, а розуміння дуже важливе для правильного налаштування обраної моделі. Дякую за увагу!

PS:Прохання не лаяти автора за можливі неточності. Автор сам у процесі знайомства з дата-аналізом і хоче допомогти таким же, як він у процесі освоєння цієї дивовижної галузі знань! Але конструктивна критика та різноманітний досвід усіляко вітаються!