Effiziente Nächste-Nachbarn-Suche nach dünn besetzten Matrizen

8

Ich habe ein großes Datenkorpus (Text), das ich in eine spärliche Term-Dokument-Matrix konvertiert habe (ich verwende scipy.sparse.csr.csr_matrix , um eine spärliche Matrix zu speichern). Ich möchte für jedes Dokument die nächsten Nachbarn finden. Ich hoffte, dass NearestNeighbor routine in Python scikit-learn library ( sklearn.neighbors.NearestNeighbor , um genau zu sein) mein Problem lösen würde, aber effiziente Algorithmen, die Space Partitioning Datenstrukturen wie KD trees oder Ball trees verwenden, funktionieren nicht mit dünn besetzten Matrizen . Nur der Brute-Force-Algorithmus arbeitet mit dünnen Matrizen (was in meinem Fall nicht möglich ist, da ich mit einem großen Korpus zu tun habe).

Gibt es eine effiziente Implementierung der Nearest Neighbor Suche nach dünn besetzten Matrizen (in Python oder in einer anderen Sprache)?

Danke.

    
abhinavkulkarni 10.08.2013, 17:07
quelle

2 Antworten

4

Späte Antwort: Sehen Sie sich Locality-Sensitive-Hashing

an

Unterstützung in scikit-learn wurde vorgeschlagen hier und hier .

    
Unapiedra 14.10.2014 09:11
quelle
3

Sie können versuchen, Ihre hochdimensionalen sparse-Daten mit TruncatedSVD in niedrigdimensionale, dichte Daten umzuwandeln und dann einen Ball-Tree zu erstellen.

    
Mathieu 13.08.2013 05:45
quelle