HITS-algoritm - HITS algorithm

Hyperlänk-Induced Topic Search ( HITS , även känd som nav och myndigheter ) är en länk analys algoritm att priserna webbsidor, som utvecklats av Jon Kleinberg . Idén bakom nav och myndigheter härstammar från en särskild inblick i skapandet av webbsidor när internet ursprungligen bildades; det vill säga vissa webbsidor, så kallade nav, fungerade som stora kataloger som faktiskt inte var auktoritära i den information de innehöll, men användes som sammanställningar av en bred katalog med information som ledde användarna direkt till andra auktoritativa sidor. Med andra ord representerar ett bra nav en sida som pekade på många andra sidor, medan en god myndighet representerar en sida som är länkad av många olika nav.

Schemat tilldelar därför två poäng för varje sida: dess auktoritet, som uppskattar sidans innehåll och dess navvärde, som uppskattar värdet av dess länkar till andra sidor.

Historia

I tidskrifter

Många metoder har använts för att rangordna betydelsen av vetenskapliga tidskrifter. En sådan metod är Garfields påverkansfaktor . Tidskrifter som Science and Nature är fyllda med många citat, vilket gör att dessa tidskrifter har mycket höga påverkansfaktorer. Således, när man jämför två obskyra tidskrifter som har fått ungefär samma antal citat men en av dessa tidskrifter har fått många citat från Science and Nature , behöver denna tidskrift rankas högre. Med andra ord är det bättre att få citat från en viktig tidskrift än från en oviktig.

På webben

Detta fenomen förekommer också på Internet . Att räkna antalet länkar till en sida kan ge oss en allmän uppskattning av dess framträdande plats på webben, men en sida med mycket få inkommande länkar kan också vara framträdande om två av dessa länkar kommer från hemsidorna på webbplatser som Yahoo! , Google eller MSN . Eftersom dessa webbplatser är mycket viktiga men också är sökmotorer kan en sida rankas mycket högre än dess faktiska relevans.

Algoritm

Image
Expandera rotuppsättningen till en basuppsättning

I HITS-algoritmen är det första steget att hämta de mest relevanta sidorna till sökfrågan. Denna uppsättning kallas rotuppsättningen och kan erhållas genom att ta de översta sidorna som returneras av en textbaserad sökalgoritm. En basuppsättning genereras genom att förstärka rotuppsättningen med alla webbsidor som är länkade från den och några av de sidor som länkar till den. Webbsidorna i basuppsättningen och alla hyperlänkar mellan dessa sidor bildar en fokuserad subgraf. HITS-beräkningen utförs endast på denna fokuserade undergraf . Enligt Kleinberg är anledningen till att bygga en basuppsättning att se till att de flesta (eller många) av de starkaste myndigheterna ingår.

Behörighets- och navvärden definieras i termer av varandra i en ömsesidig rekursion . Ett auktoritetsvärde beräknas som summan av de skalade navvärdena som pekar på den sidan. Ett navvärde är summan av de skalade auktoritetsvärdena för de sidor det pekar på. Vissa implementeringar tar också hänsyn till relevansen av de länkade sidorna.

Algoritmen utför en serie iterationer, som var och en består av två grundläggande steg:

  • Behörighetsuppdatering : Uppdatera varje nods auktoritetspoäng så att den är lika med summan av navpoängen för varje nod som pekar på den. Det vill säga en nod ges en hög auktoritetspoäng genom att länkas från sidor som känns igen som nav för information.
  • Hubuppdatering : Uppdatera varje nods navpoäng så att den är lika med summan av behörighetspoängen för varje nod som den pekar på. Det vill säga en nod ges en hög navpoäng genom att länka till noder som anses vara myndigheter i ämnet.

Hubpoängen och myndighetspoängen för en nod beräknas med följande algoritm:

  • Börja med att varje nod har en navpoäng och auktoritetspoäng på 1.
  • Kör auktoritetsuppdateringsregeln
  • Kör navuppdateringsregeln
  • Normalisera värdena genom att dela varje Hub-poäng med kvadratroten av summan av kvadraterna för alla Hub-poäng och dela varje myndighetspoäng med kvadratrot av summan av kvadraten för alla myndighetspoäng.
  • Upprepa från det andra steget efter behov.

HITS, som Page och Brin är Pagerank är en iterativ algoritm baserad på kopplingen av dokument på webben . Det har dock några stora skillnader:

  • Det är frågeberoende, det vill säga (Hubs and Authority) poäng som härrör från länkanalysen påverkas av söktermerna.
  • Som en följd körs den vid frågetid, inte vid indexeringstid, med tillhörande träff på prestanda som åtföljer bearbetning av frågetid.
  • Det används inte vanligt av sökmotorer. (Även om en liknande algoritm sägs användas av Teoma , som förvärvades av Ask Jeeves / Ask.com .)
  • Den beräknar två poäng per dokument, nav och myndighet, i motsats till en enda poäng;
  • Det behandlas på en liten delmängd av "relevanta" dokument (en "fokuserad underbild" eller basuppsättning), inte alla dokument som var fallet med PageRank.

I detalj

För att börja rankningen låter vi och för varje sida . Vi överväger två typer av uppdateringar: Authority Update Rule och Hub Update Rule. För att beräkna nav- / myndighetspoängen för varje nod tillämpas upprepade iterationer av myndighetsuppdateringsregeln och navuppdateringsregeln. En k-stegsapplikation av Hub-Authority-algoritmen innebär att man ansöker om k gånger först Authority Update Rule och sedan Hub Update Rule.

Regel om myndighetsuppdatering

För varje uppdaterar vi till där är alla sidor som länkar till sidan . Det vill säga att en sidas auktoritetspoäng är summan av alla navpoäng på sidor som pekar på den.

Hubuppdateringsregel

För varje uppdaterar vi till där är alla sidor vilken sida länkar till. Det vill säga att en sidas navpoäng är summan av alla behörighetspoäng på sidor som den pekar på.

Normalisering

De slutliga hub-myndighetspoängen för noder bestäms efter oändliga upprepningar av algoritmen. Eftersom tillämpningen av Hub Update-regeln och myndighetsuppdateringsregeln direkt och iterat leder till divergerande värden är det nödvändigt att normalisera matrisen efter varje iteration. Således kommer värdena som erhålls från denna process så småningom konvergera.

Pseudokod

G := set of pages
for each page p in G do
    p.auth = 1 // p.auth is the authority score of the page p
    p.hub = 1 // p.hub is the hub score of the page p
for step from 1 to k do // run the algorithm for k steps
    norm = 0
    for each page p in G do  // update all authority values first
        p.auth = 0
        for each page q in p.incomingNeighbors do // p.incomingNeighbors is the set of pages that link to p
            p.auth += q.hub
        norm += square(p.auth) // calculate the sum of the squared auth values to normalise
    norm = sqrt(norm)
    for each page p in G do  // update the auth scores 
        p.auth = p.auth / norm  // normalise the auth values
    norm = 0
    for each page p in G do  // then update all hub values
        p.hub = 0
        for each page r in p.outgoingNeighbors do // p.outgoingNeighbors is the set of pages that p links to
            p.hub += r.auth
        norm += square(p.hub) // calculate the sum of the squared hub values to normalise
    norm = sqrt(norm)
    for each page p in G do  // then update all hub values
        p.hub = p.hub / norm   // normalise the hub values

Nav- och auktoritetsvärdena konvergerar i pseudokoden ovan.

Koden nedan konvergerar inte, eftersom det är nödvändigt att begränsa antalet steg som algoritmen kör för. Ett sätt att komma runt detta skulle dock vara att normalisera nav- och auktoritetsvärdena efter varje "steg" genom att dela varje auktoritetsvärde med kvadratroten av summan av kvadraterna av alla auktoritetsvärden och dela varje navvärde med kvadratrot av summan av kvadraterna för alla navvärden. Detta är vad pseudokoden ovan gör.

Icke-konvergerande pseudokod

G := set of pages
for each page p in G do
    p.auth = 1 // p.auth is the authority score of the page p
    p.hub = 1 // p.hub is the hub score of the page p

function HubsAndAuthorities(G)
    for step from 1 to k do // run the algorithm for k steps
        for each page p in G do  // update all authority values first
            p.auth = 0
            for each page q in p.incomingNeighbors do // p.incomingNeighbors is the set of pages that link to p
                p.auth += q.hub
        for each page p in G do  // then update all hub values
            p.hub = 0
            for each page r in p.outgoingNeighbors do // p.outgoingNeighbors is the set of pages that p links to
                p.hub += r.auth

Se även

Referenser

externa länkar