잠정적 의미 론적 분석 (LSA)을 사용하는 프로젝트를 진행 중입니다. 대용량 데이터 세트에서 SVD (singular value decomposition)를 사용해야하는 경우가 있습니다. Windows/Visual Studio 환경에서 사용할 수있는 무작위 SVD (rSVD) 구현이 있습니까? redsvd라는 프로젝트를 보았지만 Linux에서만 지원되는 것으로 보입니다.Windows 환경에서 LSA LSI에 대한 무작위 SVD
답변
ILNumerics가있을 수도 있지만 rSVD를하고 있는지 여부를 알지 못했고 라이브러리에 대한 개인적인 경험이 없지만 다행스럽게도 NuGet을 통해 사용할 수 있습니다.
또한 NAG가http://ilnumerics.net/apidoc/Index.html?topic=html/Overload_ILNumerics_ILMath_svd.htm
,하지만 지불 : 여기
는 SVD 구현에 문서입니다 나는 또한 redsvd을 체크 아웃 http://www.nag.co.uk/numeric/numerical_libraries.asp, 나는 내기 C#으로 이식하거나 윈도우에서 컴파일 할 수 있습니다. 그것들이 당신의 요구를 만족시키지 못한다면 나는 알려주고 포트의 복잡성을 살펴볼 것입니다.
업데이트 :
그럼 오늘 밤 집에있어 그것에게 주사를하기로 결정했다.
https://github.com/hoonto/redsvdwin
비주얼 스튜디오에서 rsvd3.sln를 열고을 구축, 당신은 얻을 것이다 : 여기 GitHub의에 게시 Visual Studio 2010에서 Visual Studio 2010를 사용하여 Windows 작업 redsvd 얻을 수있는 정말 빠른 방법입니다 Debug 디렉토리에있는 rsvd3.exe.
C:\Users\MLM\Documents\Visual Studio 2010\Projects\redsvdwin\Debug>rsvd3.exe
usage: redsvd --input=string --output=string [options] ...
redsvd supports the following format types (one line for each row)
[format=dense] (<value>+\n)+
[format=sparse] ((colum_id:value)+\n)+
Example:
>redsvd -i imat -o omat -r 10 -f dense
compuate SVD for a dense matrix in imat and output omat.U omat.V, and omat.S
with the 10 largest eigen values/vectors
>redsvd -i imat -o omat -r 3 -f sparse -m PCA
compuate PCA for a sparse matrix in imat and output omat.PC omat.SCORE
with the 3 largest principal components
options:
-i, --input input file (string)
-o, --output output file's prefix (string)
-r, --rank rank (int [=10])
-f, --format format type (dense|sparse) See example. (string [=dense])
-m, --method method (SVD|PCA|SymEigen) (string [=SVD])
그리고 거기는 다음과 같습니다
를 실행합니다. 그런데 mains가있는 Incr 파일을 원하면 redsvdMain.cpp를 빌드하고 redsvdMainIncr.cpp를 포함 시키려면 redsvdMain.cpp을 만듭니다. 두 가지 모두 메인 버전을 가지고 있기 때문에 Incr 버전을 제외하고 일반 버전을 구축했습니다.
또한 Eigen3 헤더를 github 저장소에 포함 시켰으며이를 솔루션 구성에 대한 추가 포함에 넣었습니다. 따라서이 두 가지를 모두 참고할 필요가 없습니다.
마지막으로 Visual Studio에 대한 지식으로 cxxabi.h와 같은 것이 없으므로 일부 부정 행위를 했으므로 다음과 같이 주석을 달았 기 때문에 내가 변경 한 부분을 볼 수 있습니다.
//MLM: commented next 3
//...
//...
//...
//MLM: added 1
...
등. 따라서 조정이 필요한 경우 내 변경 사항을 알 수 있습니다.
qr in ILNumerics에는 경제 규모의 분해를 수행 할 수있는 과부하 ILMath.qr (A, outR, outE, economy)이 있습니다.
나는 어떻게 든 그 선택을 놓쳤다. .. 나는 그것을 조사 할 것이다, 고마워! – Leeor
첫째, 노력에 감사드립니다! 둘째, 경제 QR 분해의 구현이 없기 때문에 수치 연산을 사용하여 SVD를 효율적으로 구현할 수 없습니다. – Leeor
내게 기쁨, 그 문제가 있으면 SO 또는 github을 통해 문의하십시오. Ilnumerics 및 경제 QR에 대한 흥미로운.요즘 내 수학은 아주 녹슨 것이지만, 왜 일용량이 그렇게 큰 길이로 가고 왜 그렇게되지 않을지 궁금합니다. Matlab에 따르면, "m> n 일 경우 Q의 첫 번째 n 열과 R의 첫 번째 n 행만 계산됩니다 .m <= n이면 [Q, R] = qr (A)와 같습니다. . " 어쩌면 나는 그것을 볼 수는 없지만, 그것이 지표를 구현하는 것이 어렵지는 않을 것입니다. 나는 뭔가를 간과해야합니다. 아마 그들은 미래의 날을 위해 레이더에 가지고있을 것입니다. – hoonto