Je recherche les paires de vecteurs qui ont au moins caractéristiques en commun.L
Ce n'est qu'un produit intérieur de vecteurs de caractéristiques binaires. Lorsque le produit intérieur est supérieur à , la paire aura au moins éléments en commun. Cela devrait être un calcul relativement rapide - au moins, plus rapide que la distance euclidienne, ce qui serait inutile et lent pour ces données. Parce que vous stipulez que vous recherchez des paires, cela signifie par nature que vous devez effectuer des calculs pour comparer chaque vecteur.L ( NL - 1L( N2)
Trouver des points proches les uns des autres est en effet un problème de regroupement. Mais la première étape des algorithmes de clustering que je connais est le calcul des distances par paires ou des similitudes. Je suis sûr que quelqu'un a développé des alternatives plus efficaces. Un point sur la terminologie: avoir au moins voisins communs est formulé comme une similitude , pas une distance! Les produits internes sont, dans ce cas, des similitudes de cosinus non normalisés.L
Vous pouvez rendre cela plus maniable en effectuant le calcul du produit interne uniquement lorsque la somme du vecteur de caractéristique (qui est dans ce cas la même que la norme) pour une observation est supérieure à , car il est impossible pour ce vecteur de caractéristique binaire d'avoir un produit intérieur avec un autre vecteur caractéristique binaire qui satisfera mon critère lorsque cette somme est inférieure à . De toute évidence, le calcul de ces sommes n'est qu'une complexité , c'est donc un moyen bon marché de réduire l'ampleur de l'étape de produit interne.L O ( N )L - 1LO ( N)
Mais la manière classique de réduire l'étendue de ce problème consiste à effectuer un préfiltrage supplémentaire. Êtes-vous particulièrement intéressé par le fait qu'une fonctionnalité quelque peu inhabituelle prenne la valeur 1? Si tel est le cas, effectuez uniquement le calcul pour ces vecteurs de caractéristiques.
Ou peut-être pourriez-vous bénéficier d'un recadrage de votre problème. Par exemple, l'échantillonnage est connu pour avoir de belles propriétés; des statistiques inférentielles développent cette idée assez en profondeur. Il est donc peut-être impossible d'analyser l'ensemble des données, mais il est parfaitement possible d'examiner un petit échantillon. Je ne sais pas à quelle question vous essayez de répondre, mais si vous concevez soigneusement votre expérience, vous pouvez vous en tirer avec seulement quelques milliers d'observations, avec plus que suffisamment de données restantes à des fins de validation.
Après une réflexion supplémentaire, j'ai une intuition forte que les données que vous travaillez avec une sorte de graphique . Il est très plausible que soit composé de plusieurs composants connectés, auquel cas vous pouvez décomposer en un ensemble de graphiques, avec l'effet secondaire heureux de réduire la dimensionnalité des données. Même si le graphique n'est que deux composants connectés de la même taille, cela signifie que vos comparaisons par paires ont à peu près le coût total!G G O ( N 2 ) 1gggO ( N2)14
Si le graphique est symétrique, les observations suivantes peuvent être utiles:
- Définissez le laplacien de votre graphique comme , où est une matrice diagonale de degré (la somme de chaque vecteur de caractéristique) et est la matrice d'adjacence (l'empilement de vecteurs de caractéristique dans une matrice).D AP= D - AréUNE
- Le nombre de fois de apparaît comme étant une valeur propre de est le nombre de composantes connexes de . Décomposer le graphique en ses composants connectés et travailler uniquement avec ces composants aura pour effet secondaire de réduire la dimension de vos données; le calcul de votre quantité d'intérêt sera plus facile. Mais le calcul de la composition par eigend sera coûteux pour un million de sommets ...P G0Pg
- (Après une permutation complète) est une matrice diagonale par blocs des laplaciens des composantes connexes de .GPg
- P est semi-défini positif. Ceci est presque certainement utile d'une manière ou d'une autre.
- La connectivité algébrique de est la valeur de la deuxième plus petite valeur propre de . Cela vous indique à quel point est bien connecté . Cela répondra peut-être à certaines des questions qui vous intéressent: les vecteurs qui ont des caractéristiques en commun. La théorie des graphes spectraux développe cette idée plus en détail.P GgPg
"Est-ce un problème SNA?" Je ne suis pas sûr. Dans une application, les fonctionnalités décrivent le comportement et nous cherchons à connecter des personnes ayant des comportements similaires. Est-ce que cela en fait un problème SNA?
Si vous avez un graphique bipartite reliant les personnes aux comportements, vous pouvez le considérer comme un réseau d'affiliation , avec des personnes comme des lignes et des comportements comme des colonnes. Si vous voulez connecter les gens à des gens via les comportements qu'ils ont en commun, vous pouvez calculer . est le nombre de comportements que les gens ont en commun. Évidemment, l'ensemble des sommets où répond à votre question.BB BT= AUNEje jUNEje j≥ L