~ 1M 행과 ~ 500K 스파 스 기능이있는 데이터 세트가 있습니다. 1K-5K 고밀도 피쳐의 순서로 차원을 축소하고 싶습니다.
sklearn.decomposition.PCA
스파 스 데이터에서 작동하지 않으며 사용하려고 sklearn.decomposition.TruncatedSVD
했지만 메모리 오류가 매우 빨리 발생합니다. 이 스케일에서 효율적인 차원 축소를위한 옵션은 무엇입니까?
~ 1M 행과 ~ 500K 스파 스 기능이있는 데이터 세트가 있습니다. 1K-5K 고밀도 피쳐의 순서로 차원을 축소하고 싶습니다.
sklearn.decomposition.PCA
스파 스 데이터에서 작동하지 않으며 사용하려고 sklearn.decomposition.TruncatedSVD
했지만 메모리 오류가 매우 빨리 발생합니다. 이 스케일에서 효율적인 차원 축소를위한 옵션은 무엇입니까?
답변:
균일 매니 폴드 근사화 및 투영 (UMAP)에 대해 들어 보셨습니까 ?
UMAP (Uniform Manifold Approximation and Projection)은 비선형 치수 축소를위한 새로운 매니 폴드 학습 기술입니다. UMAP는 Riemannian 형상 및 대수 토폴로지에 기반한 이론적 프레임 워크로 구성됩니다. 결과는 실제 데이터에 적용되는 실용적인 확장 가능 알고리즘입니다. UMAP 알고리즘은 시각화 품질면에서 t-SNE와 경쟁력이 있으며 우수한 런타임 성능으로 더 많은 글로벌 구조를 보존합니다. 또한, 설명 된 UMAP에는 차원 삽입에 대한 계산 제한이 없으므로 기계 학습을위한 범용 차원 축소 기술로 사용할 수 있습니다.
장단점 목록을 보려면 코드 와 원본 용지 를 확인하십시오 . 사용하기 매우 쉽습니다.
빠른 사실 : UMAP는 큰 데이터 세트를 처리 할 수 있고 t-SNE보다 빠르며 희소 행렬 데이터에 적합하며 범용 차원 축소 기술인 t-SNE와 달리 시각화에 사용될 수있을뿐만 아니라 시각화에도 사용할 수 있습니다. 다른 머신 러닝 모델에 공급하기위한 기능 공간을 줄입니다.
구체적인 예 : 이 방법을 벤치마킹 하고 빠른 외형과 빠른 시작을 원한다면 다른 차원 축소 기법 벤치 마크 노트 와 비교했습니다 .
이 게시물을 보는 사람들이 UMAP이 충분히 효율적이지 않다고 생각하는 경우를 대비하여 더 효율적이지만 품질이 좋은 다른 기술이 있습니다.
랜덤 프로젝션 : 기본적으로 랜덤 한 형태의 매트릭스를 만듭니다. 어디 원래 차원이며 는 원하는 차원이며, 데이터 행렬에 투영 행렬을 곱하여 축소 된 데이터 집합을 생성합니다. sklearn.random_projection
이 구현이 있습니다. 투영 행렬의 크기와 분포가 적절한 경우, 점 사이의 쌍별 거리는 투영 된 공간에서 거의 유지됩니다.
피처 해싱 : 피처 값을 해시하고 모듈러스를 취합니다. 어디 원하는 치수입니다. 충돌하는 값의 합을 취하여 해시 충돌을 처리합니다. 피처의 순서를 뒤섞 고, 데이터 매트릭스를 일련의 수직 슬라이스로 분할하고, 요소별로 함께 추가하는 것으로 생각할 수 있습니다. 드문 데이터의 경우 충돌이 거의 없습니다. sklearn.feature_extraction.FeatureHasher
문자열 입력에서만 작동하는 구현입니다. 나는 그것이 단어 가방 텍스트 스타일 데이터에 일반적으로 사용된다고 생각합니다.