LSH Flashcards

1
Q

Que problema viene a solucionar LSH?

A

LSH (Locality Sensitive Hashing) es una solución muy eficiente al problema de los vecinos más cercanos (nearest neighbors). Anteriormente desarrollamos este problema y vimos que la solución por fuerza bruta es muy ineficiente ya que por cada punto se tiene que calcular la distancia contra todos los demás puntos para encontrar el más cercano o los k más cercanos. Este problema aplica no solo a algoritmos como KNN sino a una enorme cantidad de otros algoritmos que necesitan encontrar el punto más cercano o los k puntos más cercanos a un cierto punto de nuestro set de datos. LSH nos brinda una solución aproximada a este problema pero de forma mucho más rápida que la búsqueda por fuerza bruta.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Desarrolle el concepto de LSH.

A

El concepto detrás de LSH es muy simple: aplicar a los puntos una función de hashing de forma tal que los puntos que son parecidos (cercanos) colisionen. Si logramos construir esta función es entonces sencillo resolver el problema de los vecinos más cercanos. Dado un punto ”query” aplicamos la función de hashing y accedemos al bucket de la tabla de hash indicado por la misma, luego calculamos la distancia entre nuestro punto ”query” y todos los puntos dentro del bucket devolviendo el más cercano o los k más cercanos según el caso.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Que tipo de funciones de hash es necesario para LSH? Que nombre reciben?

A

A estas funciones las vamos a llamar ”Minhashes”. En concreto para que una función de hashing sea un minhash vamos a pedirle las siguientes condiciones:

  1. La probabilidad de que dos claves colisionen debe depender de la distancia entre las claves.
  2. La función debe ser monótona y continua.
  3. Debe existir una forma eficiente de calcular la función.
  4. Debe ser posible randomizar la función de forma tal de poder obtener muchos minhash diferentes para la misma clave.
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Explique falsos positivos y falsos negativos en LSH.

A

Analicemos ahora qué pasarı́a si usáramos la función minhash planteada. Para objetos a distancia 0.2 nuestra probabilidad de colisión es 0.8, es decir que a partir de hashear un query podemos recuperar un 80% de los objetos que están a distancia 0.2 o menor. El 20% de objetos que son cercanos pero no recuperamos lo denominamos falsos negativos.

Por otro lado si nuestros objetos están a distancia 0.6 o mayor entonces la probabilidad de recuperarlos es 0.4. Si consideramos que objetos a distancia 0.6 o mayor no son cercanos igual vamos a estar recuperando un 40% de ellos al acceder a nuestra tabla de hashing. Estos objetos que no son cercanos pero que igualmente colisionan los llamamos falso positivos. A estos objetos debemos examinarlos y descartarlos luego.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Explique reduccion de falsos positivos.

A

Es posible reducir la cantidad de falsos positivos usando más de una función minhash sobre la misma tabla. Si usamos r funciones minhash en la misma tabla cada una de ellas nos dará como resultado un bucket. Los documentos candidatos surgen entonces de la intersección de los documentos que están en los r buckets que visitamos.

Si la probabilidad de colisionar es p entonces la probabilidad de colisionar en los r buckets es igual a p^r.

Podemos ver que la cantidad de falsos positivos disminuye a valores tan bajos como querramos pero también aumenta la cantidad de falsos negativos.

En este momento es importante notar que el tamaño de la tabla de hashing también es importante e influye en la cantidad de falsos positivos y negativos, ya que si la tabla es pequeña pueden producirse colisiones entre elementos que no son similares. En general el tamaño de la tabla de hashing se elige en función de la función minhash a utilizar.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Explique reduccion de falsos negativos.

A

Reducir los falsos negativos implica poder recuperar más objetos. Es decir, que no se nos escapen objetos que son similares a la query pero no son recuperados por LSH. La idea consiste en usar más de una tabla de hashing. Si usamos b tablas de hashing podemos entonces considerar objetos candidatos a aquellos que son candidatos en alguna de las b tablas.

Si la probabilidad de que dos claves colisionen es p entonces la probabilidad de que dos claves no colisionen es 1 − p y la probabilidad de que dos claves no colisionen en ninguna de las b tablas es (1 − p)^b. Por lo tanto, la probabilidad de que colisionen en alguna de las b tablas es 1 − (1 − p)^b.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Como se combinan los metodos para reducir falsos posit. y negat. al mismo tiempo?

A

Podemos lograr un número tan bajo como deseemos de falsos positivos y falsos negativos usando ambos métodos combinados, es decir b tablas de hashing y r minhashes sobre cada tabla. La cantidad total de minhashes es entonces b ∗ r.

Si la probabilidad de colisión es p entonces la probabilidad de colisionar usando b tablas de hashing y r minhashes por tabla es: 1 - (1 - p^r)^b.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Minhash para distancia de Jaccard.

A

Leer apunte.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Que operacion sirve como medida de distancia entre vectores? Como se calcula?

A

El coseno.

cos(theta) = XY / (|X| |Y|)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Por que motivo tienen especial importancia los metodos LSH basados en la distancia angular?

A

En la práctica muchos métodos LSH basados en la distancia angular funcionan bien para la distancia euclideana. Esto no tiene ninguna justificación teórica sino que simplemente funciona(!). Es por esto que los minhashes para la distancia angular son de particular importancia.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Nombre posibles metodos que se pueden usar para aproximar la distancia angular.

A
  • método de los hiperplanos
  • Voronoi Hashing
  • Método de los Polı́topos
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

método de los hiperplanos

A

Para generar un minhash válido para la distancia angular vamos a calcular el producto interno entre nuestro vector y un vector aleatorio. Este vector aleatorio puede estar formado simplemente por valores +1 y -1, ya que estos son suficientes para definir un hiperplano aleatorio. El valor del minhash va a ser 1 si el resultado del producto interno es positivo y -1 si el resultado es negativo.

Interpretemos ahora el significado del minhash. La probabilidad de que dos vectores proyectados al azar sobre un hiperplano tengan diferente signo es igual al ángulo entre ellos dividido 180. θ/180 ya que cuanto más chico es el ángulo más probable es que las proyecciones tengan igual sentido. Por lo tanto, la probabilidad de que los minhashes coincidan para dos vectores es: 1 − θ/180.

Por lo tanto con un solo minhash el método de las proyecciones aleatorias nos define la siguiente familia de funciones LSH:

(d 1 , d 2 , 1 − d 1 /π, 1 − d 2 /π)

En donde d1 y d2 son las distancias angulares entre los vectores.

En la práctica como cada minhash nos define un valor ±1 podemos decir que cada minhash nos define un bit y calculamos un hashmin de k − bits usando k hiperplanos aleatorios. De esta forma tenemos un minhash que puede devolvernos valores entre 0 y 2 k , siendo este el valor de cada una de las b tablas de hash que vamos a usar. Notemos que a mayor valor de k aumentan los falsos negativos ya que necesitamos que los puntos estén del mismo lado de los k hiperplanos usados para que el valor del minhash coincida.

La distancia angular se puede estimar en función de la cantidad de minhash que coinciden.

En realidad ni el ángulo ni el coseno realmente importan ya que lo que usaremos es la familia LSH de la misma forma que lo hacı́amos con la distancia Jaccard: usando b grupos de r minhashes cada uno.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Voronoi Hashing

A

En Voronoi hashing vamos a usar un conjunto de T vectores aleatorios en donde los elementos de estos vectores surgen de una distribución normal, es decir T vectores gaussianos. Vamos a calcular el producto interno entre cada uno de estos vectores y nuestro vector query, y nos vamos a quedar con el ı́ndice del vector que nos da el máximo producto interno como valor del minhash.

h(x) = arg max < G i , x >

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Que hace Voronoi Hashing geometricamente?

A

Notemos que lo que este método está haciendo geometricamente es distribuyendo T puntos al azar sobre la hiper-esfera unitaria y luego comparando cuál es el punto más cercano al punto hasheado.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

En que casos es similar Voronoi al metodo de los hiperplanos?

A

Es interesante destacar que si usamos solo 2 hiperplanos T = 2, el método de Voronoi es idéntico al de los hiperplanos usando como hiperplano al que bisecte los dos puntos elegidos al azar por Voronoi. En general Voronoi con T = 2^k gaussianos es igual al método de los hiperplanos con k hiperplanos.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Método de los Polı́topos

A

En este método, si nuestros puntos están en d dimensiones, primero aplicamos a nuestro punto una rotación al azar de d a d 0 dimensiones. Es decir, multiplicamos el punto que queremos hashear por una matrix aleatoria de dxd 0 . Una vez que hicimos esto buscamos cuál es el vértice del polı́topo de d 0 dimensiones más cercano y ese es el valor del minhash.

17
Q

En que casos es el metodo de los politopos igual al de Voronoi?

A

El método del polı́topo es equivalente al método de Voronoi si en lugar de tomar el producto interno máximo tomamos el máximo valor absoluto y el signo como minhash. Es decir que con T gaussianos en el método de Voronoi generamos un número entre 0 y 2T ya que ahora además del ı́ndice del gaussiano el signo es parte del minhash. En general el método de los polı́topos en d’ dimensiones es igual al método de Voronoi con 2d’ gaussianos.

18
Q

Nombre posibles metodos que se pueden usar para aproximar la distancia euclidea.

A
  • Método de las Proyecciones Aleatorias
  • Métodos basados en K-Means: KLSH
  • Métodos basados en K-Means: K-Means jerárquico
19
Q

Método de las Proyecciones Aleatorias

A

Vamos a usar proyecciones aleatorias, en este caso los hiperplanos aleatorios surgirán de una distribución p-estable, una distribución normal funciona perfectamente. Cada vector lo vamos a multiplicar por un hiperplano aleatorio para obtener un número. Y el número obtenido lo vamos a discretizar a un número de bucket dividiendo por un cierto parámetro w. El resultado es el número de bucket o minhash para la distancia euclideana.

La fórmula para calcular el minhash es entonces: floor((x * v_i + a)/(w))

w: un hiper-parámetro que depende de los datos
a: un número entre 0 y w − 1
v_i: un vector aleatorio de igual dimensionalidad que nuestros puntos.

Cada proyección aleatoria implica un particionamiento del espacio en el cual estamos trabajando. Diferentes proyecciones generan diferentes particiones.

En cada proyección los puntos que están en una misma franja son considerados similares. El parámetro w regula el ancho de las bandas y la forma de discretizar. Es dependiente de los datos, es decir que tenemos que calcularlo para nuestro set de datos especı́ficamente.

20
Q

Métodos basados en K-Means: KLSH

A

ver apunte.

21
Q

Métodos basados en K-Means: K-Means jerárquico

A

ver apunte.

22
Q

Cual es el objetivo de multi-probe?

A

Multi-probe intenta aumentar la precisión de una función LSH sin necesitar una cantidad de tablas de hash muy grande.

La idea es no acceder a un solo bucket por tabla sino a varios, siendo la probabilidad de acceder a un bucket proporcional a la distancia entre el query y los puntos del bucket, distancia que por supuesto desconocemos.

El objetivo es entonces dado un query q determinar cuáles son los buckets en donde hay mayor probabilidad de encontrar vecinos cercanos y acceder a una cierta cantidad T de estos buckets. El bucket más probable sabemos encontrarlo simplemente aplicando una función de hashing a los r minhashes de q. El problema es cómo determinar cuáles son los mejores buckets a probar además de éste.

La respuesta depende, por supuesto, de la métrica empleada.

23
Q

Multi-Probing para la distancia euclideana, método de proyecciones aleatorias

A

En este caso el minhash surge de la división por w, por lo tanto los valores que nos interesan son los vecinos al resultado del minhash. Es decir que si el minhash es (4) nos interesa el bucket 4 y luego el 3 y 5, luego el 2 y el 6, etc. Si usamos r minhashes podemos entonces generar buckets candidatos modificando +/- 1 el valor de cada minhash.

24
Q

Multi-Probing para la distancia euclideana, métodos basados en K-Means

A

En este caso, el esquema es muy simple ya que calculamos la distancia entre el query y cada centroide para saber el valor del minhash (que es el centroide que está a menor distancia). Por lo tanto, los minhashes alternativos son los números de centroides que siguen ordenados por distancia decreciente.

En todos los métodos basados en K-Means podemos implementar Multi-Probing de forma sencilla accediendo a T centroides en lugar de uno solo.

25
Q

Multi-Probing para la distancia angular, método de proyecciones aleatorias

A

En este caso el minhash solo puede tomar dos valores: +1 o -1. Supongamos que tenemos el caso (+1,-1,+1) usando 3 minhashes por tabla. Si queremos aplicar multi-probing, lo que podemos hacer es modificar alguno de los minhashes cambiando el signo y acceder a dicho bucket.

26
Q

Multi-Probing para la distancia angular, método de los polı́topos

A

En el método de los polı́topos podemos aplicar multi-probing accediendo a los T vértices más cercanos en lugar de acceder unicamente al más cercano. Este es un procedimiento sencillo y que no cuesta nada, ya que para determinar el vértice más cercano es necesario calcular la distancia entre cada vértice y la rotación aleatoria del punto original. Por lo tanto, simplemente en lugar de un vértice usamos T .

27
Q

Multi-Probing para la distancia de Jaccard

A

En la distancia Jaccard la cuestión no es simple. Una posible variante es realizar alguna perturbación en el string (texto) query y ver cuales serı́an los minhashes para el mismo. El método de perturbar el dato original para generar otros minhashes es genérico y podrı́a usarse en cualquier esquema de LSH si fuera necesario.

28
Q

Pros/contras de multi-probing.

A

Multi-Probing nos permite ganar precisión sacrificando tiempo. Al buscar en mayor cantidad de buckets disminuye la probabilidad de falsos negativos pero agregamos tiempo al tener que acceder a más buckets, recuperar más puntos y tener que calcular las distancias entre el query y estos puntos. La técnica es muy interesante porque permite ganar precisión sin sacrificar memoria.

29
Q

Que problema tienen los falsos positivos?

A

Un falso-positivo es un punto que no es cercano al que estamos buscando pero que LSH devuelve como similar. Los falsos-positivos se filtran facilmente simplemente calculando la distancia real entre el punto query q y los puntos candidatos a ser similares devueltos por LSH. Estas distancias siempre las tenemos que calcuar para saber cuales son los k vecinos más cercanos. El problema de los falsos-positivos es entonces de performance. Si tenemos muchos falsos positivos tendremos muchos puntos irrelevantes cuya distancia contra el query tenemos que calcular.

30
Q

Que problema tienen los falsos negativos?

A

Un falso-negativo es un punto que es cercano al query pero que LSH no puede encontrar. Esto afecta la precisión del método. Los falsos-negativos no tienen solución ya que la única forma de buscarlos serı́a recorrer todos los datos y, si hacemos eso, entonces estamos en KNN por fuerza bruta y no necesitamos LSH.