Основи ШІ
Що таке зниження розмірності?

Що таке зниження розмірності?
Зниження розмірності – це процес, який використовується для зниження кількості ознак у наборі даних, приймаючи багато ознак і представляючи їх як менше ознак. Наприклад, зниження розмірності можна використовувати для зниження набору даних з двадцяти ознак до декількох ознак. Зниження розмірності часто використовується в задачах без нагляду для автоматичного створення класів з багатьох ознак. Для кращого розуміння чому і як використовується зниження розмірності, ми розглянемо проблеми, пов’язані з високими розмірностями даних, і найпопулярніші методи зниження розмірності.
Більше розмірностей призводить до переобучення
Розмірність відноситься до кількості ознак/стовпців у наборі даних.
Часто вважається, що в машинному навчанні більше ознак краще, оскільки це створює більш точну модель. Однак, більше ознак не обов’язково означає кращу модель.
Ознаки набору даних можуть сильно відрізнятися за корисністю для моделі, причому багато ознак мають мало значення. Крім того, чим більше ознак містить набір даних, тим більше зразків потрібно для забезпечення того, щоб різні комбінації ознак були добре представлені в даних. Тому кількість зразків збільшується пропорційно кількості ознак. Більше зразків і більше ознак означають, що модель повинна бути більш складною, а складніші моделі стають більш чутливими до переобучення. Модель вчиться шаблонам у навчальних даних надто добре і не може узагальнювати дані поза зразками.
Зниження розмірності набору даних має кілька переваг. Як вже згадувалося, простіші моделі менше схильні до переобучення, оскільки модель повинна робити менше припущень щодо того, як ознаки пов’язані одна з одною. Крім того, менше розмірностей означає менше обчислювальної потужності, необхідної для навчання алгоритмів. Аналогічно, менше місця для зберігання потрібно для набору даних з меншою розмірністю. Зниження розмірності набору даних також дозволяє використовувати алгоритми, які не підходять для наборів даних з багатьма ознаками.
Спільні методи зниження розмірності
Зниження розмірності можна здійснити шляхом вибору ознак або інженерії ознак. Вибір ознак полягає в тому, що інженер визначає найбільш актуальні ознаки набору даних, тоді як інженерія ознак – це процес створення нових ознак шляхом поєднання або перетворення інших ознак.
Вибір і інженерія ознак можна здійснювати програмно або вручну. При ручному виборі та інженерії ознак типово візуалізується дані для відкриття кореляцій між ознаками і класами. Виконання зниження розмірності таким чином може бути досить часуємким, тому деякі з найпоширеніших способів зниження розмірності включають використання алгоритмів, доступних у бібліотеках, таких як Scikit-learn для Python. Ці спільні алгоритми зниження розмірності включають: аналіз головних компонент (PCA), сингулярне розкладання значення (SVD) і лінійний дискримінантний аналіз (LDA).
Алгоритми, використовувані при зниженні розмірності для задач без нагляду, зазвичай включають PCA і SVD, тоді як алгоритми, використовувані для зниження розмірності з наглядом, зазвичай включають LDA і PCA. У випадку моделей з наглядом нові створені ознаки просто подаються у класифікатор машинного навчання. Зверніть увагу, що описані тут випадки використання є лише загальними випадками використання і не єдиними умовами, за яких можуть бути використані ці техніки. Алгоритми зниження розмірності, описані вище, є просто статистичними методами і використовуються поза моделями машинного навчання.
Аналіз головних компонент

Фото: Матриця з головними компонентами
Аналіз головних компонент (PCA) – це статистичний метод, який аналізує характеристики/ознаки набору даних і підсумовує ознаки, які мають найбільший вплив. Ознаки набору даних поєднуються разом у представлення, які зберігають більшість характеристик даних, але розподілені по меншій кількості розмірностей. Ви можете подумати про це як “стиснення” даних з вищої розмірності до тієї, яка має лише кілька розмірностей.
Як приклад ситуації, коли PCA може бути корисним, подумайте про різні способи опису вина. Хоча можна описувати вино за допомогою багатьох дуже конкретних ознак, таких як рівні CO2, такі конкретні ознаки можуть бути відносно безкорисними при спробі ідентифікувати конкретний тип вина. Натомість було б більш прUDENTно ідентифікувати тип на основі більш загальних ознак, таких як смак, колір і вік. PCA можна використовувати для поєднання більш конкретних ознак і створення ознак, які більш загальні, корисні і менше схильні до переобучення.
PCA здійснюється шляхом визначення того, як вхідні ознаки відрізняються від середнього значення одна від одної, визначення того, чи існують будь-які відносини між ознаками. Для цього створюється коваріаційна матриця, яка встановлює матрицю, складену з коваріацій щодо можливих пар ознак набору даних. Це використовується для визначення кореляцій між змінними, причому негативна коваріація вказує на обернену кореляцію, а позитивна кореляція вказує на позитивну кореляцію.
Головні (найбільш впливові) компоненти набору даних створюються шляхом створення лінійних комбінацій початкових змінних, що здійснюється за допомогою лінійної алгебри, такої як власні ціни і власні вектори. Комбінації створюються так, щоб головні компоненти були не пов’язані один з одним. Більшість інформації, що міститься в початкових змінних, стискається в перші кілька головних компонент, тобто створюються нові ознаки (головні компоненти), які містять інформацію з початкового набору даних у меншій розмірності.
Сингулярне розкладання значення

Фото: By Cmglee – Own work, CC BY-SA 4.0, https://commons.wikimedia.org/w/index.php?curid=67853297
Сингулярне розкладання значення (SVD) – це метод, який використовується для спрощення значень у матриці, зниження матриці до її складових частин і полегшення обчислень з цією матрицею. SVD можна використовувати як для матриць з дійсними значеннями, так і для матриць з комплексними значеннями, але для цілей цього пояснення ми розглянемо, як розкладати матрицю дійсних значень.
Припустимо, що у нас є матриця, складена з дійсних даних, і我们的 мета – зменшити кількість стовпців/ознак у матриці, подібно до мети PCA. Як і PCA, SVD буде стискувати розмірність матриці, зберігаючи при цьому якомога більше варіативності матриці. Якщо ми хочемо працювати з матрицею А, ми можемо представити матрицю А як три інші матриці, названі U, D і V. Матриця А складається з початкових x * y елементів, тоді як матриця U складається з елементів X * X (це ортогональна матриця). Матриця V – це інша ортогональна матриця, що містить y * y елементів. Матриця D містить елементи x * y і є діагональною матрицею.
Для розкладання значень матриці А нам потрібно перетворити початкові сингулярні матричні значення у діагональні значення, знайдені в новій матриці. Коли ми працюємо з ортогональними матрицями, їх властивості не змінюються, якщо їх помножити на інші числа. Тому ми можемо наблизити матрицю А, скориставшись цією властивістю. Коли ми помножимо ортогональні матриці разом з транспонуванням матриці V, результатом буде матриця, еквівалентна нашій початковій А.
Коли матриця А розкладається на матриці U, D і V, вони містять дані, знайдені в матриці А. Однак, лівішні стовпці матриць будуть містити більшу частину даних. Ми можемо взяти лише ці перші кілька стовпців і отримати представлення матриці А, яке має значно менше розмірностей і більшість даних у А.
Лінійний дискримінантний аналіз

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












