Hjem Personlig finansiering Hvordan man finder antallet af elementer i en datastrøm - dummier

Hvordan man finder antallet af elementer i en datastrøm - dummier

Video: Curious Beginnings | Critical Role | Campaign 2, Episode 1 2025

Video: Curious Beginnings | Critical Role | Campaign 2, Episode 1 2025
Anonim

Selv om et Bloom-filter kan spore objekter, der kommer fra en strøm, kan det ikke fortælle, hvor mange objekter der er. En smule vektor fyldt af dem kan (afhængigt af antallet af hash og sandsynligheden for kollision) skjule det sande antal genstande, der er hashed på samme adresse.

At kende det forskellige antal objekter er nyttigt i forskellige situationer, f.eks. Når du vil vide, hvor mange forskellige brugere der har set en bestemt hjemmeside eller antallet af forskellige søgemaskiner. Lagring af alle elementer og finde duplikaterne blandt dem kan ikke fungere med millioner af elementer, især fra en strøm. Når du vil vide antallet af forskellige objekter i en strøm, skal du stadig stole på en hash-funktion, men tilgangen indebærer at tage en numerisk skitse.

Skitsering betyder at der er en tilnærmelse, der er en inexakt, men ikke fuldstændig forkert værdi som et svar. Tilnærmelse er acceptabel, fordi den reelle værdi ikke er for langt fra den. I denne smarte algoritme, HyperLogLog,, som er baseret på sandsynlighed og tilnærmelse, observerer du egenskaberne ved tal, der genereres fra strømmen. HyperLogLog stammer fra studierne af computerforskere Nigel Martin og Philippe Flajolet. Flajolet forbedrede deres første algoritme, Flajolet-Martin (eller LogLog-algoritmen) til den mere robuste HyperLogLog-version, som virker som denne:

  1. En hash konverterer hvert element modtaget fra strømmen til et tal.
  2. Algoritmen konverterer antallet til binære, den basale 2-standard, som computere bruger.
  3. Algoritmen tæller antallet af indledende nuller i det binære nummer og spor af det maksimale antal, det ser, hvilket er n.
  4. Algoritmen estimerer antallet af forskellige elementer, der er bestået i strømmen ved hjælp af n. Antallet af forskellige elementer er 2 ^ n.

For eksempel er det første element i strengen ordet hund. Algoritmen pakker den ind i en heltalværdi og konverterer den til binær, med et resultat af 01101010. Der vises kun en nul i begyndelsen af ​​nummeret, så algoritmen registrerer det som det maksimale antal nulstillende nuler set. Algoritmen ser så ordene papegøje og ulv,, hvis binære ækvivalenter er 11101011 og 01101110, hvilket efterlader n uændret. Når ordet cat passerer, er output imidlertid 00101110, så n bliver 2. For at estimere antallet af forskellige elementer beregner algoritmen 2 ^ n, det vil sige 2 ^ 2 = 4. Figuren viser denne proces.

Tæller kun ledende nuller.

Algoritmens trick er, at hvis din hash producerer tilfældige resultater, lige fordelt (som i et Bloom filter) ved at se på den binære repræsentation, kan du beregne sandsynligheden for, at en sekvens af nuller dukker op. Fordi sandsynligheden for at et enkelt binært tal skal være 0 er en ud af to, for at beregne sandsynligheden for sekvenser af nuller, multiplicerer du blot den 1/2 sandsynlighed så mange gange som længden af ​​sekvensen af ​​nuller:

  • 50 procent (1/2) sandsynlighed for tal begyndende med 0
  • 25 procent (1/2 * 1/2) sandsynlighed for tal begyndende med 00
  • 12. 5 procent (1/2 * 1/2 * 1/2) sandsynlighed for tal startende med 000
  • (1/2) ^ k sandsynlighed for tal, der starter med k nuller (du bruger beføjelser til hurtigere beregninger af mange multiplikationer af samme tal)

Jo færre tal, som HyperLogLog ser, jo større er upræcisionen. Nøjagtigheden øges, når du bruger HyperLogLog-beregningen mange gange ved hjælp af forskellige hashfunktioner og gennemsnitligt sammen svarene fra hver beregning, men hashing mange gange tager tid, og strømme er hurtige. Som et alternativ kan du bruge den samme hash, men dele strømmen i grupper (f.eks. Ved at adskille elementerne i grupper efterhånden som de ankommer ud fra deres ankomstordre), og for hver gruppe holder du styr på det maksimale antal nulstillende nuller. I sidste ende beregner du det skelne element estimat for hver gruppe og beregner det aritmetiske gennemsnit af alle estimaterne. Denne fremgangsmåde er stokastisk middelværdi og giver mere præcise estimater end at anvende algoritmen til hele strømmen.

Hvordan man finder antallet af elementer i en datastrøm - dummier

Valg af editor

Hvordan du opretter email-beskeder til en SharePoint-gruppe - dummier

Hvordan du opretter email-beskeder til en SharePoint-gruppe - dummier

Hvis RSS ikke er dine ting, Du kan vælge at modtage e-mail-underretninger, når SharePoint-apps ændres ved at oprette en advarsel. Advarsler er en fantastisk måde at holde styr på de ændringer, som dine holdkammerater gør i dokumenter og elementer. Du skal bruge tilladelsen Opret advarsler til at oprette varsler. Denne tilladelse ydes som regel med out-of-the-boxen ...

Sådan oprettes eller fjernes tilladelser til et SharePoint Subsite-dummies

Sådan oprettes eller fjernes tilladelser til et SharePoint Subsite-dummies

I teorien kan du indstille sikkerhedskopiering én gang til en SharePoint-samling og tillade alt at arve. I virkeligheden vil du måske ikke have, at alle har samme adgang. For at oprette unikke tilladelser til et websted, en app, en mappe eller en genstand skal du stoppe at arve tilladelser fra forælder. Oprettelse af unikke tilladelser ...

Oprettelse af en standardvisning i din SharePoint 2016 App - dummies

Oprettelse af en standardvisning i din SharePoint 2016 App - dummies

Den mest almindelige form for visning du opretter i en SharePoint-app er en offentlig standardvisning. En offentlig visning kan bruges af alle til at se indholdet af en app. Standardvisninger har følgende egenskaber: De er tilgængelige for alle browsere, herunder Firefox, Chrome og Safari. De har de fleste konfigurationsindstillinger, sådan ...

Valg af editor

Wireframe Planlægning: Byg din infografiske dummies krop

Wireframe Planlægning: Byg din infografiske dummies krop

Efter at du har konstrueret en smart titel og indsigt Introduktion til din infographic, det sjove kan begynde. Med 80-90 procent af det visuelle rum i infografiet, der er afsat til stykkets krop, er det vigtigt at sikre en glat flow af billeder og information. Alle oplysninger, der er inkluderet i infographic, bør tjene til at ...

Wireframe Planlægning: Klargør "Big Idea" af dine infographic-dummies

Wireframe Planlægning: Klargør "Big Idea" af dine infographic-dummies

Når wireframing din infographic, skal du klarlægge din "store ide". "Din infographic vil uden tvivl have en række underemner, sektioner og typer af oplysninger. Men i alle disse forskellige elementer bør der altid være en nugget med information eller en konklusion, der er vigtigere end alt andet. Hvis en læser måtte fortælle ...

Valg af editor

Træner NaturallySpeaking til din stemme ved at læse tekst - dummier

Træner NaturallySpeaking til din stemme ved at læse tekst - dummier

Hvis NaturallySpeaking synes at være flere fejl end det plejede at spørge dig selv, om du har ændret sig siden du først trænede Dragon. Har din stemme, måde at tale, eller arbejdsmiljø ændret? F.eks. Får du mere erfaring med diktering? Har du ændret dit kontor eller ændret noget, der producerer eller absorberer lyd ...

Transkriber med AutoTranscribe Folder Agent i NaturallySpeaking - dummies

Transkriber med AutoTranscribe Folder Agent i NaturallySpeaking - dummies

, Hvis du har en tilbagevendende transkription til input til Dragon Selvfølgelig sparer AutoTranscribe Folder Agent dig tid. Hvis du f.eks. Optager en ugentlig podcast, kan du oprette en bestemt mappe til den. Når du placerer en ny lydfil i den mappe, transcriberes den automatisk. Hvis du vil indstille ...