hyväksymispäivä arvosana arvostelija Tiedonlouhinta: Klusterointi ja pienimmän leikkauksen virittävät puut Hannu Maksimainen Helsinki 19.4.2009 Seminaari: Tiedonlouhinta HELSINGIN YLIOPISTO Tietojenkäsittelytieteen laitos
HELSINGIN YLIOPISTO HELSINGFORS UNIVERSITET UNIVERSITY OF HELSINKI Tiedekunta Fakultet Faculty Laitos Institution Department Matemaattis-luonnontieteellinen Tietojenkäsittelytieteen laitos Tekijä Författare Author Hannu Maksimainen Työn nimi Arbetets titel Title Tiedonlouhinta: Klusterointi ja pienimmän leikkauksen virittävät puut Oppiaine Läroämne Subject Tietojenkäsittelytiede Työn laji Arbetets art Level Aika Datum Month and year Sivumäärä Sidoantal Number of pages Seminaari: Tiedonlouhinta 19.4.2009 20 sivua Tiivistelmä Referat Abstract Klusterointi eli verkon solmujen luokitteleminen samankaltaisiin solmuihin on oleellinen osa verkkojen tutkimista. Hyvän klusteroinnin etuja ovat hyvien klustereiden löytäminen ja klusteroinnin suorittamisen nopeus. Tässä kirjoitelmassa esitellään hyvä verkkojen klusterointimenetelmä verkon pienimmän leikkauksen mukaan ja menetelmän laajentaminen erittäin nopeaksi muuttuvissa verkoissa toimivaksi klusterointitavaksi. Kirjoitelman lopuksi esitellään menetelmän käyttämistä kahdessa erityyppisessä verkossa. Avainsanat Nyckelord Keywords tiedonlouhinta, verkon pienin leikkaus, klusterointi Säilytyspaikka Förvaringsställe Where deposited Muita tietoja övriga uppgifter Additional information
Sisältö ii 1 Johdanto 1 2 Termit 1 2.1 Verkko................................... 1 2.2 Verkon leikkaus.............................. 2 2.3 Verkon pienin leikkaus.......................... 3 2.4 Pienimmän leikkauksen virittävä puu.................. 3 2.5 Laajennos ja johtavuus.......................... 4 2.6 Solmujoukon kutistaminen........................ 5 3 Klusteroinnin muodostaminen 5 4 Pienimmän leikkauksen algoritmi 6 4.1 Keinotekoinen nielu ja klustereiden muodostaminen.......... 6 5 Klusterointi minimaalisen leikkauksen mukaan 7 5.1 Klusteroinnin laatu............................ 7 6 Hierarkinen klusterointi 7 7 Ketterä pienimmän leikkauksen algoritmi 8 7.1 Solmun sisäinen ja ulkoinen paino klusterissa.............. 9 7.2 Kaaren lisäys klusterin sisään...................... 9 7.3 Kaaren lisäys klustereiden välille..................... 9 7.4 Kaaren poistaminen klusterin sisältä.................. 10
7.5 Kaaren poistaminen klustereiden väliltä................. 11 7.6 Solmun poistaminen........................... 11 iii 8 Verkkoyhteisöt 12 8.1 Verkkoyhteisöjen tunnistaminen käytännössä.............. 13 9 Käytännön esimerkkejä 15 9.1 Citeseer.................................. 15 9.2 Verkkosivujen klusterointi........................ 16 9.3 Tukivektorikoneen tutkijayhteisö.................... 17 9.4 The Internet Archive -yhteisö...................... 18 10 Yhteenveto 18 Lähteet 19
1 Johdanto 1 Verkkojen klusterointi on niin tietojenkäsittelyn kuin muidenkin tieteenalojen tärkeä tutkintamenetelmä. Verkkojen klusteroinnilla voidaan selvittää yhteyksiä laajojen tietokokonaisuuksien välillä sekä parantaa keskeisten solmujen tunnistamista verkoista. Tässä kirjoitelmassa esitellään verkon pienimmän leikkauksen käyttämistä verkon klusteroinnin apuna. Verkon pienin leikkaus jakaa verkon kahteen osaan niin, että osien välillä kulkevien kaarien painojen summa on mahdollisimman pieni. Klusterointimenetelmästä esitetään myös parannettu versio, joka pystyy ylläpitämään hyvän klusteroinnin myös muuttuvassa verkossa. Kirjoitelman lopussa esitellään käytännön tuloksia klusteroinnissa. Verkkoina käytetään Citeseerin tietokantaa tieteellisistä julkaisuista, ja toisena esimerkkinä on verkkosivujen luokitteleminen verkkoyhteisöihin. 2 Termit 2.1 Verkko Verkko on joukko solmuja ja kaaria. Kaaret yhdistävät solmuja. Kaaret voivat olla joko suuntaamattomia tai suunnattuja. Suunnatut kaaret ovat yksisuuntaisia, jotka yhdistävät kaksi solmua kaaren suunnan mukaisesti. Suuntaamattomat kaaret yhdistävät solmut kumpaankin suuntaan. Suuntaamaton kaari vastaa tilannetta, jossa kahden solmun välillä on suunnattu kaari molempiin suuntiin. Verkkoja merkitään merkillä G. Verkon solmujoukkoa merkitään V :llä ja verkon kaaria merkillä E. Erityisesti verkon solmuista ja kaarista V ja E muodostuvaa verkkoa merkitään G(V, E). Verkon solmujen määrästä käytetään merkintää V = n. Vastaavasti verkon kaarien määrä merkitään E = m. Verkon kaaria merkitään
2 e = (u, v), jossa kaari on kahden solmun u ja v välillä. Suuntaamattomassa verkossa kaari e = (u, v) vastaa kaarta e = (v, u). Verkon kaarilla voi olla paino. Painoa merkitään w(e) = w(u, v). Painoa ei erikseen merkitä, jos paino on kaikille verkon solmuille sama. Yleisesti siis kaarien paino on w(e) = 1, e E. Verkko voi koostua useasta eri solmujoukosta, joita ei yhdistä yksikään kaari. Tällöin verkko on epäyhtenäinen. Vastaavasti verkkoa sanotaan yhtenäiseksi, jos verkon kaikista solmuista on mahdollista kulkea kaikkiin muihin solmuihin verkon kaaria pitkin. Tässä kirjoitelmassa verkot ovat suuntaamattomia ja yhtenäisiä ellei toisin ole mainittu. 2.2 Verkon leikkaus Kaikki verkot on mahdollista jakaa kahteen osaan niin, että verkosta tulee epäyhtenäinen. Jako tehdään poistamalla verkosta kaaria. Verkon jakamista kahteen osaan sanotaan verkon leikkaukseksi. Leikkaus muodostuu kahdesta koko verkon solmujoukon osajoukosta. Leikkaus tehdään kahden verkkoon kuuluvan solmun suhteen. Verkon jako kahteen osaan ilmaistaan leikkauksena verkossa G solmujen s ja t välillä. Leikkaus verkossa G merkitään verkon solmujoukon V alijoukkoina. Näin ollen (A, B) on leikkaus verkossa G, kun A, B V, A B = V ja A B = Leikkauksen arvo eli c(a, B) määritellään leikkauksen ylittävien kaarien painona. Leikkauksen paino on mahdollista määritellä myös osajoukkojen A ja B välillä, kun A B V. Samoin merkitään s A, t B, jossa s, t V.
2.3 Verkon pienin leikkaus 3 Leikkauksien arvo määräytyy verkon leikkauksen ylittävien kaarien painon mukaan. Leikkauksia voidaan mitata niiden arvon mukaan. Erityisesti kiinnostavia leikkauksia ovat pienimmät leikkaukset eli verkon G osajoukot (A, B), jossa c(a, B) on mahdollisimman pieni. Verkon pienin leikkaus vastaa myös verkon suurinta vuota [FF62]. Verkon G pienin leikkaus solmujen s ja t välillä jakaa verkon kahteen osaan niin, että osajoukkojen välillä kulkevien kaarien painojen summa on pienin. 2.4 Pienimmän leikkauksen virittävä puu Verkon pienintä leikkausta on mahdollista etsiä puulla [GH61]. Puuta sanotaan joko Gomory-Hu-puuksi tai pienimmän leikkauksen virittäväksi puuksi. Puu sisältää kaikki alkuperäisen verkon G solmut. Solmut on yhdistetty toisiinsa kaarilla. Puussa ei ole syklejä. Pienimmän leikkauksen virittävästä puusta on mahdollista selvittää helposti solmujoukko, joka leikkaa verkon G kahden solmun välillä. Puu T muodostuu alkuperäisen verkon G solmuista V ja kaarista R, siis T = (V, R). Minkä tahansa kaaren (u, v) R poistaminen puusta T muodostaa erilliset solmujoukot A ja B, jotka muodostavat pienimmän leikkauksen alkuperäisessä verkossa G. Tässä kirjoitelmassa ei käsitellä pienimmän leikkauksen virittävän puun muodostamista. Puun muodostaminen käsitellään artikkelissa [GH61].
2.5 Laajennos ja johtavuus 4 Verkoille voidaan laskea laajennos ja johtavuus [KVV00]. Kaksi solmujoukkoa S ja S ovat leikkaus verkossa G. Laajennos kuvaa näiden kahden solmujoukon välillä kulkevien kaarien painoa jaettuna pienemmän solmujoukon koolla. Johtavuus kuvaa solmujoukkojen välillä kulkevien kaarien painoa jaettuna yhteiskaaripainoltaan pienemmän solmujoukon yhteiskaaripainolla. Laajennosta merkitään siten ψ(s) = i S,j S w ij) min{ S, S }, (1) jossa w ij on kaaren (i, j) paino. Johtavuutta merkitään siten jossa w(s) = w(s, V ) = i S φ(s) = j V w ij. i S,j S w ij min{w(s), w(s)}, (2) Verkon G laajennos on pienin kaikkien mahdollisten leikkauksien laajennoksista. Vastaavasti verkon G johtavuus on pienin kaikkien mahdollisten leikkauksien johtavuuksista. Laajennos ja johtavuus voidaan laskea myös alijoukoille eli klustereille verkossa G. Näin voidaan mitata arvo klusteroinnille CC verkossa G. Klusteroinnin CC laajennos on yksittäisten klustereiden pienimmän laajennoksen arvo. Vastaavasti johtavuus klusteroinnissa CC on yksittäisten klustereiden pienimmän johtavuuden arvo. Klusterin johtavuus on pienin klusterin sisällä olevien leikkauksien johtavuuksista. Olkoon verkossa G klusteri C V ja klusterin C sisällä klusteri (S, C \ S), missä S C. Tällöin johtavuus S:lle klusterissa C on φ(s, C) = i S,j C\S w ij min{w(s), w(c \ S)} (3)
2.6 Solmujoukon kutistaminen 5 Verkon solmujoukkoja on mahdollista kutistaa tarvittaessa. Menetelmässä solmujoukko yhdistetään yhdeksi solmuksi, josta kulkee kaaret kaikkiin niihin solmuihin, joihin alkuperäisistä solmujoukon solmuista kulki kaaret. Kaarien painoksi asetetaan alkuperäisten kaarien painojen summa. Solmujoukon sisällä kulkevat kaaret poistetaan. Solmujoukon kutistaminen pienimmän leikkauksen virittävän puun oksan mukaan ei vaikuta pienimmän leikkauksen virittävään puuhun. Flake et al. [FTT] todistavat artikkelissaan kutistamisen vaikutuksen pienimmän leikkauksen virittävään puuhun. Olkoon T verkon G pienimmän leikkauksen virittävä puu ja A puun T alipuu eli oksa. Olkoon G verkko, jossa joukko A on kutistettu verkosta G, ja T verkon G pienimmän leikkauksen virittävä puu. Olkoon T puu, jossa A on kutistettu puusta T. Tällöin T ja T ovat yhteneväiset. 3 Klusteroinnin muodostaminen Flake et al. sekä aikaisemmat tutkimukset osoittavat [FTT] [KVV00], että laajennokseen ja johtavuuteen perustuvat klusteroinnit toimivat usein paremmin kuin pienimpiin leikkauksiin perustuvat klusteroinnit. Klusteroinnin tekeminen optimoimalla laajennosta ja johtavuutta on kuitenkin laskennallisesti vaativaa. Laskentavaatimukset kasvavat helposti NP-täydellisiksi, koska ongelma on lähellä harvimman leikkauksen ongelmaa. Flake et al. [FTT] sekä Kannan et al. [KVV00] ovat tutkineet optimointiin liittyviä ongelmia. Tutkimuksissa on päädytty arvioimaan tuloksia tietyillä raja-arvoilla. Tällöin ongelman aikavaatimus ei kasva NP-täydelliseksi.
6 Kannan et al. ovat määritelleet omassa tutkimuksessaan kaksi sääntöä, joiden mukaan klustereita muodostetaan. Säännöt ovat a) klustereiden laajennos tai johtavuus ylittää raja-arvon α ja b) klustereiden välisten kaarien painojen summa ei ylitä verkon kaikkien kaarien painojen summan murto-osaa ɛ Flake et al. esittävät omassa tutkimuksessaan samantyyppiset ehdot, joiden mukaan klusterointi suoritetaan. 4 Pienimmän leikkauksen algoritmi 4.1 Keinotekoinen nielu ja klustereiden muodostaminen Leikkauksilla on mahdollista klusteroida verkkoja. Hyvä klusterointi asettaa samanlaiset solmut samaan klusteriin ja erilaiset solmut eri klusteriin. Pelkällä verkon leikkaamisella verkkoon muodostuu aina vain kaksi klusteria: toisessa klusterissa on lähdesolmua s vastaavat solmut ja toisessa kohdesolmua t vastaavat solmut. Klusteroinnin avuksi verkkoihin lisätään keinoteknoinen nielu eli solmu, josta on kaari kaikkiin verkon solmuihin. Keinotekoinen nielu on apusolmu verkon klusterointiin. Solmua merkitään t:llä. Verkon muut solmut yhdistetään solmuun t kaarilla, joiden paino on α. Kaarien paino on määriteltävä parametri, joka vaikuttaa syntyvien klustereiden ominaisuuksiin ja kokoon. Keinotekoisen nielun määritelmä on muotoiltu tarkemmin artikkelissa [FTT]: Verkko G (V, E ) on keinotekoisen nielun sisältävä verkko, missä V = V t ja E = E e(t, v), v V. V = n + 1 ja E = m + n. Määritelmää voi tarkentaa lisäämällä kaaripainojen arvot eli w(t, v) = α v V.
7 Keinotekoisen nielun sisältävälle verkolle muodostetaan verkon pienimmän leikkauksen virittävä puu. Sitten puusta poistetaan keinotekoinen nielu. Puu jakautuu metsäksi, jossa jokainen erillinen puu on klusteri. Puihun kuuluvat solmut muodostavat klustereita alkuperäisessä verkossa. 5 Klusterointi minimaalisen leikkauksen mukaan 5.1 Klusteroinnin laatu Edellä esitetyn kuvauksen mukaan tehty klusteri S täyttää seuraavat ehdot [FTT02]. c(p, Q) min{ S, S } jossa P, Q S, kun P Q = S ja P S = α, (4) c(s, V S) V S α (5) Kaavoissa arvo α asettaa alarajan klustereiden sisäiselle laajennokselle ja ylärajan eri klustereiden väliselle laajennokselle. Kaavoja on mahdollista käyttää klusteroinnin laadun selvittämiseen, josta on hyötyä kappaleen 7 algoritmissa. 6 Hierarkinen klusterointi Klusterointi on mahdollista suorittaa useaan kertaan samalle verkolle pienemmällä arvolla α. Tällöin saadaan hierarkinen klusterointi verkkoon, josta on mahdollista nähdä erikokoisten klusterointien tulokset helposti. Hierarkisessa klusteroinnissa verkon alkuperäiset klusterit kutistetaan ennen uuden klusteroinnin suorittamista. Kutistamisen jälkeen klusterointi suoritetaan uudelleen, jolloin kutistetut
8 klusterit vastaavat tavallisia solmuja. Uuden klusteroinnin kanssa pitää kuitenkin käyttää pienempää arvoa α, jotta uusia klustereita syntyy. Ilman pienempää arvoa α klusterointi pysyy samana. Hierarkisella klusteroinnilla saatujen klustereiden laatu lasketaan samalla tavalla kuin tavallisen klusteroinnin tapauksessa. Hierarkinen klusterointi lopetetaan, kun klustereiden määrä vastaa haluttua tai klusterointi tuottaa vain yhden klusterin. Hierarkisen klusteroinnin yksi tärkeistä ominaisuuksista on klustereiden sisäkkäisyys eli alemman tason klusterit ovat ylemmän tason klustereiden osajoukkoja. 7 Ketterä pienimmän leikkauksen algoritmi Saha ja Mitra [SM06] esittelevät artikkelissaan menetelmän suurien verkkojen jatkuvaan klusteroimiseen. Menetelmä ylläpitää muuttuvassa verkossa hyvää klusterointia, joten se soveltuu eritoten dynaamisiin verkkoihin hyvin. Verkkoihin on mahdollista lisätä tai poistaa solmuja tai kaaria. Verkon klusterit mukautuvat verkon rakenteen muutoksiin nopeasti. Saha ja Mitra esittävät, että dynaamisen verkon klustereiden muodostamisessa ei tarvitse kiinnittää huomiota koko verkkoon, kun verkko muuttuu vain paikallisesti. Erityisesti jo muodostettujen klustereiden sisällä tapahtuvat muutokset melko epätodennäköisesti vaikuttavat muihin klustereihin. Varsinkin kaarien lisääminen tietyn klusteriden sisään tai kaarien poistaminen klustereiden väliltä vahvistaa klustereiden yhteenkuuluvuutta, joten tällöin koko verkkoa ei todennäköisesti tarvitse klusteroida uudelleen. Sahan ja Mitran algoritmi [SM06] on esitelty alla.
9 7.1 Solmun sisäinen ja ulkoinen paino klusterissa Solmun sisäinen paino (ICW, In Cluster Weight) on solmusta lähtevien kaarien paino toisiin solmuihin klusterin sisällä. Solmun ulkoinen paino (OCW, Out Cluster Weight) on solmusta lähtevien kaarien paino muiden klustereiden solmuihin. Määritelmät ovat verkossa G(V, E), jonka klusterit ovat C 1, C 2,..., C s, jossa s > 0: Sisäinen paino eli ICW (v) = w(v, u), (6) u C i jossa solmu v V ja v C i, 0 i s Ulkoinen paino eli OCW (v) = jossa solmu v V ja v C i, 0 i s w(v, u), (7) u C j,j i 7.2 Kaaren lisäys klusterin sisään Verkon solmuista ylläpidetään yleistä vieruslistaa A, jossa on kaarien painot solmujen välillä. Kaaren lisäys klusterin sisään on yksinkertainen. Kaaren molempien päiden solmujen tulee kuulua samaan klusteriin, jolloin lisäys voidaan tehdä yksinkertaisesti. Tällöin päivitetään vieruslistaa A ja lasketaan kaaren solmuille i ja j uudestaan arvo ICW (i) ja ICW (j). Toimenpiteen aikavaatimus on O(1). 7.3 Kaaren lisäys klustereiden välille Kaaren lisäys klustereiden välille on monimutkaisempi toimenpide kuin kaaren lisäys klusterin sisälle. Monimutkaisuus johtuu klustereiden välillä tapahtuvasta lähentymisestä kaaren lisäyksen johdosta. Klusterointi joudutaan tekemään uudestaan, jos klusteroinnin laatu muuttuu kaavan (4) mukaan.
10 Nopeaa uudelleenklusterointia varten tarvitaan kaksi menetelmää lisää, jolla klustereita voidaan hallita. Menetelmät ovat klustereiden yhdistäminen ja klusterin kutistaminen. Klustereiden yhdistäminen tehdään valitsemalla kaikki kaaret ja solmut klustereista C u ja C v, jonka jälkeen solmujen ICW ja OCW päivitetään. Klustereiden kutistaminen tehdään korvaamalla klusteri yhdellä solmulla x. Kutistetun klusterin sisäiset kaaret poistetaan kutistamisen yhteydessä. Muiden klusterien solmuista tulevien rinnakkaiset kaaret korvataan kaarella, jonka paino on alkuperäisten kaarien painojen summa. Klusterointia ei tarvitse tehdä, jos klusteroinnin laatu ei heikkene kaavan (4) mukaan. Jos klusteroinnin laatu heikkenee, mutta kaava (5) on voimassa kaaren lisäyksen jälkeen, niin kaaren yhdistämät klusterit C u ja C v yhdistetään edellä mainitulla tavalla. Jos myöskään kaava (5) ei ole voimassa, niin klusterointi joudutaan laskemaan uudelleen. Uudelleenklusteroinnissa voidaan kutistaa kaikki muut klusterit paitsi C u ja C v solmuksi x. Tällöin koko verkko pienenee C u + C v + 1 kokoiseksi. Verkkoon lisätään sitten keinotekoinen nielu t, joka yhdistetään kaarilla kaikkiin muihin verkon solmuihin. Kaaren (x, t) painoksi asetetaan V C u C v α ja muiden kaarien painoksi α. Syntyneestä verkosta mudoostetaan pienimmän leikkauksen virittävä puu. Puusta poistetaan solmu t, jonka jälkeen siitä etsitään yhtenäiset komponentit. Yhtenäiset komponentit sekä alkuperäisen verkon klusterit CC {C u, C v } muodostavat uuden klusteroinnin. Toimenpiteen aikavaatimus on Θ( C u + C v 3 ). 7.4 Kaaren poistaminen klusterin sisältä Kaaren poistaminen klusterin sisältä vastaa edellisen kappaleen tilannetta, jossa ehdot (4) ja (5) eivät täyty. Tällöin verkosta kutistetaan kaikki muut klusterit paitsi
11 C u, koska poistetun kaaren molemmat päät ovat klusterin C u sisällä. Uudelleenklusterointi suoritetaan kuten edellisessä kappaleessa. Toimenpiteen aikavaatimus on Θ( C u 3 ). 7.5 Kaaren poistaminen klustereiden väliltä Kaaren poistaminen klustereiden väliltä vähentää klustereiden välistä yhteenkuuluvuutta. Tämän takia klustereiden sisäinen yhteenkuuluvuus vahvenee, joten uudelleenklusterointia ei tarvitse tehdä. Klustereita ei tarvitse päivittää, mutta kaaren yhdistämien solmujen OCW -arvo ja solmujen välinen vieruslistaa A pitää päivittää. Solmujen OCW -arvosta vähennetään poistettavan kaaren paino ja vieruslistasta poistetaan poistettu kaari. Toimenpiteen aikavaatimus on O(1). 7.6 Solmun poistaminen Solmun poistaminen verkosta jakautuu kahteen tapaukseen. Solmu voi olla erillään muista solmuista, jolloin sen voi poistaa suoraan verkosta ja vieruslistalta. Jos solmusta lähtee kaaria, niin kaarien poisto tapahtuu edellä esitettyjen toimenpiteiden mukaan. Aluksi poistetaan toisiin klustereihin liittyvät kaaret. Sen jälkeen poistetaan solmun kanssa samaan klusteriin kulkevat kaaret. Kaarien poistamisen jälkeen solmu on erillään muista solmuista, jolloin sen voi poistaa verkosta ja vieruslistalta.
8 Verkkoyhteisöt 12 Artikkelissa [FLG00] Flake et al. tutkivat pienimmän leikkauksen käyttöä verkkoyhteisöjen klusteroimisessa. Pienimmällä leikkauksella voidaan tunnistaa verkkosivuista yhteisöjä. Artikkelissa esitetään kuinka verkkoyhteisö voidaan määritellä tarkasti, mutta jonka laskeminen kaikkien verkkosivujen suhteen on käytännössä mahdotonta. Tarkan verkkoyhteisöjen tunnistamisen lisäksi artikkelissa esitetään kuinka verkkoyhteisöjä voidaan tunnistaa tehokkaasti valitsemalla pieni joukko lähtösolmuja ja suorittamalla verkkoyhteisöjen etsintä lähtösolmuilta löytyvien linkkien perusteella. Verkkoyhteisöjen etsimistä varten on hyvä määritellä yhteisö. Flake et al. määrittelevät yhteisön artikkelissa [FLG00] seuraavalla tavalla. Yhteisö on solmujoukko C V, jonka kaikilla solmuilla v C on yhtä paljon tai enemmän kaaria joukkoon C kuin joukkoon (V C). Kuva 1: Yhteisö. Vasemmalla on joukko solmuja C, jotka ovat yhteydessä muuhun verkkoon V \ C kolmen kaaren kautta. Poistamalla kaaret verkko osittuu kahteen osaan. Kaarien paino c(c, V \ C) on leikkauksen arvo. Verkkoyhteisön tunnistamista varten Flake et al. määrittelevät myös lähtö- ja maalisolmulle laatuarvot, jotta yhteisöjen tunnistaminen on luotettavaa. Laadukkuus katsotaan solmujen kaarien määrästä yhteisön sisällä ja yhteisön ulkopuolella. Määritelmä on muotoiltu seuraavalla tavalla.
13 Lähtösolmun s kaarien määrä saman yhteisön (C s) sivuihin merkitään s #. Vastaavasti maalisolmun kaarien määrä muihin kuin yhteisön C solmuihin eli joukkoon (V C t) merkitään t #. Määritelmien avulla voidaan nyt esittää tapa, jolla verkkoyhteisöjä on mahdollista tunnistaa verkkosivuista. Verkon G pienin leikkaus solmujen s ja t välillä, kun s # ja t # ylittävät leikkauksen joukkojen koon, muodostaa yhteisön C. Asettamalla raja arvoille s # ja t # estetään triviaalit leikkaukset, jossa joko lähtötai maalisolmu eristetään muusta verkosta. 8.1 Verkkoyhteisöjen tunnistaminen käytännössä Käytännössä verkkoyhteisöjen etsiminen verkkosivujen joukosta vaatii kokonaiskuvan kaikkien verkkosivujen linkeistä. Tietojen kerääminen verkkosivujen linkeistä ja niiden ylläpitäminen tietokannassa vaatii erittäin paljon resursseja. Tämän takia Flake et al. esittävät tavan [FLG00], jolla verkkoyhteisöjä on mahdollista etsiä tehokkaasti tarkastelematta kaikkia verkkosivuja. Verkkoyhteisöjen tunnistaminen aloitetaan yhdestä tai useammasta oletettuun verkkoyhteisöön kuuluvasta verkkosivusta eli lähdesivusta. Lähdesivujen tarkoitus on pohjustaa joukko tarkasteltavia verkkosivuja, jotka saadaan seuraamalla linkkejä lähdesivuilta. Ulospäin lähtevät linkit löytyvät helposti sivujen lähdekoodista. Sivuille muualta linkitettyjen sivujen etsiminen on vaikeampaa. Flake et al. käyttävät omassa ratkaisussaan hakukoneiden ominaisuutta link, jolla voi hakea sivuja, jotka linkittävät tiettyyn toiseen sivuun. Link-ominaisuudella hakukone palauttaa hakusanaksi annettuun sivuun linkittävät toiset verkkosivut.
14 Flake et al. jakavat edellisellä menetelmällä löydetyt verkkosivut kolmeen eri joukkoon. Joukot ovat (a) lähdesivut, (b) yhden linkin päässä olevat sivut ja (c) muut sivut. Joukkojen lisäksi verkkoon lisätään erikoissolmu a lähdesivujen ja c lähdesivuista kaukaisimpien sivujen yhteyteen. Solmu a yhdistetään alkuperäisiin lähdesolmuihin kaarilla, joiden paino on ääretön. Lähdesolmuista kaukaisimmat sivut eli (c) yhdistetään keinotekoiseen nieluon c kaarilla, joiden paino on yksi. Kuva 2: Verkkosivujen luokitteleminen lähtösolmujen mukaan. Vasemmalla keinotekoinen lähtösivu a, josta on kaaret alkuperäiseen lähdesivujen joukkoon a. Joukko b on yhden linkin päässä lähdesivuista a. Joukko c on yli yhden linkin päässä lähtösivuista a. Joukko c yhdistetään kaarilla keinotekoiseen nieluon c. Verkon muodostamisen jälkeen Flake et al. muuttavat kaaret joukkojen a ja b välillä kaksisuuntaisiksi. Menettelyllä pyritään estämään yksinkertaiset leikkaukset, jossa pelkästään lähdesolmu tai lähdesolmut muodostavat leikkauksen. Toinen tapa estää yksinkertaisten leikkausten syntymistä on painottaa lähdesolmuihin liittyviä kaaria. Joukon (c) yhdistäminen kaarilla keinotekoiseen nieluon vastaa sopivan kohdesolmun valitsemista joukosta (c). Menetelmä perustuu verkkosivujen yleisluonteeseen, jossa yli kahden linkin päässä olevat sivut eivät yleensä kuulu samaan yhteisöön. Lähdesivujen valintaa voi parantaa käyttämällä parhaimman arvion (Expectation Maximization, EM) [DLR77] menetelmää. Flake et al. ehdottavat, että uusia lähde-
15 sivuja valitaan lisää kyseisellä menetelmällä. Menetelmässä toistetaan useaan kertaan kaksi vaihetta. Aluksi verkosta etsitään pienin leikkaus, jonka solmut ovat verkkoyhteisön osajoukko. Sitten solmujoukosta valitaan lähdesivujen joukkoon sellainen sivu tai sivut, joilla on eniten linkkejä muihin sivuihin. Näin lähdesivujen määrä kasvaa. Lähdesivujen määrän kasvaminen parantaa klusteroinnin tuloksia, koska leikkauksen arvo ei saa olla lähdesivujen ulospäin lähtevien linkkien määrää suurempi. Kun lähdesivuja on enemmän, niin leikkauksen arvo voi olla suurempi, joka mahdollistaa suuremmat klusterit. Testien [FLG00] mukaan noin neljällä toistolla lähdejoukon koko ei enää kasva. 9 Käytännön esimerkkejä Seuraavissa kappaleissa on esitetty verkon pienimmän leikkauksen käyttämistä erilaisten verkkojen klusterointiin. Käytännön esimerkkeinä tarkastellaan tieteellisten julkaisujen tietokantaa Citeseeriä sekä verkkosivuista muodostuvien verkkoyhteisöjen klusterointia. Citeseerin klusteroinnissa artikkelit ovat solmuja ja artikkeleiden viitteet kaaria solmujen välillä. Verkkosivujen kanssa solmut ja kaaret ovat loogisesti itse verkkosivut ja linkit sivujen kesken. 9.1 Citeseer Flake et al. ovat tutkineet [FTT] verkon pienimpään leikkaukseen perustuvaa kusterointimenetelmää Citeseerin [cit] tietokannassa. Tietokantaan on koottu tieteellisiä julkaisuja ja niiden välisiä viittauksia. Tällaisessa verkossa tieteelliset julkaisut ovat solmuja ja viittaukset toisiin julkaisuihin ovat kaaria solmujen välillä. Klusterointiin käytetyn verkon koko oli 132 210 julkaisua ja 461 170 viitettä. Viitteet
16 muutettiin suuntaamattomiksi ja kaarien paino suhteutettiin julkaisun viitteiden kokonaismäärään. Julkaisusta löytyvien viitteiden eli kaarien yhteispaino on näin yksi. Menettelyllä tasoitetaan erot julkaisujen välillä, jotka viittaavat joko moneen tai vain muutamaan julkaisuun. Flake et al. suorittivat klusteroinnin hierarkisesti. Saadusta hierarkisesta klusteroinnista on mahdollista nähdä julkaisujen ryhmittyminen eri tasoilla. Matalimmilla tasoilla julkaisut ovat ryhmittyneet hyvin yksityiskohtaisiin aliryhmiin kuten rinnakkaislaskennan LogP-malli ja bayesialainen interpolointi. Korkeamman tason klusterit kasaavat yhteen alemman tason ryhmiä. Korkean tason klusterit muodostavat yleisen tason ryhmiä kuten verkot, tietokannat ja ohjelmointikielet. Klusteroinnin tulokset ovat hyviä. Flake et al. huomauttavat kuitenkin, että verkkoon jää myös yksittäisiä solmuja, jotka eivät kuulu mihinkään suurempaan klusteriin. Tämä johtuu klusterointialgoritmin tavasta asettaa klustereiden laajennokselle raja. Muodostuneet klusterit ovat kuitenkin hyvin laadukkaita, joten niitä voi käyttää esimerkiksi lähtöjoukkona muille klusterointialgoritmeille. 9.2 Verkkosivujen klusterointi Artikkelissa [FLG00] Flake et al. käyttävät verkon pienintä leikkausta klusteroimaan verkkosivuja. Klusteroinnin pohjana he käyttivät kolmea erityyppistä verkkoyhteisöä: tukivektorikone- (TVK) (Support Vector Machine), The Internet Archive (IA) [IA] ja Ronald Rivest -yhteisöä. Tukivektorikone on lineaarinen luokitinmalli, The Internet Archive säilyttää kopioita verkkosivuista ja Ronald Rivest on kuuluisa salausalgoritmien tutkija. Tässä kirjoitelmassa tarkastellaan tarkemmin tukivektorikone- ja IA-yhteisöjä.
9.3 Tukivektorikoneen tutkijayhteisö 17 TVK-yhteisön lähdesivuiksi Flake et al. [FLG00] asettavat joukon TVK-tutkimukseen suuntautuneiden tutkijaryhmien sivuja: http://svm.rst.gmd.de/ http://svm.research.bell-labs.com/ http://www.clrc.rhbnc.ac.uk/research/svm/ http://www.support-vector.net/ Sivujen läpikäymisessä Flake et al. ohittivat kaikki saman verkkotunnuksen sisällä olevat linkit. Tällä tavalla sivujen sisäiset linkit eivät muodosta liian suurta sisäistä yhteyttä verkkoon. Muilta sivustoilta linkkejä seurattiin, joten minkä tahansa verkkotunnuksen alisivujen oli mahdollista päätyä tutkittavaan verkkoon. Etsinnän ja EMmenetelmän jälkeen verkkosivuja oli verkossa yhteensä yli 11 000, joista 252 kuuluu lähdesivujen joukkoon. Flake et al. järjestävät löydetyn yhteisön sivut tärkeysjärjestykseen yksinkertaisella algoritmilla. Sivuille annetaan pisteitä sen mukaan kuinka monta linkkiä niistä on toisiin yhteisön sivuihin tai kuinka paljon niihin linkitetään. Pistetyksen mukaan neljä ensimmäistä sivua olivat rajatapauksia ne kuuluvat TVK:ta vahvemmin neuroverkkoihin, tiedonlouhintaan ja hahmontunnistukseen. Yhteisön 252 sivusta vain muutama oli vääriä sivuja. Väärät sivut liittyivät neuroverkkoihin ja tiedonlouhinnan aihepiiriin. Mukana oli myös yksi ohjelmia listaava sivu, joka oli selkeästi väärin luokiteltu
9.4 The Internet Archive -yhteisö 18 IA-yhteisön tutkimista varten Flake et al. [FLG00] asettivat suuremman lähdesivujen joukon kuin TVK-yhteisön tutkimista varten. Lähdesivuja oli yksitoista, jotka oli poimittu IA:n kotisivujen kautta. Sivujen läpikäynti suoritettiin samalla tavalla kuin viimeksi eli sivuston sisäisiä linkkejä ei seurattu. EM-algoritmia toistettiin vain kaksi kertaa, josta tuloksena oli yli 7000 sivua. Sivuista 289 kuului IA-yhteisöön. Yhteisöön kuuluvien sivujen sisältö oli samanlainen IA:n kanssa. Yhteisöön kuului sivustoja, joiden aihepiirinä oli esimerkiksi erilaisia median tutkimussivuja, arkistointiin keskittyneitä järjestöjä, tieteellisiä kirjastoja, internet-tilastoja ja muita lähellä IA:n toimintaa olevia sivustoja. IA:n yhteisöönkään ei mahtunut monia virhesivustoja. Suurimpana virheenä oli ilmainen sähköpostisivu http://mail.yahoo.ca/. Sivu pääsi mukaan yhteisöön, koska Yahoo!:lla oli yhteisössä mukana kuusi muuta arkistointiin ja digitaalisiin kirjastoihin liittyvää sivustoa. Tutkijat arvelevat, että useampi kierros EM-algoritmia olisi voinut auttaa sivun tunnistamisessa vääräksi. 10 Yhteenveto Verkon klusteroinnilla on monia eri käyttökohteita eri tieteenaloilla. Tämän vuoksi on tärkeää, että klusterointialgoritmit tuottavat laadukkaita klustereita. Verkon pienimpään leikkaukseen perustuvassa klusteroinnissa klustereiden määrää on helppo säätää vaihtamalla parametrin α arvoa. Suorittamalla klusterointi useasti eri α:n arvoilla, on verkko mahdollista klusteroida hierarkisesti. Hierarkisen klusteroinnin klusterit ovat sisäkkäisiä, mikä tuottaa loogisesti ymmärrettäviä kokonaisuuksia verkkoon. Verkon pienin leikkaus mahdollistaa hyvän klusterointimenetelmän. Sahan ja Mi-
19 tran [SM06] ketterällä algoritmilla klusterointi on mahdollista tehdä erittäin nopeasti myös jatkuvasti muuttuvassa verkossa. Tämä mahdollistaa hyvän klusteroinnin ylläpitämisen ilman raskasta koko verkon uudelleenklusterointia. Käytännön tulokset osoittavat, että menetelmällä on mahdollista klusteroida eri tyyppisiä verkkoja hyvin. Tutkijoiden käyttämät verkot [FTT] [FLG00] ovat luonteeltaan erilaisia. Tulokset ovat kuitenkin hyviä kaikissa esitetyissä tutkituissa verkoissa, joten pienimmän leikkauksen klusterointimenetelmä näyttää sopivan verkon klusterointiin erinomaisesti. Lähteet cit DLR77 http://www.siteseer.com. Dempster, A. P., Laird, N. M. ja Rubin, D. B., Maximum likelihood from incomplete data via the em algorithm. Journal of the Royal Statistical Society. Series B (Methodological), 39,1(1977), sivut 138. URL http://dx.doi.org/10.2307/2984875. FF62 FLG00 FTT Ford, L. R. ja Fulkerson, D. R., Flows in Networks. Princeton University Press, 1962. Flake, G. W., Lawrence, S. ja Giles, C. L., Ecient identication of web communities. In Sixth ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. ACM Press, 2000, sivut 150160. Flake, G. W., Tarjan, R. E. ja Tsioutsiouliklis, K., Clustering methods based on minimum-cut trees. URL citeseer.comp.nus.edu.sg/ 607238.html.
20 FTT02 GH61 "Flake, G. W., Tarjan, R. E. ja Tsioutsiouliklis, K., Graph clustering and minimum cut trees. Internet Mathematics, 1,4(2002), sivut 385 408. Gomory, R. E. ja Hu, T. C., Multi-terminal network ows. Journal of the Society for Industrial and Applied Mathematics, 9,4(1961), sivut 551570. URL http://www.jstor.org/stable/2098881. IA KVV00 SM06 http://www.archive.org. Kannan, R., Vempala, S. ja Vetta, A., On clusterings: good, bad and spectral. Journal of the ACM, 2000, sivut 367377. Saha, B. ja Mitra, P., Dynamic algorithm for graph clustering using minimum cut tree. ICDMW '06: Proceedings of the Sixth IEEE International Conference on Data Mining - Workshops, Washington, DC, USA, 2006, IEEE Computer Society, sivut 667671.