Ефективне зменшення розмірності для великих наборів даних


12

У мене є набір даних з ~ 1M рядками та ~ 500K розрідженими функціями. Я хочу зменшити розмірність десь в порядку щільних особливостей 1К-5К.

sklearn.decomposition.PCAне працює над обмеженими даними, і я намагався використовувати, sklearn.decomposition.TruncatedSVDале досить швидко отримав помилку пам'яті. Які мої варіанти ефективного зменшення розмірності в цьому масштабі?

Відповіді:


11

Чи чули ви про єдине наближення та проекцію колектора (UMAP) ?

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

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

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

Конкретні приклади: Я порівняв метод і порівняв його з деякими іншими методами зменшення розмірності тестовим зошитом , якщо зацікавлений у швидкому огляді та старті стрибка.


2
(+1) - UMAP дійсно чудовий! Ви можете розглянути можливість переформатування трохи: Ваш абзац посередині та наступні пункти повторюють ту саму інформацію. Крім того, ви можете зробити це цитатою, оскільки це (більш-менш) копіювання з їх веб-сайту.
n1k31t4

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

1
Дякую за рекомендацію! Я знав це як альтернативу t-SNE для візуалізації, але не усвідомлював, що це також добре для загального зменшення розмірності.
timleathart

1

На випадок, якщо люди, які стикаються з цією публікацією, виявлять UMAP недостатньо ефективним, ось деякі інші методи, які я натрапив, є ще ефективнішими (але не настільки якісними):

  • Випадкова проекція: По суті, складіть випадкову матрицю фігуриd × m де d - початкова розмірність і m- бажана розмірність, і помножити матрицю даних на матрицю проекції для отримання скороченого набору даних. sklearn.random_projectionмає деякі реалізації цього. Якщо розмір і розподіл проекційної матриці є відповідним, то парні відстані між точками майже зберігаються в проектованому просторі.

  • Hashing Feature: Візьміть хеш значень функції, візьміть модульm де m- бажана розмірність. Хеш-зіткнення розглядаються шляхом взяття суми значень, що стикаються. Ви можете вважати це переміщенням порядку функцій, розбиттям матриці даних на ряд вертикальних зрізів та додаванням їх разом по елементах. За рідкісними даними, зіткнення досить рідкісні. sklearn.feature_extraction.FeatureHasherце реалізація, яка (я вважаю) працює лише на рядових введеннях; Я думаю, що його зазвичай використовують для даних про стильний текст.

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