Szukam par wektorów, które mają przynajmniej L cechy wspólne.
To tylko wewnętrzny produkt binarnych wektorów cech. Gdy iloczyn wewnętrzny jest większy niżL−1, para będzie miała przynajmniej Lelementy wspólne. Powinno to być stosunkowo szybkie obliczenie - przynajmniej szybsze niż odległość euklidesowa, co byłoby marnotrawstwem i powolne dla tych danych. Ponieważ zastrzegasz, że szukasz par, oznacza to z natury, że musisz wykonać aby porównać każdy wektor.(N2)
Znalezienie punktów, które są blisko siebie, jest w rzeczywistości problemem klastrowym. Ale pierwszym krokiem algorytmów grupowania, które znam, jest obliczenie par odległości lub podobieństw. Jestem pewien, że ktoś opracował bardziej wydajne alternatywy. Chodzi o terminologię: posiadanie co najmniej wspólnych sąsiadów jest wyrażone jako podobieństwo , a nie odległość! Produkty wewnętrzne to w tym przypadku nienormalizowane podobieństwa kosinusowe.L
Możesz uczynić to łatwiejszym do wykonania, wykonując obliczenia produktu wewnętrznego tylko wtedy, gdy suma wektora cech (która w tym przypadku jest taka sama jak norma) dla obserwacji jest większa niż , ponieważ jest to niemożliwe dla tego binarnego wektora cech aby mieć wewnętrzną produkt z innym binarnym wektorem cech, które będą spełniać moje kryterium, gdy suma ta jest mniejsza niż . Oczywiście, obliczanie tych sum to tylko złożoność , więc jestem tanim sposobem na zmniejszenie wielkości wewnętrznego kroku produktu.L−1LO(N)
Ale klasycznym sposobem na ograniczenie zakresu tego problemu jest wykonanie dodatkowego filtrowania wstępnego. Czy jesteś szczególnie zainteresowany, gdy jedna, dość nietypowa funkcja przyjmuje wartość 1? Jeśli tak, wykonaj obliczenia tylko dla tych wektorów cech.
A może przydałoby Ci się ponowne sformułowanie problemu. Na przykład wiadomo, że pobieranie próbek ma dobre właściwości; statystyki wnioskowania rozwijają się do tego pomysłu do dość głębokiej. Być może analiza całego zestawu danych jest niewykonalna, ale badanie małej próbki jest całkowicie wykonalne. Nie wiem na pytanie, na które próbujesz odpowiedzieć, ale jeśli dokładnie zaplanujesz eksperyment, możesz uciec od patrzenia tylko na kilka tysięcy obserwacji, a do celów weryfikacji pozostaje więcej niż wystarczająca ilość danych.
Po jakimś dodatkowym myśli, mam silne przeczucie, że dane pracujesz z jakiś rodzaj grafu . Jest bardzo prawdopodobne, że składa się z kilku połączonych komponentów, w którym to przypadku można rozłożyć na zestaw wykresów, z przyjemnym efektem ubocznym zmniejszenia wymiarów danych. Nawet jeśli wykres jest tylko dwoma połączonymi komponentami mniej więcej tego samego rozmiaru, oznacza to, że twoje porównania par mają w przybliżeniu całkowity koszt!GGGO(N2)14
Jeśli wykres jest symetryczny, pomocne mogą być następujące obserwacje:
- Zdefiniuj Laplaciana na swoim wykresie jako , gdzie jest macierzą diagonalną stopnia (suma każdego wektora cech), a jest macierzą przyległości (układaniem wektorów cech w macierz).P=D−ADA
- Ilość razy rozpoznawane jako wartości własnej jest liczbą połączonych składników . Rozkład wykresu na połączone ze sobą komponenty i praca wyłącznie z tymi komponentami spowoduje efekt uboczny zmniejszenia wymiaru danych; obliczenie ilości twoich zainteresowań będzie łatwiejsze. Ale obliczenie składu eigend będzie kosztowne dla miliona wierzchołków ...0PG
- (Po pełnym permutacji) jest blok macierzą diagonalną o Laplacians połączonych ze sobą elementów .PG
- P jest dodatnim półfinałem. Jest to prawie na pewno przydatne w jakiś sposób.
- Algebraiczną przyłączeniowa jest wartością drugiego najmniejszym wartości własnej . To pokazuje, jak dobrze podłączony jestByć może to odpowie na niektóre pytania, które Cię interesują: wektory, które mają wspólne cechy. Teoria grafów spektralnych rozwija tę ideę bardziej szczegółowo.GPG
„Czy to problem SNA?” Nie jestem pewny. W jednej aplikacji funkcje opisują zachowanie, a my chcemy połączyć ludzi o podobnych zachowaniach. Czy to sprawia, że jest to problem SNA?
Jeśli masz dwustronny wykres łączący ludzi z zachowaniami, możesz myśleć o tym jak o sieci afiliacyjnej , w której ludzie są rzędami, a zachowania jak kolumnami. Jeśli chcesz połączyć ludzi do ludzi za pośrednictwem zachowań mają wspólnego, można obliczyć . to liczba wspólnych zachowań ludzi. Oczywiście zestaw wierzchołków, w których odpowiada na twoje pytanie.BBBT=AAijAij≥L