Algoritmi del flusso di dati "Dividi e conquista"


12

Quali algoritmi utili esistono che funzionano su enormi flussi di dati e anche i loro risultati sono abbastanza piccoli e si può calcolare il risultato per una miscela di due flussi unendo in qualche modo i loro risultati?

Posso citarne alcuni:

  • Le cose ovvie come sum, min, max, count, top-K ecc.
  • Algoritmi di flusso approssimativi cosiddetti "basati su sketch" per istogrammi, conteggio di elementi distinti o calcolo di quantili

Quali altri ci sono?

(Sono interessato perché sto scrivendo un progetto hobby per il monitoraggio di sistemi distribuiti la cui utilità è direttamente determinata dall'utilità di tali algoritmi)


Trovo molto più difficile pensare a qualsiasi algoritmo di streaming che non sia "dividi e conquista" / associativo. Forse un qualche tipo di funzione hash rolling ... Hai qualche esempio naturale di un algoritmo di flusso simile?
Thomas Ahle,

Risposte:


9

Guha et al. '03 fornisce un algoritmo di approssimazione per il clustering k-mediano nel modello di streaming. Il loro algoritmo divide i dati in pezzi disgiunti, trova centri O (k) per ogni pezzo disgiunto, quindi combina i risultati per ottenere i centri k. Questo sembra essere il tipo di algoritmo che stai cercando.


7

εεith(i1)th-livello e livello 0 è il flusso originale). Questo è essenzialmente un rendering dal basso verso l'alto di una strategia di divisione e conquista. con aggiornamenti lungo il "bordo" dell'albero di ricorsione. Nella struttura, è molto simile al documento di Guha et al. Menzionato da Lev.


6

Ho trovato un documento ( "Distribuire calcoli di flussi di dati dipendenti dalla frequenza" ) che afferma che ogni funzione della distribuzione di frequenza del flusso è unificabile (sebbene non fornisca una costruzione esplicita ed efficiente per l'operazione di unione). E la dimostrazione sembra essere molto interessante, coinvolgendo una teoria dell'anello. È necessario leggere l'articolo precedente dello stesso autore ( "Limiti inferiori sulla stima della frequenza dei flussi di dati" ) il cui risultato principale viene utilizzato come base per questo.

Questo mi ricorda il Teorema del Terzo Omomorfismo ...


Non credo che il documento Ganguly implichi che una strategia di divisione e conquista possa funzionare per lo streaming. Tale modello sembra ridursi al modello Mapreduce / MUD, in cui potrebbero esserci più passaggi sui dati.
Suresh Venkat,

Dopo aver letto, mi sembra che dopo tutto non usi più passaggi.
jkff,

4

La ricerca su linguaggi di query a flusso continuo potrebbe fornire alcune informazioni. Uno di questi linguaggi è CQL , che credo sia stato adottato da Oracle. Le lingue consentono di calcolare le funzioni su finestre scorrevoli del flusso (comprese finestre di dimensione 1). Questa tesi di laurea fornisce una recente panoramica del linguaggio, tra cui alcuni esempi. Questo documento fornisce una panoramica di alcuni linguaggi di elaborazione dei flussi, che dovrebbero essere utili per trovare collegamenti ad altre ricerche correlate.

So che questo non risponde direttamente alla tua domanda, ma dovrebbe metterti in contatto con le ricerche condotte da persone che partono dallo stesso punto di partenza.


4

Questa domanda mi sembra un po 'circolare. Se il problema ha la proprietà desiderata, allora esiste un algoritmo basato su schizzo e unione. Come accennato in precedenza, c'è lavoro su clustering, approssimazioni e corees che ti forniscono questo. Inoltre, la maggior parte degli algoritmi di streaming consente di unire i flussi concatenando semplicemente (concettualmente) un flusso all'altro.

Inoltre, non sono sicuro che gli algoritmi di streaming top-k siano unificabili, ma potrei sbagliarmi.


I top-k sono unificabili banalmente: per unire due elenchi di k elementi, li unisci e prendi k ultimi elementi del risultato :) Tuttavia, forse intendevi "top k più frequente", ma intendevo questo (che è anche un problema utile, ad esempio, per il calcolo distribuito di qualcosa come una
bacheca di

3

Mi dispiace essere negromante su questo, ma ho pensato che potresti voler esaminare alcuni lavori sul monitoraggio continuo distribuito sugli stream, in cui ti vengono dati diversi stream e l'obiettivo è monitorare alcune statistiche aggregate in un sito di monitoraggio centrale minimizzando la comunicazione. Il modello mi sembra strettamente correlato alla tua motivazione. Guarda i riferimenti nel libro di Muthu . Un documento è questo .

Anche il documento di Ganguly è molto interessante.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.