2010-07-16 7 views
5

Merci à tous ceux qui ont répondu à mes questions précédentes et me arrivé jusqu'ici.Localité sensible Hashage - trouver des probabilités et des valeurs R

J'ai une table d'environ 25 000 vecteurs, chacun avec 48 dimensions, avec des valeurs allant 0-255.

Je tente de développer un algorithme de hachage sensible à la localisation (http://en.wikipedia.org/wiki/Locality-sensitive_hashing) pour trouver un voisin proche ou des points voisins les plus proches.

Ma fonction actuelle LSH est la suivante:

def lsh(vector, r = 1.0, a = None, b = None): 
    if not a: 
     a = [normalvariate(10, 4) for i in range(48)] 
    if not b: 
     b = uniform(0, r) 
    hashVal = floor((sum([a[i]*vector[i] for i in range(48)]) + b)/r) 
    return int(hashVal) 

Mes questions à ce stade sont:

A: Y at-il des valeurs optimales pour "normalvariate (10, 4)" partie de mon code . Ce sont des pythons construits dans la fonction random.normalvariate (http://docs.python.org/library/random.html#random.normalvariate) que j'utilise pour produire le "vecteur dimensionnel avec des entrées choisies indépendamment d'une distribution stable". De mon expérience, les valeurs ne semblent pas trop importer.

B: Au sommet de l'article wikipedia il est dit:

si d (p, q) < = R, = h h (p) (q) avec une probabilité au moins P1

si d (p, q)> = cr, alors h (p) = h (q) avec probabilité au plus P2

est la valeur de R mentionné ici aussi la valeur de R mentionné sous le Stable Section des distributions (http://en.wikipedia.org/wiki/Locality-sensitive_hashing#Stable_distributions)

C: En relation avec ma question précédente (B). J'ai découvert qu'utiliser des valeurs plus élevées de R dans ma fonction de hachage mappe mes vecteurs dans une plus petite plage de valeurs de hachage. Existe-t-il un moyen d'optimiser ma valeur R?

D: Environ combien de tables peut-on utiliser?

Répondre

2

Vous pouvez consulter « MetaOptimize » -.. Comme le débordement de pile pour l'apprentissage de la machine
http://metaoptimize.com/qa

Votre question n'est pas vraiment une question de python ou la programmation, et que la communauté pourrait être en mesure d'aider un peu plus.

Questions connexes