Streaming Flashcards

1
Q

Reservoir sampling: para que sirve?

A

Entrega una meustra de tamano fijo del stream.

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

Reservoir sampling: algoritmo.

A

Para un stream infinito queremos guardar una muestra de tamaño constante “s”,si la cantidad de datos vistos hasta el momento es “n” entonces queremos que la probabilidad de que un dato esté en la muestra sea s/n.

Para los primeros “s” elementos todos se almacenan. Luego a partir del elemento s+1 se aplica una función de hashing 0..n y si el resultado es < s el dato se almacena y sino se descarta.

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

Momento de orden k de un stream.

A

sum (M_i)^k

M_i: frecuencia del elemento i-esimo.

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

Momento de orden 0. Que indica y como se calcula.

A

Cantidad de datos diferentes observados hasta el momento.

Se calcula con Flajolet Martin.

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

Momento de orden 1. Que indica y como se calcula.

A

Cant. de datos observados en el stream.

Se calcula con un simple contador.

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

Momento de orden 2. Que indica y como se calcula.

A

Es el Numero sorpresa. Es un indicador de si los datos en el stream se distribuyen en forma pareja o si algún dato aparece muchas mas veces que otro.

Se calcula con AMS.

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

Flajolet Martin: algoritmo.

A

Calcula la cantidad de elementos distintos observados hasta el momento en un stream
● A cada dato se le aplica una función de hashing que genera un número de m bits (m mayor a log2 n siendo n la cantidad de datos observados) y se observa con cuantos bits en cero comienza el resultado de la función.
● En memoria se mantiene la cantidad máxima de bits 0 observados que llamamos “r”.
● La cantidad de elementos diferentes en el stream puede estimarse como 2^r

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

Que problemas tiene Flajolet Martin? Como se soluciona?

A

● Un problema evidente del algoritmo es que es extremadamente sensible a resultados del hash que por ejemplo tengan muchos ceros a izquierda o peor aun que sean todos ceros.
● Para evitar esto se utilizan varias funciones de hashing y se llevan distintos contadores.
● Luego, dividiendo los contadores en grupos podemos tomar la media de cada grupo, evitando de esta forma la influencia de valores extremos y luego hacer un promedio de todas las medias.

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

HyperLogLog

A
  • Usamos una única función de hashing de 64 bits (o más)
  • Los primeros “n” bits nos dan el número de estimador.
  • En los siguientes 64-n bits contamos la cantidad de ceros a izquierda.
  • La estimación es el promedio armónico de los estimadores que usamos
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

AMS

A

● Se usa para calcular los momentos de orden 2, es decir el número sorpresa de un stream
● Se define un número “k” de variables a mantener en memoria. Cada variable k tiene 2 campos: valor y cantidad.
● Por cada elemento del stream si el elemento está en alguna de esas k variables entonces incrementar esa variable en 1.
● El momento de orden 2 se estima como el promedio de n(2c_i-1) donde n es la cantidad de datos vistos hasta el momento y c_i es la cantidad de cada variable k_i.
● Para mantener las “k” variables usaremos el algoritmo de reservoir sampling. (Cada vez que procesamos un dato del stream si el mismo está en la lista de variables aumentamos su frecuencia, si el dato no está entonces con probabilidad k/n reemplazamos al azar alguna de las variables por el dato nuevo inicializado en cantidad = 1)
● Para la estimación final dividimos las k variables en grupos y hacemos el promedio de cada grupo tomando luego la media de los promedios.

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

DGIM

A

● Consideramos Streams binarios.
● Tomamos una ventana fija de “m” bits con m realmente muy grande y queremos calcular cuántos bits en 1 vimos en los últimos k bits con k<=m.
● Es importante remarcar dos cosas:
- n es un número muy grande por lo que no podemos simplemente almacenar los últimos n bits
- Para un n fijo debemos poder calcular la cantidad de unos para cualquier k <= n, no solo para la ventana completa.
● Para esto utilizaremos DGIM.
● Sobre la ventana de m bits el algoritmo va a mantener k sub-ventanas que no pueden superponerse.
● Por cada sub-ventana va a llevar 2 valores: la posición en la ventana donde comienza la sub-ventana y la cantidad de unos que hay en la misma.
● Por cada bit procesado a la posición de cada sub-ventana le sumamos uno (para mantener el offset)

● Procesamos bit por bit el stream, si el bit es 0 lo ignoramos completamente.
● Si el bit es 1 entonces creamos una ventana de tamaño 1 para ese bit con contador = 1.
● Luego debemos analizar cuantas sub-ventanas hay con 1 bit en total.
● Si hay 1 o 2 no hacemos nada.
● Si hay 3 entonces combinamos las dos sub-ventanas mas viejas en una nueva sub-ventana de 2 bits.
● Y luego vemos cuantas sub-ventanas de 2 bits hay
● Si hay 1 o 2 no hacemos nada.
● Si hay 3 entonces combinamos las dos sub-ventanas mas viejas en una nueva sub-ventana de 4 bits.
● Y así sucesivamente…

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

Decaying Windows

A

● Otra alternativa para calcular cuántos 1s parecen en los últimos n bits de un stream
● Aplica una función que vaya decayendo el peso de cada bit en 1 ya observado a medida que procesamos el stream.
● Si nos interesan los últimos “n” bits del stream entonces usamos una constante c = 10-n, llevamos un contador que comienza en 0 y por cada bit del stream multiplicamos el contador por 1-c y luego sumamos el bit (1 o 0).

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

Bloom Filters: objetivo

A

Dado un stream queremos saber si los elementos que observamos en el mismo pertenecen o no a un cierto conjunto de elementos predefinidos.

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

Bloom Filters

A

○ Contamos con un vector binario de “m” bits y k funciónes de hashing 0..m.
○ Para “agregar” un elemento al filtro le aplicamos las funciones de hashing y luego encendemos en 1 los bits apuntados por las funciones.
○ Se prenden k o menos bits según haya o no colisiones

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

Bloom Filters. Para valores de n y m fijos, como se calcula el valor optimo de k?

A

k = (m/n) log 2

Si usamos el k óptimo entonces la cantidad de bits a usar puede calcularse como: m = n ln(p) / (ln 2)^2

donde p: probabilidad que queremos para un falso positivo

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

Counting Filters.

A

● En vez de mantener un bitmap, mantenemos en cada posición del filtro un contador.
● Esta modificación nos permite eliminar elementos del filtro
● Para agregar un elemento del filtro incrementamos en uno las posiciones indicadas por las fhash()
● Para eliminar un elemento del filtro restamos uno a las posiciones indicadas por las fhash()
● Para verificar si un elemento se encuentra en el filtro, verificamos que las posiciones indicadas por las fhash() tengan valores distintos de cero

17
Q

Count-min: objetivo.

A

Se busca estimar cuáles son los elementos mas frecuentes de un stream.
Heavy hitters

18
Q

Count-min: algoritmo.

A

● Basado en filtros de Bloom de tipo “counting”
● Se usan “d” filtros en total, cada uno de “w” bits y asociado a una función de hashing. ( “d” funciones de hashing en total).
● Cuando se observa un elemento del stream se le aplican las “d” funciones de hashing y en cada uno de los “d” counting filters se incrementa la posición indicada por la función de hashing.
● Para estimar la frecuencia de un cierto elemento lo que se hace es hashearlo con las “d” funciones de hashing, recuperar los valores de los filtros y tomar el mínimo como el valor de su frecuencia.
● Para llevar registro de los “i” elementos mas frecuentes en un stream podemos reservar memoria para “i” elementos
● A medida que procesamos el stream actualizamos los filtros y calculamos el count-min del elemento
● Si el mismo supera al menor de la lista de i elementos mas frecuentes lo reemplazamos.

19
Q

Count-min: De que depende la cantidad de filtros y el tamaño de los mismos?

A
  • La cantidad de filtros y el tamaño de los mismos depende del error pero no de la cantidad de datos (!!!)
  • En general con b en el orden de miles y l entre 5 y 10 es suficiente (!)