대규모 데이터 세트를위한 효율적인 차원 축소


12

~ 1M 행과 ~ 500K 스파 스 기능이있는 데이터 세트가 있습니다. 1K-5K 고밀도 피쳐의 순서로 차원을 축소하고 싶습니다.

sklearn.decomposition.PCA스파 스 데이터에서 작동하지 않으며 사용하려고 sklearn.decomposition.TruncatedSVD했지만 메모리 오류가 매우 빨리 발생합니다. 이 스케일에서 효율적인 차원 축소를위한 옵션은 무엇입니까?

답변:


11

균일 매니 폴드 근사화 및 투영 (UMAP)에 대해 들어 보셨습니까 ?

UMAP (Uniform Manifold Approximation and Projection)은 비선형 치수 축소를위한 새로운 매니 폴드 학습 기술입니다. UMAP는 Riemannian 형상 및 대수 토폴로지에 기반한 이론적 프레임 워크로 구성됩니다. 결과는 실제 데이터에 적용되는 실용적인 확장 가능 알고리즘입니다. 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이 구현이 있습니다. 투영 행렬의 크기와 분포가 적절한 경우, 점 사이의 쌍별 거리는 투영 된 공간에서 거의 유지됩니다.

  • 피처 해싱 : 피처 값을 해시하고 모듈러스를 취합니다.m 어디 m원하는 치수입니다. 충돌하는 값의 합을 취하여 해시 충돌을 처리합니다. 피처의 순서를 뒤섞 고, 데이터 매트릭스를 일련의 수직 슬라이스로 분할하고, 요소별로 함께 추가하는 것으로 생각할 수 있습니다. 드문 데이터의 경우 충돌이 거의 없습니다. sklearn.feature_extraction.FeatureHasher문자열 입력에서만 작동하는 구현입니다. 나는 그것이 단어 가방 텍스트 스타일 데이터에 일반적으로 사용된다고 생각합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.