链接分析算法之:HITS算法

 HITS(HITS(Hyperlink – Induced Topic Search) ) 算法是由康奈尔大学( Cornell University ) 的Jon Kleinberg 博士于1997 年首先提出的,为IBM 公司阿尔马登研究中心( IBM Almaden Research Center) 的名为“CLEVER”的研究项目中的一部分。

    HITS算法是链接分析中非常基础且重要的算法,目前已被Teoma搜索引擎(www.teoma.com)作为链接分析算法在实际中使用。

1. Hub页面与Authority页面

      Hub页面(枢纽页面)和Authority页面(权威页面)是HITS算法最基本的两个定义

    所谓“Authority”页面,是指与某个领域或者某个话题相关的高质量网页,比如搜索引擎领域,Google和百度首页即该领域的高质量网页,比如视频领域,优酷和土豆首页即该领域的高质量网页。

    所谓“Hub”页面,指的是包含了很多指向高质量“Authority”页面链接的网页,比如hao123首页可以认为是一个典型的高质量“Hub”网页。

    图1给出了一个“Hub”页面实例,这个网页是斯坦福大学计算语言学研究组维护的页面,这个网页收集了与统计自然语言处理相关的高质量资源,包括一些著名的开源软件包及语料库等,并通过链接的方式指向这些资源页面。这个页面可以认为是“自然语言处理”这个领域的“Hub”页面,相应的,被这个页面指向的资源页面,大部分是高质量的“Authority”页面。

          1.jpg

                 图1 自然语言处理领域的Hub页面

     HITS算法的目的即是通过一定的技术手段,在海量网页中找到与用户查询主题相关的高质量“Authority”页面和“Hub”页面,尤其是“Authority”页面,因为这些页面代表了能够满足用户查询的高质量内容,搜索引擎以此作为搜索结果返回给用户。

2. 算法基本思想:相互增强关系

     基本假设1:一个好的“Authority”页面会被很多好的“Hub”页面指向;

     基本假设2:一个好的“Hub”页面会指向很多好的“Authority”页面;

3. HITS算法

具体算法:可利用上面提到的两个基本假设,以及相互增强关系等原则进行多轮迭代计算,每轮迭代计算更新每个页面的两个权值,直到权值稳定不再发生明显的变化为止。

步骤:

3.1 根集合

      1)将查询q提交给基于关键字查询的检索系统,从返回结果页面的集合总取前n个网页(如n=200),作为根集合(root set),记为root,则root满足:

  1).root中的网页数量较少

  2).root中的网页是与查询q相关的网页

  3).root中的网页包含较多的权威(Authority)网页

       这个集合是个有向图结构:链接分析算法之:HITS算法

3.2 扩展集合base

        在根集root的基础上,HITS算法对网页集合进行扩充(参考图2)集合base,扩充原则是:凡是与根集内网页有直接链接指向关系的网页都被扩充到集合base,无论是有链接指向根集内页面也好,或者是根集页面有链接指向的页面也好,都被扩充进入扩展网页集合base。HITS算法在这个扩充网页集合内寻找好的“Hub”页面与好的“Authority”页面。

                               2.jpg                               

 

                                                       图2 根集与扩展集

 

 3.3 计算扩展集base中所有页面的Hub值(枢纽度)和Authority值(权威度)

        1) 链接分析算法之:HITS算法链接分析算法之:HITS算法 分别表示网页结点 i 的Authority值(权威度)和Hub值(中心度)。

       2) 对于“扩展集base”来说,我们并不知道哪些页面是好的“Hub”或者好的“Authority”页面,每个网页都有潜在的可能,所以对于每个页面都设立两个权值,分别来记载这个页面是好的Hub或者Authority页面的可能性。在初始情况下,在没有更多可利用信息前,每个页面的这两个权值都是相同的,可以都设置为1,即:

       链接分析算法之:HITS算法

         3)每次迭代计算Hub权值和Authority权值:

           网页 a (i)在此轮迭代中的Authority权值即为所有指向网页 a (i)页面的Hub权值之和:

            a (i) = Σ h (i) ;

           网页 a (i)的Hub分值即为所指向的页面的Authority权值之和:

           h (i) = Σ a (i) 。

           对a (i)、h (i)进行规范化处理:

           将所有网页的中心度都除以最高中心度以将其标准化:

           a (i) = a (i)/|a(i)| ;

           将所有网页的权威度都除以最高权威度以将其标准化:

           h (i) = h (i)/ |h(i)| :

          
         5)如此不断的重复第4):上一轮迭代计算中的权值和本轮迭代之后权值的差异,如果发现总体来说权值没有明显变化,说明系统已进入稳定状态,则可以结束计算,即a ( u),h(v)收敛 。

       算法描述:

3.jpg

       如图3所示,给出了迭代计算过程中,某个页面的Hub权值和Authority权值的更新方式。假设以A(i)代表网页i的Authority权值,以H(i)代表网页i的Hub权值。在图6-14的例子中,“扩充网页集合”有3个网页有链接指向页面1,同时页面1有3个链接指向其它页面。那么,网页1在此轮迭代中的Authority权值即为所有指向网页1页面的Hub权值之和;类似的,网页1的Hub分值即为所指向的页面的Authority权值之和。

                                       4.gif           

                                                                图3 Hub与Authority权值计算

 

 3.4  输出排序结果

      将页面根据Authority权值得分由高到低排序,取权值最高的若干页面作为响应用户查询的搜索结果输出。

4. HITS算法存在的问题

        HITS算法整体而言是个效果很好的算法,目前不仅应用在搜索引擎领域,而且被“自然语言处理”以及“社交分析”等很多其它计算机领域借鉴使用,并取得了很好的应用效果。尽管如此,最初版本的HITS算法仍然存在一些问题,而后续很多基于HITS算法的链接分析方法,也是立足于改进HITS算法存在的这些问题而提出的。

    归纳起来,HITS算法主要在以下几个方面存在不足:

    1.计算效率较低

        因为HITS算法是与查询相关的算法,所以必须在接收到用户查询后实时进行计算,而HITS算法本身需要进行很多轮迭代计算才能获得最终结果,这导致其计算效率较低,这是实际应用时必须慎重考虑的问题。

   2.主题漂移问题

        如果在扩展网页集合里包含部分与查询主题无关的页面,而且这些页面之间有较多的相互链接指向,那么使用HITS算法很可能会给予这些无关网页很高的排名,导致搜索结果发生主题漂移,这种现象被称为“紧密链接社区现象”(Tightly-Knit CommunityEffect)。

   3.易被作弊者操纵结果

        HITS从机制上很容易被作弊者操纵,比如作弊者可以建立一个网页,页面内容增加很多指向高质量网页或者著名网站的网址,这就是一个很好的Hub页面,之后作弊者再将这个网页链接指向作弊网页,于是可以提升作弊网页的Authority得分。

   4.结构不稳定

        所谓结构不稳定,就是说在原有的“扩充网页集合”内,如果添加删除个别网页或者改变少数链接关系,则HITS算法的排名结果就会有非常大的改变。

5. HITS算法与PageRank算法比较

     HITS算法和PageRank算法可以说是搜索引擎链接分析的两个最基础且最重要的算法。从以上对两个算法的介绍可以看出,两者无论是在基本概念模型还是计算思路以及技术实现细节都有很大的不同,下面对两者之间的差异进行逐一说明。      

    1.HITS算法是与用户输入的查询请求密切相关的,而PageRank与查询请求无关。所以,HITS算法可以单独作为相似性计算评价标准,而PageRank必须结合内容相似性计算才可以用来对网页相关性进行评价;

    2.HITS算法因为与用户查询密切相关,所以必须在接收到用户查询后实时进行计算,计算效率较低;而PageRank则可以在爬虫抓取完成后离线计算,在线直接使用计算结果,计算效率较高;

    3.HITS算法的计算对象数量较少,只需计算扩展集合内网页之间的链接关系;而PageRank是全局性算法,对所有互联网页面节点进行处理;

    4.从两者的计算效率和处理对象集合大小来比较,PageRank更适合部署在服务器端,而HITS算法更适合部署在客户端;

    5.HITS算法存在主题泛化问题,所以更适合处理具体化的用户查询;而PageRank在处理宽泛的用户查询时更有优势;

    6.HITS算法在计算时,对于每个页面需要计算两个分值,而PageRank只需计算一个分值即可;在搜索引擎领域,更重视HITS算法计算出的Authority权值,但是在很多应用HITS算法的其它领域,Hub分值也有很重要的作用;

    7.从链接反作弊的角度来说,PageRank从机制上优于HITS算法,而HITS算法更易遭受链接作弊的影响。

    8.HITS算法结构不稳定,当对“扩充网页集合”内链接关系作出很小改变,则对最终排名有很大影响;而PageRank相对HITS而言表现稳定,其根本原因在于PageRank计算时的“远程跳转”。

转自:http://blog.csdn.net/hguisu/article/details/8013489

原创文章,作者:s19930811,如若转载,请注明出处:http://www.178linux.com/2722

(0)
s19930811s19930811
上一篇 2015-07-19
下一篇 2015-07-20

相关推荐

  • 如何在Java中避免equals方法的隐藏陷阱

    译者注 :你可能会觉得Java很简单,Object的equals实现也会非常简单,但是事实并不是你想象的这样,耐心的读完本文,你会发现你对Java了解的是如此的少。如果这篇文章是一份Java程序员的入职笔试,那么不知道有多少人会掉落到这样的陷阱中。原文转自http://www.artima.com/lejava/articles/equality.…

    开发运维 2015-04-03
  • DevOps如何重构IT战略

    翻译: 至尊宝 原文: http://www.citeworld.com/article/2897738/development/how-devops-can-redefine-your-it-strategy.html?page=2   DevOps究竟是昙花一现还是你一直在寻找的竞争优势?我们咨询了一些专家,对于这种趋势他们的想法是什…

    Python干货 2015-03-26
  • 编程命名中的7+1个提示

    前几天Neo写过《编程中的命名设计那点事》,这里也有另外一篇和程序命名的文章,可以从另一个角度看看。 1.- 变量应该是尽可能的望文知意。千万不要使用教材中的命名方式。 好的变量: daysDateRange, flightNumber, carColor. 坏的变量: days, dRange, temp, data, aux… 在我们…

    Linux干货 2015-04-03
  • 免费翻墙 [精]

    本人在hostus上买了一个国外的vps,花了一上午把Google给做好,可以访问g.abcdocker.com进行搜索,因为是使用nginx代理进行翻墙。网上的文章也很乱,很不好整理。 可以可以使用g.abcdocker.com上Google查阅资料。(无法观看视频) www.abcdocker.com

    2017-06-17
  • 开源跳板机Jumpserver v2.0.0 Beta版发布

    demo页面: http://demo.jumpserver.org admin admin 一. 更新Log — 登录脚本 — 1.1 使用paramiko原生ssh协议登录后端主机(原来版本使用pexpect模拟登录) 1.2 新增使用别名或备注登录 1.3 新增主机分组查看,使用更方便 1.4 多线…

    Linux干货 2015-04-20
  • Bash的&&,||逻辑运算

    Bash的&&,||逻辑运算 bash里的true和false并不是我们通常所认为的0和1。 true和false是shell的内置命令,返回逻辑值。 $?是一个特殊的变量,存放有上一个程序的结束状态。 在shell里面,把0作为程序是否成功结束的标志。 例如: $ true$ echo$?0$ false$ echo$?1 有时候,下一条命…

    Linux干货 2016-04-11