대규모 PCA도 가능합니까? Component Analysis)의 고전적인

PCA (Principal Component Analysis)의 고전적인 방법은 열의 평균이 0 인 입력 데이터 매트릭스에서 수행하는 것입니다 (PCA는 “분산을 최대화 할 수 있습니다”). 컬럼을 중심으로하여 쉽게 달성 할 수 있습니다. 그러나 입력 행렬이 희소 인 경우 중심 행렬은 더 이상 희소하므로 행렬이 매우 큰 경우 더 이상 메모리에 맞지 않습니다. 스토리지 문제에 대한 알고리즘 솔루션이 있습니까?



답변

네 가능합니다.

데이터 매트릭스가 RAM에 맞지 않으면 아직 끝나지 않았습니다. 하드 드라이브에 저장된 데이터를 처리 할 수있는 효율적인 알고리즘이 있습니다. Halko et al., 2010, 대규모 데이터 세트의 주성분 분석 알고리즘에 설명 된대로 무작위 PCA를 참조하십시오 .

6.2 절에서 저자는 400k 곱하기 100k 데이터 매트릭스에서 알고리즘을 시도했으며

본 논문의 알고리즘은 1.5 GB의 RAM을 갖는 랩탑 컴퓨터를 사용하여 디스크에 저장된이 150 세트의 모든 데이터 세트를 처리하는데 12.3 시간이 필요했다 […].

이것은 옛날의 마그네틱 하드 드라이브였습니다. 오늘날에는 훨씬 빠른 솔리드 스테이트 드라이브가 사용 가능하므로 동일한 알고리즘이 훨씬 더 빠른 성능을 발휘할 것 같습니다.

무작위 PCA : 수많은 기능 (> 10K)을위한 최고의 PCA 알고리즘에 대한 자세한 내용은이 오래된 스레드를 참조하십시오 . Halko et al.에 의한 2011 년 대규모 검토 : 랜덤 성을 갖는 구조 찾기 : 근사 행렬 분해를 구성하기위한 확률 알고리즘 .