Ich suche nach Vektorpaaren, die mindestens Merkmale gemeinsam haben.L.
Dies ist nur ein inneres Produkt von binären Merkmalsvektoren. Wenn das innere Produkt größer als , hat das Paar mindestens L Elemente gemeinsam. Dies sollte eine relativ schnelle Berechnung sein - zumindest schneller als die euklidische Entfernung, was für diese Daten verschwenderisch und langsam wäre. Da Sie festlegen, dass Sie nach Paaren suchen, bedeutet dies von Natur aus, dass Sie -Berechnungen durchführen müssen, um jeden Vektor zu vergleichen.L - 1L.( N.2)
Das Finden von Punkten, die nahe beieinander liegen, ist in der Tat ein Clustering-Problem. Der erste Schritt der mir vertrauten Clustering-Algorithmen ist jedoch die Berechnung paarweiser Abstände oder Ähnlichkeiten. Ich bin sicher, jemand hat effizientere Alternativen entwickelt. Ein Punkt zur Terminologie: Mindestens gemeinsame Nachbarn zu haben, wird als Ähnlichkeit formuliert , nicht als Distanz! Innere Produkte sind in diesem Fall nicht normalisierte Kosinusähnlichkeiten.L.
Sie können dies leichter nachvollziehen, indem Sie die Berechnung des inneren Produkts nur dann durchführen, wenn die Summe des Merkmalsvektors (in diesem Fall die Norm) für eine Beobachtung größer als , da dies für diesen binären Merkmalsvektor unmöglich ist ein inneres Produkt mit einem anderen binären Merkmalsvektor zu haben, der mein Kriterium erfüllt, wenn diese Summe kleiner als . Offensichtlich ist die Berechnung dieser Summen nur eine -Komplexität, daher ist es eine kostengünstige Möglichkeit, die Größe des inneren Produktschritts zu verringern.L O ( N )L - 1L.O ( N.)
Der klassische Weg, um den Umfang dieses Problems zu verringern, besteht darin, eine zusätzliche Vorfilterung durchzuführen. Interessieren Sie sich besonders dafür, wenn eine etwas ungewöhnliche Funktion den Wert 1 annimmt? Wenn ja, führen Sie nur die Berechnung für diese Merkmalsvektoren durch.
Oder vielleicht könnten Sie davon profitieren, Ihr Problem neu zu formulieren. Beispielsweise ist bekannt, dass die Probenahme gute Eigenschaften hat. Inferenzstatistiken entwickeln sich zu dieser Idee bis zu einer gewissen Tiefe. Vielleicht ist es nicht möglich, den gesamten Datensatz zu analysieren, aber es ist durchaus möglich, eine kleine Stichprobe zu untersuchen. Ich weiß nicht, welche Frage Sie beantworten möchten, aber wenn Sie Ihr Experiment sorgfältig entwerfen, werden Sie möglicherweise nur ein paar tausend Beobachtungen betrachten, wobei mehr als genug Daten für Validierungszwecke übrig bleiben.
Nach einigen zusätzlichen Überlegungen habe ich die starke Vermutung, dass die Daten, mit denen Sie arbeiten, eine Art Grafik . Es ist sehr plausibel, dass aus mehreren verbundenen Komponenten besteht. In diesem Fall können Sie in eine Reihe von Graphen zerlegen , mit dem glücklichen Nebeneffekt, dass die Dimensionalität der Daten verringert wird. Selbst wenn der Graph nur aus zwei verbundenen Komponenten von ungefähr derselben Größe besteht, bedeutet dies, dass Ihre paarweisen -Vergleiche ungefähr die Gesamtkosten haben!G G O ( N 2 ) 1GGGO ( N.2)14
Wenn der Graph symmetrisch ist, können die folgenden Beobachtungen hilfreich sein:
- Definieren Sie den Laplace-Wert Ihres Graphen als , wobei eine diagonale Gradmatrix (die Summe jedes Merkmalsvektors) und die Adjazenzmatrix (das Stapeln von Merkmalsvektoren zu einer Matrix) ist.D A.P.= D - A.D.EIN
- Die Zahl mal erscheint als ein Eigenwert von ist die Anzahl der verbundenen Komponenten von . Wenn Sie das Diagramm in seine verbundenen Komponenten zerlegen und nur mit diesen Komponenten arbeiten, wird die Dimension Ihrer Daten verringert. Die Berechnung Ihrer Interessensmenge wird einfacher. Die Berechnung der Eigendekomposition wird jedoch für eine Million Eckpunkte teuer sein ...P G.0P.G
- (Nach einer vollständigen Permutation) ist ein Blockdiagonalmatrix der Laplace - Operatoren der angeschlossenen Komponenten von .G.P.G
- P. ist positiv semidefinit. Das ist mit ziemlicher Sicherheit irgendwie nützlich.
- Die algebraische Konnektivität von ist , wird der Wert des zweiten kleinsten Eigenwert von . Dies zeigt Ihnen, wie gut verbunden ist. Vielleicht beantwortet das einige der Fragen, an denen Sie interessiert sind: die Vektoren, die gemeinsame Merkmale haben. Die Spektralgraphentheorie entwickelt diese Idee etwas detaillierter.P G.GP.G
"Ist das ein SNA-Problem?" Ich bin mir nicht sicher. In einer Anwendung beschreiben die Funktionen das Verhalten und wir möchten Menschen mit ähnlichen Verhaltensweisen verbinden. Ist das ein SNA-Problem?
Wenn Sie ein zweigeteiltes Diagramm haben, das Personen mit Verhaltensweisen verbindet, können Sie sich dies als ein Zugehörigkeitsnetzwerk , mit Personen als Zeilen und Verhaltensweisen als Spalten. Wenn Sie Personen über das gemeinsame Verhalten mit Personen verbinden möchten, können Sie berechnen . ist die Anzahl der Verhaltensweisen, die die Menschen gemeinsam haben. Offensichtlich beantwortet die Menge der Eckpunkte, an denen Ihre Frage beantwortet.B B T = A A i j A i j ≥ L.BBBT=AAijAij≥L