Stream-algoritmi

Suoratoistoalgoritmi  on algoritmi datasarjan käsittelemiseksi yhdellä tai pienellä määrällä kulkua .

Stream-algoritmit ratkaisevat ongelmia, joissa dataa saapuu peräkkäin ja suuria määriä. Esimerkki on verkkoliikenteen analyysi reitittimen puolella . Tällaiset ongelmat asettavat luonnollisia rajoituksia käytettävissä olevalle muistille (paljon vähemmän kuin syöttödatan koko) ja prosessointiaikaan kullekin sekvenssin elementille suoratoistoalgoritmeissa. Usein tietojen käsittely on mahdollista vain yhdellä kertaa.

Tiukat aika- ja muistirajoitukset tekevät usein mahdottomaksi ratkaista tutkittavaa ongelmaa tarkasti. Virtausalgoritmit ovat yleensä todennäköisyyspohjaisia ​​ja antavat likiarvon tarkalle vastaukselle.

Historia

Vaikka tällaisia ​​algoritmeja tarkasteltiin 1980-luvun ensimmäisen puoliskon teoksissa [1] [2] , suoratoistoalgoritmin käsite virallistettiin ensin Alonin , Matiasin ( eng.  Yossi Matias ) ja Szegedin ( eng.  Mario ) teoksissa. Szegedy ) vuonna 1996 [3] . Vuonna 2005 kirjoittajat palkittiin Gödel-palkinnolla heidän perustavanlaatuisesta panoksestaan ​​suoratoistoalgoritmeihin . 

Vuonna 2005 otettiin käyttöön puolisuoratoistoalgoritmin käsite [  4 ] algoritmeina, jotka käsittelevät saapuvan virran vakiona tai logaritmisena.[ selventää ] passien lukumäärä.

Malli

Virtatietomallissa katsotaan, että osa tai kaikki prosessoitavan syöttödatan joukko ei ole käytettävissä satunnaiskäyttöä varten : syöttödata saapuu peräkkäin ja jatkuvasti yhdessä tai useammassa virrassa. Tietovirrat voidaan esittää järjestetyllä pistejonolla ("päivitykset"), joihin pääsee järjestyksessä ja vain kerran tai rajoitetun määrän kertoja.

Monet ketjutusjulkaisut pitävät tietokonetilastojen tehtävänä tietojen jakelussa, joka on liian suuri tehokkaaseen varastointiin.[ määritä ] . Tämän luokan ongelmia varten oletetaan, että vektorissa (nolla-alustettu ) on säikeessä jonkin verran "päivityksiä". Tällaisten algoritmien tavoitteena on laskea funktioita, jotka käyttävät huomattavasti vähemmän tilaa kuin vaatisi vektorin täydellisen esityksen . Tällaisten tietojen päivittämiseen on olemassa kaksi yleistä mallia: " kassakone " ja "kääntöportti" ( eng . turnstile ).   

"Cash"-mallissa jokainen "päivitys" esitetään muodossa ja vektoria muokataan siten, että se kasvaa jollain positiivisella kokonaisluvulla . Erikoistapaus on tapaus (vain yksi yksikkö saa lisätä).

"Kääntöportti"-mallissa jokainen "päivitys" esitetään muodossa ja vektoria muokataan siten, että se kasvaa jollain positiivisella tai negatiivisella kokonaisluvulla . Tiukassa mallissa millään hetkellä ei voi olla negatiivinen.

Useissa lähteissä "slide-window" -mallia tarkastellaan lisäksi. Tässä mallissa kiinnostava funktio lasketaan rajoitetun ulottuvuuden ikkunan yli virtatiedoista, elementtejä ikkunan lopusta ei oteta huomioon ennen kuin uusi data virrasta tulee tilalle.

Nämä algoritmit eivät huomioi vain datan taajuusominaisuuksiin liittyviä kysymyksiä, vaan myös monia muita. Monet graafien ongelmat ratkaistaan ​​sillä ehdolla, että graafin vierekkäisyysmatriisi ladataan etukäteen jossain tuntemattomassa järjestyksessä. Joskus päinvastoin on tarpeen ratkaista tietojen järjestyksen arvioinnin ongelma, esimerkiksi laskea käänteisten arvojen lukumäärä virrassa ja löytää suurin kasvava sekvenssi.

Algoritmien vertailu

Suoratoistoalgoritmien pääominaisuudet:

Näillä algoritmeilla on paljon yhteistä online-algoritmien kanssa, koska algoritmin on tehtävä päätös ennen kuin kaikki tiedot ovat saatavilla, mutta eroja on. Erityisesti in-line-algoritmeilla on kyky viivyttää päätösten tekemistä, kunnes datasekvenssin pisteiden ryhmä saapuu, kun taas online-algoritmien on tehtävä päätökset sekvenssin jokaisen uuden pisteen saapuessa.

Jos algoritmi on likimääräinen, niin vastauksen tarkkuus on toinen indikaattori. Algoritmin tarkkuus esitetään usein arvona , mikä tarkoittaa, että algoritmi saavuttaa vähemmän virhettä todennäköisyydellä .

Sovellus

Virtausalgoritmeilla on suuri merkitys esimerkiksi tietokoneverkkojen valvonta- ja hallintatehtävissä , sillä niiden avulla voidaan nopeasti estää ylivuodot (jälkivirtojen seuranta , lukumäärän ja odotettavissa olevan keston arvioiminen) [ ] Myös suoratoistoalgoritmeja voidaan käyttää tietokannoissa, esimerkiksi arvioimaan kokoa taulukon liitosoperaation jälkeen .

Esimerkkejä suoratoistoalgoritmien ratkaisemista ongelmista

Ongelmia taajuusjakaumassa

Taajuushetki vektorissa on määritelty .

Ensimmäinen hetki  on taajuuksien yksinkertainen summa (eli kokonaisluku). Toinen kohta on hyödyllinen laskettaessa datan tilastollisia parametreja, kuten Gini-kerrointa . määritellään useimmin esiintyvän elementin taajuudeksi.

Myös taajuusmomenttien arvioinnin kysymyksiä tutkitaan.

Etsi raskaita elementtejä

Tehtävänä on löytää useimmin esiintyvä elementti tietovirrasta. Tässä pätevät seuraavat algoritmit:

Trendiseuranta

Trendit tietovirrassa tehdään yleensä seuraavassa järjestyksessä: yleisimmät elementit ja niiden taajuudet määritetään jonkin yllä olevista algoritmeista[ selventää ] <--algoritmit raskaiden elementtien löytämiseen? ja jos tämä osio siirretään alemmas?-->, ja sitten suurin nousu edelliseen ajankohtaan verrattuna on trendi. Tätä varten käytetään eksponentiaalista liukuvaa keskiarvoa ja erilaisia ​​normalisointeja [6] . Se käyttää O(ε² + log d)-avaruutta ja O(1) pahimman tapauksen päivitystä yleiselle hash-funktiolle r-smart-riippumattomien tiivistefunktioiden perheestä, jossa r = Ω(log(1/ε)/log log(1) / ε))[ määritä ] .

Entropia

Empiirinen entropiaestimaatti taajuuksien joukolle määritellään , jossa [7] .

Koneoppiminen

Verkkokoneoppimisen päätehtävänä  on kouluttaa malli (esimerkiksi luokitin) yhdellä kertaa koulutussarjan läpi; ennustavaa tiivistystä ja gradienttia sen

Yksilöllisten elementtien lukumäärän laskeminen

Yksilöllisten elementtien lukumäärän laskeminen tietovirrassa (hetki ) on toinen asia[ selventää ] hyvin tutkittu ongelma. Ensimmäisen algoritmin ehdottivat Flajolet ja Martin [2] . Vuonna 2010 löydettiin asymptoottisesti optimaalinen algoritmi [8] .

Muistiinpanot

  1. Munro & Paterson (1980 )
  2. 1 2 Flajolet & Martin (1985 )
  3. Alon, Matias & Szegedy (1996 )
  4. Feigenbaum Joan , Kannan Sampath , McGregor Andrew , Suri Siddharth , Zhang Jian. Graafiongelmista puolisuoratoistomallissa  // Teoreettinen tietojenkäsittelytiede. - 2005. - Joulukuu ( nide 348 , nro 2-3 ). - S. 207-216 . — ISSN 0304-3975 . - doi : 10.1016/j.tcs.2005.09.013 .
  5. J. Xu Verkkotietojen suoratoiston opetusohjelma
  6. Schubert Erich , Weiler Michael , Kriegel Hans-Peter. SigniTrend  // 20. ACM SIGKDD:n kansainvälisen Knowledge Discovery and Data Mining -konferenssin aineisto - KDD '14. - 2014. - ISBN 9781450329569 . - doi : 10.1145/2623330.2623740 .
  7. Entropiaarviot antoivat McGregor et ai., Do Ba et ai., Lall et ai., Chakrabarti et ai.[ selventää ]
  8. Kane, Daniel M.; Nelson, Jelani; Woodruff, David P. (2010), "Optimaalinen algoritmi erillisten elementtien ongelmalle", Proceedings of the 29th ACM SIGMOD-SIGACT-SIGART symposium on Principles of Database Systems, PODS '10, New York, NY, USA: ACM, s. 41-52, doi: 10.1145/1807085.1807094, ISBN 978-1-4503-0033-9 .

Kirjallisuus

Linkit

oppikirjoja Kurssit