scipy.sparse.linalg.eigsh를 사용하는 것보다 매우 크고 희소 한 인접 행렬의 모든 고유 값과 고유 벡터를 계산하는 더 빠른 방법이 있는지 알아 내려고 노력 중입니다. 행렬의 대칭 속성. 인접 행렬도 바이너리이므로 더 빠른 방법이 있다고 생각합니다.
임의의 1000x1000 희소 인접 행렬을 만들고 x230 우분투 13.04 랩톱의 여러 방법을 비교했습니다.
- scipy.sparse.linalg.eigs : 0.65 초
- scipy.sparse.linalg.eigsh : 0.44 초
- scipy.linalg.eig : 6.09 초
- scipy.linalg.eigh : 1.60 초
희소 eigs와 eigsh를 사용하여 원하는 고유 값과 고유 벡터의 개수 인 k를 행렬의 순위로 설정했습니다.
문제는 더 큰 행렬로 시작합니다. 9000x9000 행렬에서 scipy.sparse.linalg.eigsh는 45 분이 걸렸습니다!