stringtranslate.com

Algoritmo de transmisión

En informática , los algoritmos de streaming son algoritmos para procesar flujos de datos en los que la entrada se presenta como una secuencia de elementos y se puede examinar en solo unos pocos pasos, normalmente solo uno . Estos algoritmos están diseñados para funcionar con memoria limitada, generalmente logarítmica en el tamaño del flujo y/o en el valor máximo del flujo, y también pueden tener un tiempo de procesamiento limitado por elemento.

Como resultado de estas restricciones, los algoritmos de transmisión a menudo producen respuestas aproximadas basadas en un resumen o "bosquejo" del flujo de datos.

Historia

Aunque los algoritmos de streaming ya habían sido estudiados por Munro y Paterson [1] en 1978, así como por Philippe Flajolet y G. Nigel Martin en 1982/83, [2] el campo de los algoritmos de streaming se formalizó y popularizó por primera vez en un artículo de 1996 de Noga Alon , Yossi Matias y Mario Szegedy . [3] Por este artículo, los autores ganaron más tarde el Premio Gödel en 2005 "por su contribución fundamental a los algoritmos de streaming". Desde entonces, ha habido una gran cantidad de trabajo centrado en los algoritmos de streaming de datos que abarca un espectro diverso de campos de la ciencia informática, como la teoría, las bases de datos, las redes y el procesamiento del lenguaje natural.

Los algoritmos de semi-transmisión se introdujeron en 2005 como una relajación de los algoritmos de transmisión para grafos, [4] en los que el espacio permitido es lineal en el número de vértices n , pero solo logarítmico en el número de aristas m . Esta relajación todavía es significativa para grafos densos y puede resolver problemas interesantes (como la conectividad) que son insolubles en el espacio.

Modelos

Modelo de flujo de datos

En el modelo de flujo de datos, parte o la totalidad de la entrada se representa como una secuencia finita de números enteros (de algún dominio finito) que generalmente no está disponible para acceso aleatorio , sino que llega de a uno por vez en un "flujo". [5] Si el flujo tiene una longitud n y el dominio tiene un tamaño m , los algoritmos generalmente están restringidos a usar un espacio que sea logarítmico en m y n . Por lo general, solo pueden realizar una pequeña cantidad constante de pasadas sobre el flujo, a veces solo una . [6]

Modelos de torniquetes y cajas registradoras

Gran parte de la literatura sobre streaming se ocupa del cálculo de estadísticas sobre distribuciones de frecuencia que son demasiado grandes para ser almacenadas. Para esta clase de problemas, existe un vector (inicializado en el vector cero ) al que se le presentan actualizaciones en un flujo. El objetivo de estos algoritmos es calcular funciones de usando considerablemente menos espacio del que se necesitaría para representarlas con precisión. Existen dos modelos comunes para actualizar dichos flujos, denominados modelos de "caja registradora" y de "torniquete". [7]

En el modelo de caja registradora, cada actualización tiene la forma , por lo que se incrementa en algún entero positivo . Un caso especial notable es cuando (solo se permiten inserciones de unidades).

En el modelo de torniquete, cada actualización tiene la forma , por lo que se incrementa en algún entero (posiblemente negativo) . En el modelo de "torniquete estricto", no puede ser menor que cero en ningún momento.

Modelo de ventana corrediza

Varios artículos también consideran el modelo de "ventana deslizante". [ cita requerida ] En este modelo, la función de interés se calcula sobre una ventana de tamaño fijo en el flujo. A medida que avanza el flujo, los elementos del final de la ventana se eliminan de la consideración mientras que los nuevos elementos del flujo ocupan su lugar.

Además de los problemas basados ​​en frecuencias mencionados anteriormente, también se han estudiado otros tipos de problemas. Muchos problemas de grafos se resuelven en un contexto en el que la matriz de adyacencia o la lista de adyacencias del grafo se transmite en un orden desconocido. También hay algunos problemas que dependen en gran medida del orden de la transmisión (es decir, funciones asimétricas), como contar el número de inversiones en una transmisión y encontrar la subsecuencia creciente más larga. [ cita requerida ]

Evaluación

El rendimiento de un algoritmo que opera sobre flujos de datos se mide mediante tres factores básicos:

Estos algoritmos tienen muchas similitudes con los algoritmos en línea, ya que ambos requieren que se tomen decisiones antes de que todos los datos estén disponibles, pero no son idénticos. Los algoritmos de flujo de datos solo tienen una memoria limitada disponible, pero pueden diferir la acción hasta que llegue un grupo de puntos, mientras que los algoritmos en línea deben actuar tan pronto como llega cada punto.

Si el algoritmo es un algoritmo de aproximación, entonces la precisión de la respuesta es otro factor clave. La precisión se expresa a menudo como una aproximación, lo que significa que el algoritmo logra un error de menos de con una probabilidad .

Aplicaciones

Los algoritmos de streaming tienen varias aplicaciones en redes , como por ejemplo, la monitorización de enlaces de red en busca de flujos de elefantes , el conteo del número de flujos distintos, la estimación de la distribución de tamaños de flujo, etc. [8] También tienen aplicaciones en bases de datos, como la estimación del tamaño de una unión [ cita requerida ] .

Algunos problemas de transmisión

Momentos de frecuencia

El momento de frecuencia k de un conjunto de frecuencias se define como .

El primer momento es simplemente la suma de las frecuencias (es decir, el recuento total). El segundo momento es útil para calcular las propiedades estadísticas de los datos, como el coeficiente de variación de Gini. se define como la frecuencia de los elementos más frecuentes.

El artículo fundamental de Alon, Matias y Szegedy abordó el problema de la estimación de los momentos de frecuencia. [ cita requerida ]

Cálculo de momentos de frecuencia

Un enfoque directo para encontrar los momentos de frecuencia requiere mantener un registro m i para todos los elementos distintos a i ∈ (1,2,3,4,..., N ) que requiere al menos una memoria de orden . [3] Pero tenemos limitaciones de espacio y requerimos un algoritmo que calcule en una memoria mucho menor. Esto se puede lograr usando aproximaciones en lugar de valores exactos. Un algoritmo que calcula una aproximación ( ε,δ ) de F k , donde F' k es el valor ( ε,δ )-aproximado de F k . [9] Donde ε es el parámetro de aproximación y δ es el parámetro de confianza. [10]

Calculador F0(elementos distintos en un DataStream)
Algoritmo FM-Sketch

Flajolet et al. en [2] introdujeron un método probabilístico de conteo que se inspiró en un artículo de Robert Morris . [11] Morris en su artículo dice que si se elimina el requisito de precisión, un contador n puede reemplazarse por un contador log n que puede almacenarse en log log n bits. [12] Flajolet et al. en [2] mejoraron este método utilizando una función hash h que se supone que distribuye uniformemente el elemento en el espacio hash (una cadena binaria de longitud L ).

Sea bit( y,k ) el késimo bit en la representación binaria de y

Let representa la posición del bit menos significativo en la representación binaria de y i con una convención adecuada para .

Sea A la secuencia de flujo de datos de longitud M cuya cardinalidad se debe determinar. Sea BITMAP [0... L − 1] el

espacio hash donde se registran los ρ ( valores hash ). El algoritmo siguiente determina la cardinalidad aproximada de A.

Procedimiento FM-Sketch: para i en 0 a L − 1 hacer MAPA DE BITS[i] := 0 fin para para x en A: hacer Índice := ρ(hash(x)) si BITMAP[índice] = 0 entonces MAPA DE BITS[índice] := 1 terminar si fin para B := Posición del bit 0 más a la izquierda de BITMAP[] devolver 2 ^ B

Si hay N elementos distintos en un flujo de datos.

K-algoritmo de valor mínimo

El algoritmo anterior describe el primer intento de Flajolet y Martin de aproximar F 0 en el flujo de datos. Su algoritmo elige una función hash aleatoria que, según ellos, distribuye uniformemente los valores hash en el espacio hash.

En [10], Bar-Yossef et al. introdujeron el algoritmo de valor mínimo k para determinar el número de elementos distintos en un flujo de datos. Utilizaron una función hash similar h que se puede normalizar a [0,1] como . Pero fijaron un límite t para el número de valores en el espacio hash. Se supone que el valor de t es del orden (es decir, un valor de aproximación menor ε requiere más t ). El algoritmo KMV solo mantiene los t valores hash más pequeños en el espacio hash. Una vez que han llegado todos los m valores del flujo, se utiliza para calcular . Es decir, en un espacio hash casi uniforme, esperan que al menos t elementos sean menores que .

Procedimiento 2 Valor mínimo KInicializar los primeros valores t de KMVpara un en a1 a un hacer si h(a) < Max(KMV) entonces Eliminar Max(KMV) del conjunto KMV Insertar h(a) en KMV terminar sifin paradevuelve t/Max(KMV)
Análisis de complejidad de KMV

El algoritmo KMV se puede implementar en el espacio de bits de memoria. Cada valor hash requiere espacio de bits de memoria de orden . Hay valores hash del orden . El tiempo de acceso se puede reducir si almacenamos los valores hash t en un árbol binario. De esta forma la complejidad temporal se reducirá a .

CalculadorQue me jodas

Alon et al. estima F k definiendo variables aleatorias que pueden calcularse dentro de un espacio y tiempo determinados. [3] El valor esperado de las variables aleatorias da el valor aproximado de F k .

Supongamos que la longitud de la secuencia m se conoce de antemano. Luego, construyamos una variable aleatoria X de la siguiente manera:

Supongamos que S 1 es del orden y S 2 es del orden . El algoritmo toma la variable aleatoria S 2 y genera como salida la mediana . Donde Y i es el promedio de X ij donde 1 ≤ jS 1 .

Ahora calcule la expectativa de la variable aleatoria E ( X ) .

Complejidad deQue me jodas

Del algoritmo para calcular F k discutido anteriormente, podemos ver que cada variable aleatoria X almacena el valor de a p y r . Entonces, para calcular X necesitamos mantener solo log( n ) bits para almacenar a p y log( n ) bits para almacenar r . El número total de variables aleatorias X será ⁠ ⁠ .

Por lo tanto, la complejidad espacial total que toma el algoritmo es del orden de

Un enfoque más sencillo para calcularF2

El algoritmo anterior calcula en orden de bits de memoria. Alon et al. en [3] simplificaron este algoritmo utilizando una variable aleatoria independiente de cuatro vías con valores asignados a .

Esto reduce aún más la complejidad del cálculo .

Elementos frecuentes

En el modelo de flujo de datos, el problema de los elementos frecuentes consiste en generar un conjunto de elementos que constituyen más de una fracción fija del flujo. Un caso especial es el problema de la mayoría , que consiste en determinar si algún valor constituye o no una mayoría del flujo.

Más formalmente, fijemos una constante positiva c > 1, dejemos que la longitud de la corriente sea m y que f i denote la frecuencia del valor i en la corriente. El problema de los elementos frecuentes consiste en generar el conjunto { i | f i > m/c }. [13]

Algunos algoritmos notables son:

Detección de eventos

La detección de eventos en flujos de datos se realiza a menudo utilizando un algoritmo de gran impacto como el que se detalla más arriba: los elementos más frecuentes y su frecuencia se determinan utilizando uno de estos algoritmos, y luego el mayor aumento con respecto al punto de tiempo anterior se informa como tendencia. Este enfoque se puede refinar utilizando promedios móviles ponderados exponencialmente y varianza para la normalización. [14]

Contando elementos distintos

Contar el número de elementos distintos en una secuencia (a veces llamado el momento F 0 ) es otro problema que ha sido bien estudiado. El primer algoritmo para ello fue propuesto por Flajolet y Martin. En 2010, Daniel Kane , Jelani Nelson y David Woodruff encontraron un algoritmo asintóticamente óptimo para este problema. [15] Utiliza un espacio O ( ε 2 + log d ) , con O (1) tiempos de actualización y reporte en el peor de los casos, así como funciones hash universales y una familia hash independiente r -wise donde r = Ω(log(1/ ε ) / log log(1/ ε )) .

Entropía

La entropía (empírica) de un conjunto de frecuencias se define como , donde .

Aprendizaje en línea

Aprenda un modelo (por ejemplo, un clasificador ) mediante una sola pasada sobre un conjunto de entrenamiento.


Límites inferiores

Se han calculado límites inferiores para muchos de los problemas de transmisión de datos que se han estudiado. Sin lugar a dudas, la técnica más común para calcular estos límites inferiores ha sido el uso de la complejidad de la comunicación . [ cita requerida ]

Véase también

Notas

  1. ^ Munro, J. Ian; Paterson, Mike (1978). "Selección y ordenación con almacenamiento limitado". 19.º Simposio anual sobre fundamentos de la informática, Ann Arbor, Michigan, EE. UU., 16-18 de octubre de 1978. IEEE Computer Society. págs. 253-258. doi :10.1109/SFCS.1978.32.
  2. ^abc Flajolet y Martín (1985)
  3. ^ abcd Alon, Matías y Szegedy (1996)
  4. ^ Feigenbaum, Joan; Sampath, Kannan (2005). "Sobre problemas de grafos en un modelo de semi-transmisión". Ciencias de la Computación Teórica . 348 (2): 207–216. doi : 10.1016/j.tcs.2005.09.013 .
  5. ^ Babcock, Brian; Babu, Shivnath; Datar, Mayur; Motwani, Rajeev; Widom, Jennifer (2002). "Modelos y problemas en sistemas de flujo de datos". Actas del vigésimo primer simposio ACM SIGMOD-SIGACT-SIGART sobre Principios de sistemas de bases de datos . PODS '02. Nueva York, NY, EE. UU.: ACM. págs. 1–16. CiteSeerX 10.1.1.138.190 . doi :10.1145/543613.543615. ISBN .  978-1581135077.S2CID2071130  .​
  6. ^ Bar-Yossef, Ziv; Jayram, TS; Kumar, Ravi; Sivakumar, D.; Trevisan, Luca (13 de septiembre de 2002). "Conteo de elementos distintos en un flujo de datos". Técnicas de aleatorización y aproximación en informática . Apuntes de clase en informática. Vol. 2483. Springer, Berlín, Heidelberg. págs. 1–10. CiteSeerX 10.1.1.12.6276 . doi :10.1007/3-540-45726-7_1. ISBN.  978-3540457268.S2CID 4684185  .
  7. ^ Gilbert y otros (2001)
  8. ^ Xu (2007)
  9. ^ Indyk, Piotr; Woodruff, David (1 de enero de 2005). "Aproximaciones óptimas de los momentos de frecuencia de los flujos de datos". Actas del trigésimo séptimo simposio anual de la ACM sobre teoría de la computación . STOC '05. Nueva York, NY, EE. UU.: ACM. págs. 202–208. doi :10.1145/1060590.1060621. ISBN 978-1-58113-960-0. Número de identificación del sujeto  7911758.
  10. ^ ab Bar-Yossef, Ziv; Jayram, TS; Kumar, Ravi; Sivakumar, D.; Trevisan, Luca (13 de septiembre de 2002). Rolim, José DP; Vadhan, Salil (eds.). Conteo de elementos distintos en un flujo de datos . Notas de clase en informática. Springer Berlin Heidelberg. págs. 1–10. CiteSeerX 10.1.1.12.6276 . doi :10.1007/3-540-45726-7_1. ISBN.  978-3-540-44147-2.S2CID 4684185  .
  11. ^ Morris (1978)
  12. ^ Flajolet, Philippe (1985-03-01). "Recuento aproximado: un análisis detallado". BIT Numerical Mathematics . 25 (1): 113–134. CiteSeerX 10.1.1.64.5320 . doi :10.1007/BF01934993. ISSN  0006-3835. S2CID  2809103. 
  13. ^ Cormode, Graham (2014). "Resúmenes de Misra-Gries". En Kao, Ming-Yang (ed.). Enciclopedia de algoritmos . Springer US. págs. 1–5. doi :10.1007/978-3-642-27848-8_572-1. ISBN . 9783642278488.
  14. ^ Schubert, E.; Weiler, M.; Kriegel, HP (2014). SigniTrend: detección escalable de temas emergentes en secuencias textuales mediante umbrales de significación hash . Actas de la 20.ª conferencia internacional ACM SIGKDD sobre descubrimiento de conocimiento y minería de datos - KDD '14. págs. 871–880. doi :10.1145/2623330.2623740. ISBN 9781450329569.
  15. ^ Kane, Nelson y Woodruff (2010)

Referencias