Számítástudományi módszerek a webes szolgáltatásokban Rácz Balázs 2009. október 20. Áttekintés     Matematikai módszer: min-hash fingerprinting Alkalmazás: perszonalizáció a Google News szolgáltatásban SimRank hasonlósági függvény Személyre szabott PageRank Min-hash fingerprinting     On the.

Download Report

Transcript Számítástudományi módszerek a webes szolgáltatásokban Rácz Balázs 2009. október 20. Áttekintés     Matematikai módszer: min-hash fingerprinting Alkalmazás: perszonalizáció a Google News szolgáltatásban SimRank hasonlósági függvény Személyre szabott PageRank Min-hash fingerprinting     On the.

Számítástudományi módszerek a
webes szolgáltatásokban
Rácz Balázs
2009. október 20.
Áttekintés




Matematikai módszer: min-hash fingerprinting
Alkalmazás: perszonalizáció a Google News
szolgáltatásban
SimRank hasonlósági függvény
Személyre szabott PageRank
Min-hash fingerprinting




On the resemblance and containment of documents,
A. Broder, 1997.
Dokumentum: szavak halmaza
Két dokumentum hasonlósága: Da  Db
Jaccard-együttható
Da  Db
Véletlenített módszer a Jaccard-együtthatók
torzítatlan becslésére
Min-hash fingerprinting


Legyen h egy véletlen függvény a szavak halmazán
A D dokumentum ujjlenyomata
Fh ( D)  arg minwD h(w)


Az ujjlenyomatok megegyezési valószínűsége egy
adott h függvény esetén pont a Jaccard-együttható
Monte Carlo közelítés: N független ujjlenyomatból
átlagolva torzítatlan becslés a hasonlósági mértékre
Users reading (clicking on) news stories
Users reading news stories
•
Represent a user u by all the stories they clicked on:
•
Find similar users and recommend their clicks to u
User similarity = Sim(U1, U2) =
•
•
Translation: Out of all the stories either user has ever
clicked on, the more clicks they have in common, the
more similar they are
Min-hash fingerprinting alkalmazása



Jaccard-együtthatóval definiáljuk a
felhasználók hasonlóságát
N véletlen permutációból számított
ujjlenyomattal közelíthető, ezek letárolhatóak
Hasonló felhasználók által olvasott híreket
javasolunk
[screenshot of Google News showing
personalized stories]
Introduction / Motivation

Similarity search on the Web
Approaches / Related Results

Text-based



Classic IR
Min-hash fingerprinting (Broder ’97)
Pure link-based


Single-step: cocitation, bibliographic coupling, …
Multi-step:



Companion (Dean, Henzinger, ‘98)
SimRank (Jeh, Widom, ‘02)
random access
quadratic
Hybrid

Anchor text based (Haveliwala et al. ‘02)
Skálázhatóság: a probléma mérete

Hány lap van a weben?


Indexelhető lapok száma




Végtelen sok
2004: 11,5 milliárd; ma: legalább 60 milliárd
Más források: 120 milliárd
Mennyi a hasznos lapok száma?
Átlagos fokszám

Legalább 10
Skálázhatóság: követelmények

Előfeldolgozás (indexelés)



Indexadatbázis mérete


Lineáris
Lekérdezés


Input konstans sok végigolvasása
futási idő < 1 nap
Konstans sok adatbázishozzáférés; <1 sec
Párhuzamosíthatóság

Akár 1000 kisebb gép alkalmazása
SimRank




Jeh and Widom, 2002
“the similarity of two pages is the
average similarity of their referring pages”
Formalized as a PageRank-like equation:
Power iteration: quadratic storage and time
Goal: quadratic  linear
Randomization




For pages u and v, start two random walks
from them, following the links backwards.
Let τ be the first meeting time
Jeh, Widom: sim(u,v)=expected value of cτ
Our algorithm:

Monte Carlo method




simulate N independent pair of random walks
approximate sim with the average of cτ
Index DB: N random walk for each page
Query: calculate meeting times
Derandomization

(partially)
trick #1: pair-wise independence is enough
trick #2: anything after the first meeting is
irrelevant
 coalescing (sticky) walks

Allows very efficient representation


Gains






V=no. of pages (~109)
N=no. of indep. simulations (100)
Indexing: stream access to the graph, V cells
of memory (or external memory)
Index Database size: N·V (~500 GB)
Query: 2N disk seeks, time proportional to
the number of results
Parallelizable to N machines (5 GB storage, 2
disk seeks/query each)
Ipari alkalmazhatóság

Párhuzamosíthatóság


Hibatűrés



N-1 ujjlenyomatból számítjuk az eredményt
Terheléselosztás


Minden számítógép egy független ujjlenyomat
Nagy terhelés esetén csökkentjük N-et
Inkrementális indexelési algoritmusok
Klaszter kapacitása a gépek számában
lineárisan nő
PSimRank
random walks
SimRank
independent
PSimRank
coupled
uniform
min-hash
Pr(first step meet)
next edge choice


Coupling  walks “attract” each other, like they
were walking towards the same goal
Still, PSimRank can be computed within the same
Monte Carlo similarity search framework (all
scalability properties still hold!)
Konvergenciasebesség







N ujjlenyomat átlagából számított értékekre
Rögzített abszolút hiba
Hibavalószínűség exponenciálisan  0
Uniform: a csúcsoktól függetlenül
A gráftól függetlenül
Hasonlóan a toplista-felidézésre is
Következmény: N tekinthető aszimptotikusan
konstansnak
Alsó becslés



Van-e pontos algoritmus?
Nincs.
Tétel


Tétel


Az egzakt feladathoz D = Ω(V2) méretű index kell
A közelítő feladathoz D = Ω(V) méretű index kell
Lehet-e javítani ez utóbbit?

A mi algoritmusunk D = O(V logV) méretű adatbázist
igényel a 2.3. tézis által adott kódolással
Experimental evaluation



Evaluation methodology: Haveliwala et al. ’02
Uses Open Directory Project (dmoz.org)
Ground truth similarity in directory



familial distance: documents in the same class
are more similar as those in different classes
Compare orderings of familial distance and
calculated similarity
Stanford WebBase:

80M pages; including 200K ODP pages
Experiments #1: path length
Multi-step similarity does make sense!...
Experiments #3: number of simul. N
Note: recall (# of results) grows linearly.
Similarity search with SimRank

Approximation algorithm for multi-step/
recursive similarity functions





Uses simulated random walks
Monte Carlo method
Scalable
New similarity functions
First sight of these on real(ly big) web data

Yes, they do make sense!
Perszonalizált PageRank

PageRank(Brin,Page,’98)





PV  (1  c)  PV  M  c  r
PV PageRank vektor, r egyenletes eloszlás vektora
Globális minőségértékelés
Előfeldolgozás: hatványiterációval kiszámítjuk PV-t
Lekérdezés: PV értékei alapján rendezzük a találatokat
Personalized PageRank(Brin,Page,’98)




r felhasználó preferenciavektora, lekérdezési időben adott
PPV(r):=PV személyes minőségértékelés
Előfeldolgozás: r nem ismert. Mit számítsunk ki?
Lekérdezés: hatványiteráció. 5 óra válaszidő!!!
Teljes személyre szabás




Monte Carlo szimuláció, nem hatványiteráció
Előállítunk közelítő PPV(ri)-t minden kezdőlaphoz
Skálázhatóság: kvázilineáris előfeldolgozás &
konstans lekérdezés
Linearitás:
PPV(1r1    k rk )  1PPV(r1 )    k PPV(rk )
Alapötlet

Tétel (Jeh, Widom ’03, Fogaras ’03)




Indítsunk egy véletlen sétát az u csúcsból
Egyenletes lépés 1-c , megállunk c val.séggel
PPV(u,v)=Pr{ a megállási pont v }
Monte Carlo algoritmus

Előfeldolgozás



Lekérdezés


Az u-ból szimulálunk N független véletlen sétát
Indexadatbázis ujjlenyomatokból: A megállási pontok az
összes kiinduló csúcsra
PPV(u,v) : = # ( u→v séták ) / N
Lineáris kombinációval tetszőleges r vektorokra
Külső táras indexelés




Cél: N független séta, minden egyes pontból
Bemenet: webgráf V ≈ 1010, E ≈ 1011
V+E > memória
Hozzáférés az élekhez:


Adatfolyam: az élek végigolvasása
Az élek a kiindulópont szerint rendezettek
Külső táras indexelés (2)


Cél: N független séta, minden egyes pontból
Szimuláljuk az összes sétát egyidőben
Ciklus: 1 lépés = 1 futam
Rendezzük az utak végeit
Összefésül a gráffal
Minden séta megáll c vszg-gel
E( #séták ) = (1-c)k∙N∙V
k iteráció után
Elosztott indexelés


M számítógép gyors helyi hálózatba kötve
memória < V+E ≤ M∙(memória)
Párhuzamosítás: N∙V séta
M=3
A gráf részei memóriában
Üzenetküldés: csomagok
Példa: gyakorlati alkalmazhatóság


Web-gráf 10 milliárd csúccsal
Külső táras indexelés



256 TB I/O
60 diszk * 24 óra
Elosztott indexelés



100 számítógép memóriája elegendő
48 TB hálózati forgalom
~1 óra
Köszönöm a figyelmet!