Хеширование с учетом локальных особенностей - поиск вероятностей и значений для R - PullRequest
5 голосов
/ 16 июля 2010

Спасибо тем, кто ответил на мои предыдущие вопросы и дошел до меня.

У меня есть таблица из примерно 25 000 векторов, каждый из которых имеет 48 измерений, со значениями в диапазоне от 0 до 255.

Я пытаюсь разработать алгоритм хеширования, чувствительный к локальности (http://en.wikipedia.org/wiki/Locality-sensitive_hashing), для поиска точек ближайшего или ближайшего соседа.

Моя текущая функция LSH такова:

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)

На данный момент у меня есть следующие вопросы:

A: Есть ли оптимальные значения для части моего кода "normalvariate (10, 4)". Это питоны, построенные в random.normalvariate (http://docs.python.org/library/random.html#random.normalvariate) функция, которую я использую для создания «d-мерного вектора с записями, выбранными независимо от стабильного распределения». Из моих экспериментов значения, кажется, не имеют большого значения.

B: В верхней части статьи в Википедии говорится:

, если d (p, q) <= R, то h (p) = h (q) с вероятностью принаименьший P1 </p>

, если d (p, q)> = cR, то h (p) = h (q) с вероятностьюty не более P2

Является ли значение R, упомянутое здесь, также значением R, упомянутым в разделе «Стабильные распределения».(http://en.wikipedia.org/wiki/Locality-sensitive_hashing#Stable_distributions)

C: Относится к моему предыдущему вопросу (B). Я обнаружил, что использование более высоких значений R в моей функции хэширования отображает мои векторы в меньший диапазон хэшазначения. Есть ли способ оптимизировать мое значение R.

D: Приблизительно сколько таблиц можно использовать?

Ответы [ 2 ]

2 голосов
/ 21 июля 2010

Возможно, вы захотите проверить "MetaOptimize" - например, переполнение стека для машинного обучения.
http://metaoptimize.com/qa

Ваш вопрос на самом деле не вопрос Python или программирования, и это сообщество может бытьможет помочь немного больше.

2 голосов
/ 17 июля 2010

Для тех, кто заинтересован. Я нашел этот документ (http://web.mit.edu/andoni/www/papers/cSquared.pdf, в котором есть очень подробное, хотя и сложное объяснение того, как использовать LSH для пространств большого размера.

...