SVD 분해 A = U S V with 인 m × n 크기 의 밀도가 높은 행렬 가 있다고 가정합니다 . 에서 나는 SVD를 계산할 수 있습니다 다음과 같습니다 .
R
svd(A)
새로운 번째 행이 A에 추가되면 SVD를 처음부터 다시 계산하지 않고 이전 행을 기반으로 새 SVD 분해를 계산할 수 있습니까 (예 : U , S 및 V 사용 )?
SVD 분해 A = U S V with 인 m × n 크기 의 밀도가 높은 행렬 가 있다고 가정합니다 . 에서 나는 SVD를 계산할 수 있습니다 다음과 같습니다 .
R
svd(A)
새로운 번째 행이 A에 추가되면 SVD를 처음부터 다시 계산하지 않고 이전 행을 기반으로 새 SVD 분해를 계산할 수 있습니까 (예 : U , S 및 V 사용 )?
답변:
예, 기존 행렬에 새 행을 하나 추가 한 후 SVD 분해를 업데이트 할 수 있습니다.
일반적으로이 " 1 대 1 추가 "문제 공식은 순위 1 업데이트 라고 합니다 . @amoeba가 제공 한 " 고유 값 분해의 효율적인 순위 2 업데이트 "에 관한 MathOverflow 링크 는이 문제에 대해 더 깊이 조사하기를 원하는 첫 번째 단계입니다. 첫 번째 논문은 특정 질문에 대한 명확한 해결책을 제공합니다. 새로운 가
우드 베리 공식은 놀이로 제공됩니다. 이 공식을 보면 많은 역수가 포함되어 있음을 알 수 있습니다. 직접 해결하지 마십시오. 이미 많은 하위 시스템을 이미 해결 했으므로 (즉, 일부 분해가 이미 계산 된 경우)이를 사용하여 더 빠르고 안정적인 추정값을 얻을 수 있습니다. (이것이 사람들이 여전히이 분야를 연구하는 이유입니다.) 저는 JE Gentle의 " 전산 통계 " 책을 참조로 많이 사용했습니다. 나는 Chapt을 생각한다. 5 수치 선형 대수 가 올바르게 설정됩니다. (Uber-classic : Harville 의 " 통계학 자의 관점에서 얻은 매트릭스 대수 "는 불행히도 순위 업데이트를 전혀 다루지 않습니다.)
통계 / 애플리케이션 측면을 살펴보면, 추천 시스템에서 하나의 업데이트 순위가 일반적입니다. 하나는 새로운 사용자가 등록하거나 새로운 제품이 등록 될 때마다 수천 개의 고객 항목이 있고 SVD (또는 해당 문제에 대한 주어진 분해)를 다시 계산할 수 있기 때문입니다. 추가 또는 제거는 매우 낭비 적입니다 (달성 할 수없는 경우). 일반적으로 추천 시스템 매트릭스는 희소하므로 알고리즘이 훨씬 더 효율적입니다. 접근 가능한 첫 번째 논문은 M. Brand의 " 경량 추천 시스템을위한 빠른 온라인 SVD 개정 "원고입니다. 밀도가 높은 매트릭스로 가기 패턴 인식 및 이미징 프로세싱의 논문을 보면 실제 알고리즘을 사용하는 데 상당한 도움이 될 수 있다고 생각합니다. 예를 들어 논문 :
모두 핵심에서 같은 문제를 다루는 것 같습니다. 새로운 기능이 등장하고 있으며 그에 따라 표현을 빠르게 업데이트해야합니다 . 이 행렬은 대칭이거나 정사각형이 아닙니다. M. Brand의 또 다른 연구에서도이 문제를 해결할 수 있습니다 ( " 단수 단일 값 분해 (2006)의 빠른 하위 순위 수정 " ( 이 문서의 시작 부분에 제공된 MO 링크에도 언급) 참조). 주제에 대한 좋은 논문을 많이하지만 대부분은 (주로 수학 경향 예. "에 Benaych - Georgesa 및 Nadakuditi 종이 단수 값과 큰 직사각형 랜덤 행렬의 낮은 순위 교란의 벡터 (2012)")에 대한 답변이 곧 해결 될 것으로 생각하지 않습니다. 이미지 처리 관련 자료에 계속 집중하시기 바랍니다.
불행히도 순위 1 업데이트 루틴에 대한 R 구현을 보지 못했습니다. Computational Science SE의 " Python, C 또는 Fortran에서 업데이트 가능한 SVD 구현? " 에 대한 답변은 고려해야 할 여러 MATLAB 및 C ++ 구현을 제공합니다. 일반적으로 R, Python 등의 구현은 C, C ++ 또는 FORTRAN 구현에 대한 래퍼입니다.
rank 1 updates
. Brand의 경량 추천 시스템 에 대한 빠른 온라인 SVD 개정판 은 액세스 가능한 첫 번째 논문입니다. 불행히도 R에서 이미 구현 된 SVD에 대해서는 보지 못했습니다. CHOLMOD 덕분에 Cholesky 업데이트가 (updown
부터Matrix
) 존재합니다 . 행렬 의 희소성 은 실제로 최종 솔루션과는 다릅니다. 밀도가 높거나 희소 행렬을 가정합니까?