Skuteczne zmniejszenie wymiarów dla dużego zestawu danych


12

Mam zestaw danych z ~ 1 milionami wierszy i ~ 500 tysięcy rzadkich funkcji. Chcę zmniejszyć wymiarowość do gdzieś rzędu gęstych funkcji 1K-5K.

sklearn.decomposition.PCAnie działa na rzadkich danych i próbowałem użyć, sklearn.decomposition.TruncatedSVDale dość szybko pojawia się błąd pamięci. Jakie są moje opcje skutecznego zmniejszenia wymiarów na tej skali?

Odpowiedzi:


11

Czy słyszałeś o Uniform Manifold Approximation and Projection (UMAP) ?

UMAP (Uniform Manifold Approximation and Projection) to nowatorska różnorodna technika uczenia się do nieliniowej redukcji wymiarów. UMAP jest zbudowany z teoretycznego szkieletu opartego na geometrii Riemanniana i topologii algebraicznej. Rezultatem jest praktyczny skalowalny algorytm, który stosuje się do danych w świecie rzeczywistym. Algorytm UMAP konkuruje z t-SNE pod względem jakości wizualizacji i prawdopodobnie zachowuje więcej globalnej struktury z doskonałą wydajnością w czasie wykonywania. Ponadto, UMAP, jak opisano, nie ma żadnych ograniczeń obliczeniowych dotyczących osadzania wymiarów, co czyni go użytecznym jako technika redukcji wymiarów ogólnego zastosowania w uczeniu maszynowym.

Sprawdź ich kod i oryginał w celu uzyskania listy zalet i wad, jest bardzo łatwy w użyciu.

Najważniejsze fakty: UMAP może obsługiwać duże zestawy danych i jest szybszy niż t-SNE, a także obsługuje dopasowanie do rzadkich danych matrycowych i, w przeciwieństwie do t-SNE, ogólnej techniki redukcji wymiarów, co oznacza, że ​​nie tylko można jej użyć do wizualizacji, ale także do zmniejszenia przestrzeni funkcji do wprowadzania do innych modeli uczenia maszynowego.

Konkretne przykłady: porównałem metodę i porównałem ją z niektórymi innymi notebookami z porównawczymi technikami redukcji wymiarów , jeśli są zainteresowani, aby rzucić okiem i szybko zacząć.


2
(+1) - UMAP jest naprawdę świetny! Możesz zastanowić się nad ponownym dopasowaniem: Twój akapit w środku i następujące po nim punkty powtarzają te same informacje. Możesz też napisać cytat, ponieważ jest on (mniej lub bardziej) kopiowany z ich strony internetowej.
n1k31t4

2
Jasne, z pewnością mogę to zmniejszyć, chciałem tylko tutaj je wskazać, a niektóre punkty zostały nieco przeredagowane. Dzięki. W każdym razie lubię UMAP.
TwinPenguins,

1
Dzięki za rekomendację! Znałem to jako alternatywę dla t-SNE do wizualizacji, ale nie zdawałem sobie sprawy, że jest to również dobre dla ogólnej redukcji wymiarów.
timleathart

1

Na wypadek, gdyby ludzie napotykający ten post stwierdzili, że UMAP nie jest wystarczająco wydajny, oto kilka innych technik, które napotkałem, które są jeszcze bardziej wydajne (ale nie tak wysokiej jakości):

  • Rzutowanie losowe: Zasadniczo utwórz losową macierz kształtu gdzie to pierwotna wymiarowość, a to pożądana wymiarowość, i pomnóż macierz danych przez macierz projekcji, aby uzyskać zredukowany zestaw danych. ma pewne implementacje tego. Jeśli rozmiar i rozkład matrycy rzutowej jest odpowiedni, wówczas pary odległości między punktami są prawie zachowane w rzutowanej przestrzeni.d × mdmsklearn.random_projection

  • Mieszanie cech: Weź skrót wartości cech, weź moduł gdzie jest pożądaną wymiarowością. Kolizje mieszania są rozwiązywane przez zebranie sumy zderzających się wartości. Możesz myśleć o tym jako o tasowaniu kolejności elementów, dzieleniu macierzy danych na serię pionowych segmentów i dodawaniu ich wszystkich do siebie elementarnie. W przypadku rzadkich danych kolizje występują dość rzadko. jest implementacją, która (jak sądzę) działa tylko na wejściach łańcuchowych; Wydaje mi się, że zwykle jest używany do danych tekstowych typu bag-of-words.mmsklearn.feature_extraction.FeatureHasher

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.