HITS算法--从原理到实现

HITS(Hyperlink-Induced Topic Search)算法由Jon Kleinberg于1999年提出,用于评估网页的hub(中心)和authority(权威)属性。算法基于假设:高质量authority页面被hub页面指向,高质量hub页面指向authority页面。HITS通过迭代计算每个页面的hub值和authority值,收敛后返回高authority值的页面作为搜索结果。算法存在计算效率低、主题漂移、作弊网页和稳定性差等问题。
摘要由CSDN通过智能技术生成

1. 算法来源

1999年,Jon Kleinberg 提出了HITS算法。作为几乎是与PageRank同一时期被提出的算法,HITS同样以更精确的搜索为目的,并到今天仍然是一个优秀的算法。

HITS算法的全称是Hyperlink-Induced Topic Search。在HITS算法中,每个页面被赋予两个属性:hub属性和authority属性。同时,网页被分为两种:hub页面和authority页面。hub,中心的意思,所以hub页面指那些包含了很多指向authority页面的链接的网页,比如国内的一些门户网站;authority页面则指那些包含有实质性内容的网页。HITS算法的目的是:当用户查询时,返回给用户高质量的authority页面。


2. 算法原理

很多算法都是建立在一些假设之上的,HITS算法也不例外。HITS算法基于下面两个假设1

  • 一个高质量的authority页面会被很多高质量的hub页面所指向。
  • 一个高质量的hub页面会指向很多高质量的authority页面。

什么叫“高质量”,这由每个页面的hub值和authority值确定。其确定方法为:

  • 页面hub值等于所有它指向的页面的authority值之和。
  • 页面authority值等于所有指向它的页面的hub值之和。

为了让大家快速理解HITS算法,先举一个简单的例子2

hits1

图中共有3个网页,它们构成了一个有向图。我们设每个网页的初始hub值和authority值都为1。记 h(p) 为页面 p 的hub值, a(p) 为页面 p 的authority值。则有 h(1)=h(2)=h(3)=1 a(1)=a(2)=a(3)=1

HITS算法的计算过程也是一个迭代的过程。在第一次迭代中,有:

a(1)=0,a(2)=0,a(3)=h(1)+h(2)=212h(1)=a(3)=2,h(2)=a(3)=2,h(3)=03

这里就已经可以看出网页3是一个相对好的authority页面,而网页1和网页2是相对好的hub页面。其实到这里迭代也可以结束了,因为再迭代下去无非是 a(3) h(1) h(2) 的值不断增大,而哪个是hub页面,哪个是authority页面并不会改变。

上面的简单例子只是为了帮助理解,省略掉了很多步骤和细节。下面将详细地介绍HITS算法3:。

与PageRank算法不同,HITS算法是在用户搜索后运行的,所以HITS算法的处理对象集合肯定得小很多。

首先,我们需要确定这个集合。整个互联网中的网页之间的关系可以抽象为一个有向图 G=(V,E) ,当有一个搜索请求产生时(不妨设关键字为 σ ),我们可以取所有包含关键字 σ 的网页组成的集合 Qσ 为初始集合,并在这个集合上运行我们的HITS算法。然而,这个集合却有着明显的缺陷:这个集合可能非常之大,大到包含了数百万个网页,而这显然不是理想的集合大小。于是,我们进而想找到一个更小的集合 Sσ ,满足以下条件:

  1. Sσ 确实足够小。
  2. Sσ 包含很多与查询相关的页面。
  3. Sσ 包含很多高质量的authority页面。

如何找到这个 Sσ 集合?我们假设用户输入关键字搜索,搜索引擎使用一个基于文本的引擎进行搜索。然后我们取排名(按照相关度排名)最靠前的t(t一般取200左右)个网页作为初始集合,记为根集合 Rσ 。这个集合满足我们上面提到的前两个条件,但是还远远不能满足第三个条件。

于是,我们需要扩展 Rσ 。一般认为,一个与关键字相关的高质量的网页即使不在 Rσ 中,那也很可能在 Rσ 中有某些网页指向它。基于此,我们扩展 Rσ 的过程如下(摘自Jon Kleinberg 的论文):

Subgraph( σ , ψ , t, d)
   σ : a query string.
   ψ : a text-based search engine.
  t, d: natural numbers.

  Let Rσ denote the top t results of ψ on σ .
  Set Sσ := Rσ

  For each page p Rσ
    Let Γ+(p) denote the set of all pages p points to.
    Let Γ(p) denote the set of all pages pointing to p.
    Add all pages in Γ+(p) to Sσ .
    If |Γ(p)|d , then
      Add all pages in Γ(p) to Sσ .
    Else
      Add an arbitrary set of d pages from Γ(p) to Sσ .
  End
  Return S

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值