Algorytm przesyłania strumieniowego

W informatyce algorytmy przesyłania strumieniowego to algorytmy przetwarzania strumieni danych , w których dane wejściowe są przedstawiane jako sekwencja elementów i można je zbadać w zaledwie kilku przebiegach, zwykle tylko jednym . Algorytmy te są zaprojektowane do działania z ograniczoną pamięcią, zwykle logarytmiczną w rozmiarze strumienia i/lub w maksymalnej wartości w strumieniu, a także mogą mieć ograniczony czas przetwarzania na element.

W wyniku tych ograniczeń algorytmy przesyłania strumieniowego często dają przybliżone odpowiedzi na podstawie podsumowania lub „szkicu” strumienia danych.

Historia

Chociaż algorytmy przesyłania strumieniowego były już badane przez Munro i Patersona już w 1978 r., A także Philippe'a Flajoleta i G. Nigela Martina w latach 1982/83, dziedzina algorytmów przesyłania strumieniowego została po raz pierwszy sformalizowana i spopularyzowana w artykule z 1996 r. Noga Alon , Yossi Matiasa i Mario Szegedy'ego . Za ten artykuł autorzy otrzymali później nagrodę Gödla w 2005 r. „za ich fundamentalny wkład w algorytmy przesyłania strumieniowego”. Od tego czasu powstało wiele prac poświęconych algorytmom strumieniowego przesyłania danych, które obejmują zróżnicowane spektrum dziedzin informatyki, takich jak teoria, bazy danych, sieci i przetwarzanie języka naturalnego.

Algorytmy półstrumieniowe zostały wprowadzone w 2005 roku jako rozluźnienie algorytmów strumieniowych dla grafów, w których dozwolona przestrzeń jest liniowa pod względem liczby wierzchołków n , ale tylko logarytmiczna pod względem liczby krawędzi m . To rozluźnienie jest problemy (takie jak łączność), które są nierozwiązywalne przestrzeni

modele

Model strumienia danych

W modelu strumienia danych część lub całość danych wejściowych jest reprezentowana jako skończona sekwencja liczb całkowitych (z jakiejś skończonej dziedziny), która generalnie nie jest dostępna dla dostępu swobodnego , ale zamiast tego dociera pojedynczo w „strumieniu”. Jeśli strumień ma długość n , a domena ma rozmiar m , algorytmy są na ogół ograniczone do używania przestrzeni, która jest logarytmiczna w m i n . Na ogół mogą wykonać tylko niewielką stałą liczbę przejść nad strumieniem, czasami tylko jeden .

Modele kołowrotów i kas fiskalnych

Znaczna część literatury poświęconej transmisji strumieniowej dotyczy obliczeń statystycznych rozkładów częstotliwości, które są zbyt duże, aby je przechowywać. Dla tej klasy problemów istnieje wektor (zainicjowany na zero vector ), który ma aktualizacje prezentowane w strumieniu. Celem tych algorytmów jest obliczenie funkcji za niż potrzeba do dokładnego . Istnieją dwa popularne modele aktualizacji takich strumieni, zwane modelami „kasowymi” i „kołowrotkowymi”.

W modelu kasy fiskalnej każda aktualizacja ma postać że dodatnią liczbę całkowitą do . Godnym przypadkiem szczególnym jest sytuacja, gdy tylko wstawienia jednostek)

ma postać , tak że jest zwiększana o (prawdopodobnie ujemną) liczbę całkowitą c . W modelu „ścisłego kołowrotu” żadne może być mniejsze od zera.

Model z przesuwanym oknem

Kilka artykułów dotyczy również modelu „przesuwanego okna”. [ Potrzebne źródło ] W tym modelu interesującą funkcją są obliczenia w oknie o stałym rozmiarze w strumieniu. W miarę postępu transmisji elementy z końca okna są usuwane z rozważań, a ich miejsce zajmują nowe elementy ze strumienia.

Oprócz powyższych problemów opartych na częstotliwości, zbadano również inne rodzaje problemów. Wiele problemów z wykresami rozwiązuje się w ustawieniu, w którym macierz sąsiedztwa lub lista sąsiedztwa grafu jest przesyłana strumieniowo w nieznanej kolejności. Istnieją również problemy, które są bardzo zależne od kolejności strumienia (tj. funkcje asymetryczne), takie jak zliczanie liczby inwersji w strumieniu i znajdowanie najdłuższego rosnącego podciągu. [ potrzebne źródło ]

Ocena

Wydajność algorytmu działającego na strumieniach danych jest mierzona trzema podstawowymi czynnikami:

  • Liczba przebiegów, które algorytm musi wykonać w strumieniu.
  • Dostępna pamięć.
  • Czas działania algorytmu.

Algorytmy te mają wiele podobieństw do algorytmów online , ponieważ oba wymagają podjęcia decyzji, zanim wszystkie dane będą dostępne, ale nie są identyczne. Algorytmy strumienia danych mają tylko ograniczoną dostępną pamięć, ale mogą być w stanie odroczyć działanie do czasu nadejścia grupy punktów, podczas gdy algorytmy online muszą podjąć działanie, gdy tylko nadejdzie każdy punkt.

Jeśli algorytm jest algorytmem aproksymacyjnym, to dokładność odpowiedzi jest kolejnym kluczowym czynnikiem. Dokładność jest często określana jako ​​algorytm osiąga błąd mniejszy niż 1 .

Aplikacje

Algorytmy przesyłania strumieniowego mają kilka zastosowań w sieci , takich jak monitorowanie łączy sieciowych pod kątem przepływów słoni , zliczanie różnych przepływów, szacowanie rozkładu wielkości przepływów i tak dalej. Mają również zastosowania w bazach danych, takie jak szacowanie wielkości sprzężenia [ potrzebne źródło ] .

Niektóre problemy z przesyłaniem strumieniowym

Momenty częstotliwości

K - ten moment częstotliwości zbioru częstotliwości zdefiniowany jako .

Pierwszy moment jest prostu sumą częstotliwości (tj. całkowitą liczbą Drugi moment jest przydatny do właściwości statystycznych danych, takich jak współczynnik . jest definiowany jako częstotliwość najczęstszych elementów.

Przełomowy artykuł Alona, ​​Matiasa i Szegedy'ego dotyczył problemu oszacowania momentów częstotliwości. [ potrzebne źródło ]

Obliczanie momentów częstotliwości

Bezpośrednie podejście do znajdowania momentów częstotliwości wymaga zachowania rejestru m i dla wszystkich różnych elementów a i ∈ (1,2,3,4,..., N ) co wymaga przynajmniej pamięci rzędu . Mamy jednak ograniczenia przestrzenne i wymagamy algorytmu, który wykonuje obliczenia w dużo mniejszej pamięci. Można to osiągnąć, stosując przybliżenia zamiast dokładnych wartości. Algorytm obliczający przybliżenie ( ε,δ ) F k , gdzie F' k jest przybliżoną ( ε,δ ) wartością Fk . Gdzie ε jest parametrem aproksymacji, a δ jest parametrem ufności.

0 Obliczanie F (odrębne elementy w DataStream)
Algorytm FM-Sketch

Flajolet i in. wprowadził probabilistyczną metodę liczenia, zainspirowaną pracą Roberta Morrisa . Morris w swoim artykule mówi, że jeśli zrezygnuje się z wymogu dokładności, licznik n można zastąpić logarytmem licznika n , który można przechowywać w bitach log log n . Flajolet i in. in udoskonalił tę metodę, używając funkcji haszującej h , która zakłada równomierne rozmieszczenie elementu w przestrzeni mieszania (ciąg binarny o długości L ).

Niech bit( y,k ) reprezentuje k-ty bit w binarnej reprezentacji y

Niech reprezentuje pozycję najmniej znaczącego 1-bitowego w binarnej reprezentacji y ja z odpowiednią konwencją dla .

Niech A będzie ciągiem strumienia danych o długości M , którego liczność należy wyznaczyć. Niech BITMAPA [0... L − 1] będzie

przestrzeń mieszania, w której zapisywane są ρ ( wartości mieszania ). Poniższy algorytm określa następnie przybliżoną liczność A .

Procedura FM-Sketch: for i in 0 to L − 1 do BITMAP[i] := 0 end for x in A: do Index := ρ(hash(x)) jeżeli BITMAP[index] = 0 to BITMAP[index ] := 1 koniec jeśli koniec dla B := Pozycja najbardziej lewego 0 bitu BITMAP[] return 2 ^ B

w strumieniu danych jest N różnych elementów.

  • Dla wtedy BITMAPA [ ja ] to z pewnością 0
  • Dla wtedy BITMAPA [ ja ] to z pewnością 1
  • Dla wtedy BITMAPA [ ja ] to prążki zer i jedynek
K - algorytm wartości minimalnej

0 Poprzedni algorytm opisuje pierwszą próbę przybliżenia F w strumieniu danych przez Flajoleta i Martina. Ich algorytm wybiera losową funkcję skrótu , która zakłada równomierny rozkład wartości skrótu w przestrzeni skrótów.

Bar-Yossef i in. we wprowadzonym algorytmie wartości k-minimum do wyznaczania liczby odrębnych elementów w strumieniu danych. Użyli podobnej funkcji skrótu h , którą można znormalizować do [0,1] jako . Ale ustalili limit t na liczbę wartości w przestrzeni skrótów. Przyjęto wartość t rzędu (tj. mniejsza wartość przybliżenia ε wymaga więcej t ). Algorytm KMV przechowuje tylko t - najmniejsze wartości skrótu w przestrzeni skrótów. Po nadejściu wszystkich m wartości strumienia do obliczenia . Oznacza to, że w zbliżonej do jednolitej przestrzeni skrótu spodziewają się, że co najmniej t elementów będzie mniejszych niż .

Procedura 2 K-Minimalna wartość Zainicjuj pierwsze wartości t KMV dla a w a1 do an do if h(a) < Max(KMV) następnie Usuń Max(KMV) z zestawu KMV Wstaw h(a) do KMV end if end for return t/maks. (KMV)
Analiza złożoności KMV

Algorytm KMV można zaimplementować w miejsce na bity pamięci. Każda wartość skrótu wymaga miejsca rzędu bitów pamięci Istnieją wartości skrótu rzędu . Czas dostępu można skrócić, przechowując t w drzewie binarnym. W ten sposób złożoność czasowa zostanie zredukowana do .

Obliczanie Fk _

Alon i in. szacuje F k , definiując zmienne losowe, które można obliczyć w danej przestrzeni i czasie. Oczekiwana wartość zmiennych losowych daje przybliżoną wartość F k .

Załóżmy, że długość ciągu m jest znana z góry. Następnie skonstruuj zmienną losową X w następujący sposób:

  • Wybierz p \ być losowym członkiem sekwencji A z indeksem w p ,
  • Niech reprezentuje liczbę wystąpień l w elementach sekwencji A następujących po p .
  • Zmienna losowa .

Załóżmy, że S 1 jest rzędu i S 2 jest rzędu . Algorytm przyjmuje S 2 zmienną losową i wyprowadza medianę . Gdzie Y i jest średnią z X ij gdzie 1 ≤ j S 1 .

Teraz oblicz wartość oczekiwaną zmiennej losowej E ( X ) .

Złożoność Fk _

p Z algorytmu obliczania F k omówionego powyżej widzimy, że każda zmienna losowa X przechowuje wartość i r . Tak więc, aby obliczyć X p , musimy zachować tylko log( n ) bitów do przechowywania i log( n ) bitów do przechowywania r . Całkowita liczba zmiennych losowych X będzie wynosić .

Stąd całkowita złożoność przestrzenna algorytmu jest rzędu

Prostsze podejście do obliczania F 2

Poprzedni algorytm oblicza + bitów pamięci. Alon i in. w uproszczeniu ten algorytm przy użyciu czterokierunkowej niezależnej zmiennej losowej z wartościami odwzorowanymi na . .

To dodatkowo zmniejsza złożoność obliczania O

Częste elementy

W modelu strumienia danych problem częstych elementów polega na wyprowadzaniu zestawu elementów, które stanowią więcej niż pewien stały ułamek strumienia. Szczególnym przypadkiem jest problem większości , który polega na określeniu, czy jakakolwiek wartość stanowi większość strumienia.

Bardziej formalnie, ustalmy pewną dodatnią stałą c > 1, niech długość strumienia będzie m i niech fi oznacza częstotliwość wartości i w strumieniu. Problemem częstych elementów jest wyprowadzenie zbioru { i | fa ja > m/c }.

Niektóre godne uwagi algorytmy to:

Wykrywanie zdarzeń

Wykrywanie zdarzeń w strumieniach danych jest często wykonywane przy użyciu algorytmu o dużym natężeniu ruchu, jak opisano powyżej: najczęstsze elementy i ich częstotliwość są określane za pomocą jednego z tych algorytmów, następnie największy wzrost w stosunku do poprzedniego punktu czasowego jest zgłaszany jako trend. Podejście to można udoskonalić, stosując wykładniczo ważone średnie kroczące i wariancję do normalizacji.

Liczenie różnych elementów

Zliczanie liczby odrębnych elementów w strumieniu (czasami nazywanym momentem F 0 ) to kolejny dobrze zbadany problem. Pierwszy algorytm zaproponowali Flajolet i Martin. W 2010 roku Daniel Kane , Jelani Nelson i David Woodruff znaleźli asymptotycznie optymalny algorytm dla tego problemu. Wykorzystuje O ( ε 2 + log d ) , z czasem aktualizacji i raportowania w najgorszym przypadku O (1) , a także uniwersalne funkcje haszujące i r -mądra niezależna rodzina skrótów, gdzie r = Ω(log(1/ ε ) / log log(1/ ε )) .

Entropia

częstotliwości jest zdefiniowana jako gdzie .

Nauka online

Naucz się modelu (np. klasyfikatora ) przez pojedyncze przejście przez zbiór uczący.


Dolne granice

Dolne granice zostały obliczone dla wielu problemów związanych ze strumieniowaniem danych, które zostały zbadane. Zdecydowanie najpowszechniejszą techniką obliczania tych dolnych granic jest wykorzystywanie złożoności komunikacji . [ potrzebne źródło ]

Zobacz też

Notatki

  1. ^ Munro, J. Ian; Paterson, Mike (1978). „Wybór i sortowanie z ograniczoną pamięcią”. 19. doroczne sympozjum na temat podstaw informatyki, Ann Arbor, Michigan, USA, 16–18 października 1978 r . Towarzystwo komputerowe IEEE. s. 253–258. doi : 10.1109/SFCS.1978.32 .
  2. ^ a b c Flajolet & Martin (1985)
  3. ^ a b c d Alon, Matias i Szegedy (1996)
  4. Bibliografia _ Sampath, Kannan (2005). „O problemach z wykresami w modelu semi-streaming” . Informatyka teoretyczna . 348 (2): 207–216. doi : 10.1016/j.tcs.2005.09.013 .
  5. Bibliografia     _ Babu, Shivnath; Datar, Mayur; Motwani, Rajeev; Wdowa, Jennifer (2002). Modele i problemy w systemach strumienia danych . Materiały z dwudziestego pierwszego sympozjum ACM SIGMOD-SIGACT-SIGART na temat zasad systemów baz danych . PODS '02. Nowy Jork, NY, USA: ACM. s. 1–16. CiteSeerX 10.1.1.138.190 . doi : 10.1145/543613.543615 . ISBN 978-1581135077 . S2CID 2071130 .
  6. ^    Bar-Yossef, Ziv; Jayram, TS; Kumar, Ravi; Sivakumar, D.; Trevisan, Luca (2002-09-13). Zliczanie odrębnych elementów w strumieniu danych . Techniki randomizacji i aproksymacji w informatyce . Notatki z wykładów z informatyki. Springera, Berlina, Heidelbergu. s. 1–10. CiteSeerX 10.1.1.12.6276 . doi : 10.1007/3-540-45726-7_1 . ISBN 978-3540457268 .
  7. Bibliografia _ (2001)
  8. Bibliografia _
  9. Bibliografia    _ Woodruff, David (2005-01-01). Optymalne przybliżenia momentów częstotliwości strumieni danych . Materiały z trzydziestego siódmego dorocznego sympozjum ACM poświęconego teorii informatyki . STOC '05. Nowy Jork, NY, USA: ACM. s. 202–208. doi : 10.1145/1060590.1060621 . ISBN 978-1-58113-960-0 . S2CID 7911758 .
  10. ^ ab Bar    -Yossef, Ziv; Jayram, TS; Kumar, Ravi; Sivakumar, D.; Trevisan, Luca (2002-09-13). Rolim, José DP; Vadhan, Salil (red.). Zliczanie odrębnych elementów w strumieniu danych . Notatki z wykładów z informatyki. Springer Berlin Heidelberg. s. 1–10. CiteSeerX 10.1.1.12.6276 . doi : 10.1007/3-540-45726-7_1 . ISBN 978-3-540-44147-2 .
  11. Bibliografia _
  12. ^     Flajolet, Philippe (1985-03-01). „Przybliżone liczenie: szczegółowa analiza”. BIT Matematyka numeryczna . 25 (1): 113–134. CiteSeerX 10.1.1.64.5320 . doi : 10.1007/BF01934993 . ISSN 0006-3835 . S2CID 2809103 .
  13. ^   Cormode, Graham (2014). „Podsumowania Misra-Gries” . W Kao, Ming-Yang (red.). Encyklopedia algorytmów . Springera USA. s. 1–5. doi : 10.1007/978-3-642-27848-8_572-1 . ISBN 9783642278488 .
  14. ^   Schubert, E.; Weiler, M.; Kriegel, HP (2014). SigniTrend: skalowalne wykrywanie pojawiających się tematów w strumieniach tekstowych za pomocą zaszyfrowanych progów istotności . Materiały z 20. międzynarodowej konferencji ACM SIGKDD nt. Odkrywania wiedzy i eksploracji danych - KDD '14. s. 871–880. doi : 10.1145/2623330.2623740 . ISBN 9781450329569 .
  15. ^ Kane, Nelson i Woodruff (2010)