Ich arbeite an einem Projekt, das die Verwendung von latenter semantischer Analyse (LSA) enthält. Dies erfordert die Verwendung von Singular Value Decomposition (SVD), manchmal auf großen Datensätzen. Gibt es eine Implementierung von randomized-SVD (rSVD) verfügbar für Windows \ Visual Studio-Umgebung? Ich habe ein Projekt namens redsvd gesehen, aber es scheint, dass es nur unter Linux unterstützt wird.Randomisierte SVD für LSA LSI auf Windows-Umgebung
Antwort
ILNumerics könnte es haben, aber ich habe nicht gesehen, ob sie rSVD tun und ich habe keine persönliche Erfahrung mit der Bibliothek, aber es ist zum Glück durch NuGet verfügbar.
Hier sind die Dokumente auf ihre SVD Umsetzung:
http://ilnumerics.net/apidoc/Index.html?topic=html/Overload_ILNumerics_ILMath_svd.htm
Es gibt auch NAG, aber seine bezahlt: http://www.nag.co.uk/numeric/numerical_libraries.asp
ich auch redsvd ausgecheckt, und ich wette, Ich könnte es entweder für Sie in C# portieren oder zumindest dazu bringen, es unter Windows zu kompilieren. Wenn diese nicht Ihren Anforderungen entsprechen, lassen Sie es mich wissen und ich werde einen Blick auf die Komplexität des Ports werfen.
UPDATE:
Nun bekam heute Abend nach Hause und beschlossen, es auszuprobieren. Hier ist eine wirklich schnelle Möglichkeit, auf Windows zu bekommen redsvd arbeiten mit Visual Studio 2010. Ich kann es auf Github veröffentlicht:
https://github.com/hoonto/redsvdwin
Öffnen Sie die rsvd3.sln in Visual Studio, bauen sie, und Sie werden eine bekommen rsvd3.exe im Verzeichnis Debug.
Run, die:
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])
Und da ist es. Übrigens erstellt dies die redsvdMain.cpp, wenn Sie die INCR-Datei mit main it wollten, redsvdMain.cpp ausschließen und redsvdMainIncr.cpp einschließen. Da beide mains enthalten sind, habe ich die Incr-Version ausgeschlossen und die reguläre Version erstellt.
Außerdem habe ich auch die Eigen3-Header in das github-Repository eingefügt und sie in die zusätzlichen Includes für die Lösungskonfiguration eingefügt, so dass Sie sich damit nicht herumschlagen müssen.
Eine letzte Sache, es gibt nichts wie cxxabi.h meines Wissens für Visual Studio, also habe ich etwas betrogen, du wirst sehen, wo ich die Änderungen vorgenommen habe, weil sie so kommentiert werden:
//MLM: commented next 3
//...
//...
//...
//MLM: added 1
...
und so weiter. Wenn Sie also Anpassungen vornehmen müssen, wissen Sie, wo sich meine Änderungen befinden.
qr in ILNumerics hat eine Überlast ILMath.qr (A, outR, outE, economy), die eine Zerlegung dieser Economy-Größe ermöglicht.
Ich habe diese Option irgendwie verpasst ... Ich werde es überprüfen, danke! – Leeor
- 1. SciPy SVD vs. Numpy SVD
- 2. LSA - Latente semantische Analyse - Wie man es in PHP programmiert?
- 3. randomisierte elementweise Multiplikation in R
- 4. OpenCV SVD Matrix-Format
- 5. Erstellen einer Term-Dokument-Matrix in Java für die LSI-Implementierung
- 6. Wie LSA Word-Score zu berechnen, wie in „LSA Intro AI Seminar“
- 7. Elixir - Randomisierte Zahlen in Agenten
- 8. Wie Dokumente unter Themen clustern latent semantische Analyse unter Verwendung von (lsa)
- 9. randomisierte Schnellsortierung [stürzt bei einigen Eingaben ab]
- 10. F: Randomisierte Zeichenerstellung mit einem Punktesystem
- 11. Anwenden von SVD auf YCbCr Bild in OpenCV
- 12. Warum wird SVD auf die lineare Regression angewendet
- 13. Least square Methoden: normale Gleichung vs svd
- 14. Ist ein LSA-MSV1_0-Subauthentifizierungspaket für einige Anwendungsfälle für Identitätswechsel erforderlich?
- 15. Apply SVD Lineare Regression in R
- 16. Rundungsfehler in SVD einer Matrix reduzieren
- 17. numpy svd: Gibt es eine Möglichkeit, nur die ersten Singular-Vektoren zu finden, anstatt die volle SVD zu machen?
- 18. Randomisierte geschichtete k-fache Kreuzvalidierung in scikit-learn?
- 19. Machen Sie randomisierte Sprites in einer bestimmten Koordinate etwas tun
- 20. SVD in einem Begriff Dokument-Matrix geben Sie nicht mir Werte I
- 21. SVD computing unterschiedliches Ergebnis in Matlab und OpenCV
- 22. Eigen-Bibliothek: SVD ist langsam im Vergleich zu GSL
- 23. Multiplizieren von SVD-Komponenten einer Matrix in OpenCV
- 24. Uhr Konfiguration von RTC in Stm32L nur in LSI/LSE/HSE?
- 25. Scikit-Learn TruncatedSVD Dokumentation
- 26. Paginieren Sie durch eine randomisierte Liste von Blog-Posts mit Hilfe von will_paginate
- 27. Alternative Faktorisierung Verwendung SVD (UZV = E), so daß det (U) = det (V) = +1
- 28. Get U, Sigma, V * Matrix von abgeschnitten SVD in scikit-lernen
- 29. Eigenvektoren, die mit nepy's eigh und svd berechnet wurden, stimmen nicht überein
- 30. So legen Sie den SCSI-Controllertyp für eine virtuelle Maschine mithilfe von vmware sdk in C# fest
Zuerst, danke für die Mühe! Zweitens kann eine effiziente Implementierung von SVD nicht mit Ilnumerics durchgeführt werden, da es keine Implementierung einer QR-Zerlegung der Wirtschaft gibt ... – Leeor
Ich freue mich, wenn Sie irgendwelche Probleme damit haben, wenden Sie sich entweder an SO oder über Github. Interessant über die Ilnumerik und die Wirtschaft QR.Meine Mathematik ist heutzutage sehr rostig, aber ich frage mich, warum Ilnumerics so große Anstrengungen unternehmen und das nicht tun würden. Laut Matlab ist es nur: "Wenn m> n, werden nur die ersten n Spalten von Q und die ersten n Zeilen von R berechnet. Wenn m <= n ist, ist das das Gleiche wie [Q, R] = qr (A) . " Vielleicht sehe ich es nicht, aber das scheint für ilnumerics nicht schwierig zu implementieren. Ich muss etwas übersehen. Vielleicht haben sie es für ein zukünftiges Datum auf dem Radar. – hoonto