1 / 31 Luku 9. Relevanttien sivujen etsintä verkosta: satunnaiskulut verkossa T-61.2010 Datasta tietoon, syksy 2011 professori Heikki Mannila Tietojenkäsittelytieteen laitos, Aalto-yliopisto 1.12.2011
2 / 31 Tämän luvun sisältö 1 Relevanttien sivujen etsintä verkosta: satunnaiskulut verkossa Webin lyhyt historia Etsintä verkosta Keskukset ja auktoriteetit PageRank Muista T-ohjelman kurssipalaute (+1 piste joulu- ja tammikuun tenttiin): http://www.cs.hut.fi/opinnot/palaute/kurssipalaute.html
3 / 31 Webin lyhyt historia 1989: Tim Berners-Lee Maaliskuussa 1989 Tim Berners-Lee jätti ehdotuksen CERNin tiedonhallintajärjestelmäksi Esimiehen kommentti: epämääräinen mutta kiinnostava... Proposal.html
4 / 31 Webin lyhyt historia 1992: ensimmäisiä selaimia Syksyllä 1992 info.cern.ch kertoi uusista palvelimista ja sivuista http://www.w3.org/history/...
5 / 31 Webin lyhyt historia Linkkikokoelmia Jerry and David s Guide to the World Wide Web. Myöhemmin nimellä Yahoo; iso käsin ylläpidetty lista webbiosoitteita. vanhoja sivustoja
6 / 31 Webin lyhyt historia Altavista oli 1990-luvun Hakukone Digital teki Altavistan mainostaakseen servereitään: Näillä voi indeksoida vaikka koko webin. Altavistalla webbisivujen etsiminen muuttui paljon helpommaksi, mutta vastaukset tulivat melko satunnaisessa järjestyksessä.
7 / 31 Webin lyhyt historia 1998: Google Google keksi, miten hakutulokset järjestetään hyödyllisyyden mukaan.
8 / 31 Etsintä verkosta Miten löydetään verkosta hyviä sivuja, jotka kertovat vaikkapa tiedon louhinnasta? Ensimmäiset menetelmät skaalautuivat huonosti: info.cern.ch: ilmoitustaulu uusista sivuista Yahoo: käsin toimitettu hakemisto Annettuna kysely data mining Miten löydetään automaattisesti sivut, joilla nuo sanat esiintyvät (tai esiintyvät peräkkäin)? Miten löydetään näistä sivuista hyödyllisimmät?
9 / 31 Etsintä verkosta Sanahaku Merkkijonomenetelmät ( string algorithms ): paljon hauskoja algoritmeja Esivalmisteluna käydään koko verkko läpi seuraamalla linkkejä Kullakin sanalla X tallennetaan lista sivuista, joilla X esiintyy Kyselyyn X ja Y vastattessa käydään kummankin sanan osoitelistat läpi ja palautetaan ne osoitteet, jotka esiintyvät molemmissa. Käytännössä hankalampaa kuin näyttää paperilla: dataa on paljon, vastaus pitäisi saada alle sekunnissa. Paljon mielenkiintoista tekniikkaa, katso esim. http://research.google.com/pubs/papers.html
10 / 31 Etsintä verkosta Relevanssi Results 1 10 of about 50,300,000 Vanha tapa ratkaista ongelma: käyttäjä tarkentaa kyselyä lisäämällä ovelasti valittuja sanoja ja operaattoreilla AND, OR, NOT, NEAR. Miten valitaan ne sivut, jotka näytetään ensimmäiseksi? Heuristiikkoja: Sanojen esiintymisfrekvenssi (huono idea) Sivu on hyvä, jos siihen viitataan paljon Sivu on hyvä lähde asiasta X, jos X mainitaan sivuun viittaavissa linkeissä (eli ihminen on tehnyt jo arvioinnin)
11 / 31 Keskukset ja auktoriteetit Hubs and authorities : Jon M. Kleinberg: Authoritative Sources in a Hyperlinked Environment, IBM Research Report 1997; SODA 1998 http://scholar.google.fi/ Hyvillä auktoriteetti-sivuilla on paljon yhteisiä linkittäjiä eli keskuksia. Hyvä keskus osoittaa hyvää arvostelukykyä linkittämällä hyviin auktoriteetteihin
12 / 31 Keskukset ja auktoriteetit Etsitään ensin parhaiden sivujen ja linkkien joukot Etsitään ensin sivut, joilla X ja Y esiintyy Otetaan näistä heuristiikkojen perusteella esim. 200 parasta; olkoon tämä sivujen ydinjoukko S Muodostetaan joukko T : S ja sivut jotka viittaavat johonkin joukon S sivuun ja sivut joihin jokin S:n sivu viittaa (katso kuva alla) 6 2 5 9 10 14 12 S 1 3 T 4 S 7 8 11 13 15 Kuva: Keskukset ja auktoriteetit. Ydinjoukko S laajennettuna sivuilla, joihin tai joista on linkki.
13 / 31 Keskukset ja auktoriteetit (2) Etsitään ensin parhaiden sivujen ja linkkien joukot Tarkastellaan joukkoa T verkkona: solmuina sivut, kaarina linkit (suunnattuja kaaria) Olkoon E verkon T kaarien joukko: (u, v) E kun sivulta u on linkki sivulle v Pelkkä sivuun osoittavien linkkien määrä ei ole kovin hyvä relevanssin mittari
Keskukset ja auktoriteetit Periaate Periaate: Hyvä keskus osoittaa hyviin auktoriteetteihin Hyviin auktoriteetteihin tulee linkkejä hyvistä keskuksista Kehämääritelmä? 14 / 31
Keskukset ja auktoriteetit Hyvien keskusten ja auktoriteettien laskenta iteratiivisesti Kehämääritelmästä selvitään iteratiivisella menetelmällä (vrt. c-means, Luku 6) Kullekin joukon T sivulle s määritellään keskuspaino k s ja auktoriteettipaino a s Tarvitaan jotkin alkuarvot: a s = k s = 1 n, s T Iteratiiviset päivityssäännöt: a s k t, k s t T, (t,s) E t T, (s,t) E a t 15 / 31
16 / 31 Keskukset ja auktoriteetit (2) Hyvien keskusten ja auktoriteettien laskenta iteratiivisesti Eli sivun s auktoriteettipainoa varten summataan kaikki keskuspainot niistä sivuista, joista on linkki sivulle s. Sivun s keskuspaino päivitetään vastaavasti summaamalla sivun s linkkaamien sivujen auktoriteettipainot Joka iteraatiossa skaalataan painojen neliöiden summat ykkösiksi as 2 = 1, ks 2 = 1 s T s T
17 / 31 Keskukset ja auktoriteetit Hyvien keskusten ja auktoriteettien laskenta matriiseilla Edellä saadut iterointikaavat voidaan kirjoittaa helposti myös matriisimuodossa Ajatellaan painoja vektoreina a = (a s ) s T, k = (k s ) s T ja verkko matriisina M M = (1, jos (s, t) E, muuten 0) Nyt iteraation päivityssäännöt voidaan kirjoittaa: a M T k, k Ma
18 / 31 Keskukset ja auktoriteetit (2) Hyvien keskusten ja auktoriteettien laskenta matriiseilla Ottaen huomioon skaalauksen ykköseksi voidaan kirjoittaa koko iterointisääntö: M1 M1 a MT k M T k, k Ma Ma Ajetaan iteraatiota läpi muutama kierros, kun alustuksena 1 a 1 { { M T 1 MT 1 a 1... MMT 1 a 1... MT MM T 1 k 1 k 1... MT M1 k 1... MMT M1 Siis i:n iteraation jälkeen a = 1... (MT M) i 1
19 / 31 Keskukset ja auktoriteetit (3) Hyvien keskusten ja auktoriteettien laskenta matriiseilla Pieni esimerkki Matriisi M T M on symmetrinen, joten sillä on reaaliset ominaisarvot ja -vektorit ja se voidaan diagonalisoida M T M = VD n V T missä D = diag(λ 1,..., λ n ) Teknisellä oletuksella λ 1 > λ 2 saadaan (M T M) i 1 = VD i V T 1 V diag(λ i 1, 0,..., 0) V T 1 = (λ i 1 vt 1 1)v 1 Siis a on matriisin M T M suurinta ominaisarvoa vastaava ominaisvektori Vastaavasti k on matriisin MM T ominaisvektori Ominaisvektorit voitaisiin esim. Matlabissa funktiolla [V, D] = eig(m *M)
20 / 31 Keskukset ja auktoriteetit Tuloksia Kleinbergin paperista Auktoriteetteja (ylempi kuva) Toinen sovellus (alempi kuva): Samankaltaisten sivujen löytäminen: sen sijasta, että aloitettaisiin sanahaun löytämistä sivuista, aloitetaan johonkin sivuun linkittävistä sivuista.
21 / 31 PageRank Sergey Brin and Larry Page, 1998 (Google) The Anatomy of a Large-Scale Hypertextual Web Search Engine Wikipedia: PageRank Sivu on relevantti, jos relevantit sivut viittaavat siihen. Kehämääritelmä? (Jälleen tehdään iteratiivinen menetelmä)
22 / 31 PageRank Laskenta Jos sivulta t on linkit sivuille s 1, s 2,..., s k, sivun t relevanssista r välittyy 1/k jokaiselle näistä sivuista Esimerkiksi universumin neljä sivua, niiden nykyiset relevanssit, linkit ja välittyvät relevanssit
23 / 31 PageRank (2) Laskenta Siis relevanssivektori ( PageRank ) r F r, missä matriisin F määrittelee { 1/deg(t), jos t:stä on linkki s:ään F s,t = 0, muuten jossa deg(t) on linkkien määrä eli k yllä Sopivilla oletuksilla r on F:n suurinta ominaisarvoa vastaava ominaisvektori, joten iteraatio konvergoi Toinen tulkinta: Satunnainen surffailija aloittaa joltain sivulta ja seuraa linkkejä satunnaisesti. Sivun relevanssi on todennäköisyys, jolla surffailija päätyy sivulle (pitkän ajan kuluessa). Entä jos...
24 / 31 PageRank (3) Laskenta
25 / 31 PageRank (4) Laskenta Jos sivusta ei ole linkkejä minnekään, lisätään linkit kaikkialle. Tässä n on sivujen määrä. 1/deg(t), jos t:stä on linkki s:ään F s,t = 1/n, jos t:stä ei ole linkkejä minnekään 0, muuten Lisätään linkkejä saman tien kaikkialle: sallitaan surffaajan joskus kyllästyä (lisäksi vältytään teknisiltä hankaluuksilta konvergenssitodistuksessa) Pieni esimerkki 1 ɛ deg(t) + ɛ n, jos t:stä on linkki s:ään F s,t = 1/n, jos t:stä ei ole linkkejä minnekään ɛ/n, muuten
26 / 31 PageRank (5) Laskenta Altavistan käyttäjät jaksoivat lukea tuloksia monelta sivulta, Googlen käyttäjät katsovat vain muutamaa ensimmäistä
27 / 31 Yhteenveto Tässä luvussa keskusteltiin merkitsevien webbisivujen löytämisestä sivujen linkityksen perusteella. Keskusten ja auktoriteettien algoritmissa periaattena on, että hyvät keskukset linkittävät hyviin auktoriteetteihin ja vastaavasti hyviin auktoriteetteihin tulee linkkejä hyvistä keskuksista. PageRank-algoritmi laskee sivujen relevanssia satunnaisen surffailijan tavoin. Algoritmi on käytössä Googlessa.
Liite: Kuvia esitykseen, luku 9 28 / 31 Esimerkki keskuksista ja auktoriteeteista Tutkitaan oheista verkkoa, jonka kaarien matriisi M, M(i, j) = 1, jos olemassa kaari (s i, s j ). Oikeanpuoleisessa kuvassa vasemman puolen solmujen koko viittaa laskettuun keskuspainoon ja oikean puolen solmujen koko auktoriteettipainoon. Seuraavilla kalvoilla Matlab-koodi ja tulokset. 6 5 4 3 2 1 11 10 9 8 7 Kuva: Keskukset ja auktoriteetit. (a) Lähtötilanne. (b) Keskuspainot k 1,..., k 6 ja auktoriteettipainot a 7,... a 11 6 5 4 3 2 1 11 10 9 8 7
Liite: Kuvia esitykseen, luku 9 29 / 31 Esimerkki keskuksista ja auktoriteeteista Matlab-koodi M = [ 0 0 0 0 0 0 1 1 1 0 0; <M-matriisi> ]; % M(i,j)=1 <=> s_i-->s_j n = size(m,1); a = ones(n,1)/sqrt(n); k = ones(n,1)/sqrt(n); % auktoriteettipainot % keskuspainot for s = 1 : 20 aold = a; kold = k; anew = M *k; knew = M*a; % paivitys a = anew/sqrt(sum(anew.^2)); % skaalaus k = knew/sqrt(sum(knew.^2)); disp([ Kierros: num2str(s)]); disp([ Muutos: num2str(sum((a-aold).^2)), num2str(sum((k-kold).^2))]); disp([ # aukt kesk alku ]); disp([(1:n) a k ones(n,1)/sqrt(n)]) pause; end
Liite: Kuvia esitykseen, luku 9 30 / 31 Esimerkki keskuksista ja auktoriteeteista Tulokset Kierros: 20 Muutos: 1.2917e-15, 1.911e-14 # aukt kesk alku 1.0000 0 0.5583 0.3015 2.0000 0 0.4877 0.3015 3.0000 0 0.2659 0.3015 4.0000 0 0.2219 0.3015 5.0000 0 0.4877 0.3015 6.0000 0 0.3043 0.3015 7.0000 0.1985 0 0.3015 8.0000 0.6241 0 0.3015 9.0000 0.7479 0 0.3015 10.0000 0 0 0.3015 11.0000 0.1082 0 0.3015 Takaisin kalvoihin
Liite: Kuvia esitykseen, luku 9 31 / 31 Esimerkki PageRank:sta 1 ɛ deg(t) + ɛ n, jos t:stä on linkki s:ään F s,t = 1/n, jos t:stä ei ole linkkejä minnekään ɛ/n, muuten Kuva: PageRank-esimerkki. Varsinaiset linkit paksummalla viivalla ja nuolella.