나는 c, C++ 또는 java에서 빠른 svd 라이브러리를 찾고 있습니다. 궁극적으로 저는 Java를 사용하고 있지만, C++을 감싸기 위해 jna를 사용하는 것이 매우 편합니다. 예 : http://github.com/hughperkins/jeigen빠른 정확한 스파 스 svd 라이브러리?
저는 희소 행렬을 처리 할 빠른 svd 라이브러리를 찾고 있습니다. 질문이 너무 주관적으로 표시되지 않도록,이 목표를 유지하기 위해,이 가정 해 봅시다 :
- 얼마나 빨리 실행 걸립니까 http://mldata.org/repository/data/viewslug/news20binary/
- 에서 예를 들어, news20.binary에 사용을 목표로?
- 크기가 6 또는 20 인 S 행렬의 경우 얼마나 많은 차이가 보존됩니까?
나는 몇 도서관에서 주위를 둘러 보았다 발견 :
- MATLAB : 슈퍼 빠른, 약 10 초 만, 정말 같은 '라이브러리'이 아니다. 평균 제곱 투영 오류 : 0.93
- redsvd : 6 개의 피쳐에 대해 초고속, 약 1 초 실행 가능하지만 평균 제곱 투영 오류는 0.97이며 매우 높습니다.
- Eigen의 svd는 매우 느리고 조밀 한 모체
- svdlibc : 멈추기 전에 28 분 동안 뛰었습니다. 나는 처음 6 개의 특징이 아닌 전체 S를 계산하고 있다고 생각한다.
기본적으로, 나는 대략 동일한 속도와 평균 제곱근 오차를 제공하는 라이브러리를 찾고있다. 다소 비교할 만하다.
어떤 알고리즘을 찾고 계십니까? [무작위 PCA] (http://scikit-learn.org/stable/modules/decomposition.html) (C++/java가 아니지만 올바른 알고리즘이라고 생각합니다.) 20 개의 뉴스 그룹 x 10k 기능, 6 PC ->'7.0 초 pca explain_variance_ratio_79.062 .044 .039 .031 .03'. – denis
나는 Eigen의 SVD가 너무 느리다는 것에 놀랐다. 나는 이것을 위해 Eigen을 사용한 적이 없다. 마지막으로이 질문을 한 이후로 개선 되었습니까? –
BTW, [언제 JEigen의 스파 스 솔버를 구현할 예정입니까?] (https://stackoverflow.com/questions/17046585/cholmod-in-java/30526005#30526005)? –