단일 값 분해 (SVD)를 계산하는 효율적인 알고리즘은 무엇입니까?


17

주요 구성 요소 분석 에 관한 Wikipedia 기사에 따르면

행렬 X T X 를 형성하지 않고 의 SVD를 계산하기위한 효율적인 알고리즘이 존재하므로 SVD를 계산하는 것은 이제 소수의 구성 요소 만 필요하지 않는 한 데이터 매트릭스에서 주요 구성 요소 분석을 계산하는 표준 방법입니다.XXTX

기사에서 말하는 효율적인 알고리즘이 무엇인지 말해 줄 수 있습니까? 주어진 언급이 없습니다 (이 계산 방법을 제안하는 기사에 대한 URL 또는 인용은 좋을 것입니다).


4
특이 값 분해 알고리즘 에 대한 Google 검색은 관련 정보를 강조 표시하는 훌륭한 작업입니다.
whuber

1
PCA에 대한 SVD 이전의 평균을 제거하는 것을 잊지 마십시오!
Memming

Lanczos SVD를 사용해보십시오!
ciri

답변:


12

SVD 계산의 주요 원인은 QR 알고리즘 입니다. 일반 x N 행렬 A 의 특이 값 분해를 계산하는 많은 다른 알고리즘이 있다고 말했다 . 여기서 사용할 수있는 문제 (Intel 's MKL 문서) 에 대한 훌륭한 개요 는 다음과 같습니다.MNA여기에 이미지 설명을 입력하십시오

유스 케이스에 따라 다른 접근 방식이 있습니다 (일반적인 명명 규칙은 여기 에서 찾을 수 있습니다 ). 예를 들어, 가계도 감소기븐스 회전 보다 더 비쌀 수있는 매트릭스 형태가 있기 때문입니다 (QR을 얻는 두 가지 "명백한"방법). 이 문제에 대한 표준 참조는 Golub 's와 Van Loan 's Matrix Computations입니다 (적어도 3 판을 사용하는 것이 좋습니다). 나는 또한 Å를 발견했다. Björck의 최소 제곱에 대한 수치 적 방법 문제에 대한 훌륭한 자료. SVD는이 책의 주요 초점이 아니지만 사용을 맥락화하는 데 도움이됩니다.

나는 당신에게 제공해야하는 경우 문제의 IS에 대한 일반적인 조언을 자신의 SVD 알고리즘을 작성하려고하지를 성공적으로 이미 수치 선형 대수에 두 개의 클래스를 촬영하지 않는 한 당신은 당신이 무엇을하고 있는지 알고있다. 나는 반 직관적 인 것처럼 들리지만 실제로 잘못 될 수있는 톤이 많고 (최고의) 최적이 아닌 구현으로 끝납니다 (잘못되지 않은 경우). 이 문제에 대해 아주 좋은 무료 스위트가 있습니다 (예 : Eigen , ArmadilloTrilinos ).


엑스

1
MNAXTX

2
그렇습니다, 나는 틀 렸습니다 : QR은 정사각 행렬로 제한되지 않았습니다. 그건 그렇고 +1입니다. 이 질문은 pca 태그로 가장 많이 투표 된 답변되지 않은 질문 중 하나 이므로 최종 답변을 확인하는 것이 좋습니다.
아메바는 고

귀하의 답변에는 다양한 반복 알고리즘이 언급되어 있지 않습니다. 의도적 이었습니까? 누군가 반복 SVD 알고리즘에 대해 질문했습니다. 잘린 SVD를 계산하기 위해 어떤 빠른 알고리즘이 있습니까?를 참조하십시오 . , 나는 거기에 몇 가지 개요를 제공하기 위해 답변을 게시했습니다. 아마도 우리는 적어도 우리의 대답을 교차 연결해야합니다. QR 알고리즘과 반복 알고리즘에 대한 논의를 통해 자신을 확장 할 수 있다면 분명히 좋을 것입니다.
amoeba는 Reinstate Monica

아니요, 우연이었습니다. 당신은 당신의 게시물에 당신의 자신의 질문에 대답했다; 잘린 SVD는 본질적으로 잘린 고유 분해입니다 (예 : ARPACK 참조 ). 약간의 차이점이 있지만 괜찮습니다 . 일부 소프트웨어 (예 : MATLAB 's svds)는 잘린 SVD 기능을 잘린 고유 분해 ( eigs) 루틴을 위한 래퍼로 사용하는 것까지 가능 합니다.
usεr11852는 Reinstate Monic
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.