C++ 中的 HITS 算法

2025年5月12日 | 阅读12分钟

引言

HITS 是一种主要用于网页搜索的链接分析算法;它源自 Jon Kleinberg 的工作,该算法的名称是 **Hyperlink-Induced Topic Search**(超链接诱导主题搜索)。与考虑整体流行度的 PageRank 不同,HITS 识别两种类型的页面:枢纽(hub)和权威(authority)。任何给定的权威页面都包含相关信息,正如其引用所示;而任何给定的枢纽页面则包含指向有价值的权威页面的链接。该算法为网站上的每个页面分配两个排名分数:枢纽分数和权威分数,然后根据网页图中的链接连接重新计算这两个分数。许多枢纽指向权威页面,许多权威页面又指向枢纽页面,建立了相互的关联。HITS 算法在搜索密集链接环境(如文章引用或面向主题的目录)中的相关内容组方面最有价值,但它也可能受到链接垃圾信息或图中循环的影响。

HITS 算法背后的数学概念

HITS 算法依赖于涉及图论和线性代数的数学框架。它将网络建模为一个有向图,其中网页是节点,它们之间的超链接是有向边。在此上下文中,每个页面都被分配了两个分数:权威分数和枢纽分数。这些分数通过迭代计算直到收敛。

1. 邻接矩阵

图结构 A 由一个邻接矩阵 A 表示,其中如果页面 i 链接到页面 j,则 Aij=1,否则为 0。行和列 A 的内容用于根据传入链接和传出链接分别计算枢纽和权威分数;

2. 权威和枢纽分数

令 x 和 y 分别表示每个页面的权威和枢纽分数。

  • 页面 i 的权威分数 xi 由链接到它的所有页面的总枢纽分数决定,如下所示:xi=∑jAjiyj
  • 页面 i 的枢纽分数 yi 也由页面 i 链接到的页面的总权威分数决定:yi=∑jAijxj

3. 迭代计算

在分配初始分数后,通过以下矩阵运算更新矩阵 x 和 y。

  • 更新权威向量:x=ATy
  • 更新枢纽向量:y=Ax

4. 归一化和收敛

为防止分数发散,x 和 y 在每次完整更新后都会被重新校准。此过程一直进行,直到分数达到平衡,这表明了枢纽和权威的排名。

在这种情况下,迭代方法呼应了相互促进的原则:高价值页面提升低价值页面,反之亦然,从而为页面提供了一个重要的排序系统。

HITS 算法的关键组成部分

HITS(Hyperlink-Induced Topic Search)算法包含几个关键组成部分,它们定义了其结构和功能。

1. 枢纽和权威分数

根据 HITS 网页排名方法,每个页面都获得两个分数:枢纽分数和权威分数。枢纽(hub)被定义(至少是非正式地)为一个链接到许多权威页面的页面,而权威(authority)是一个被许多枢纽页面链接到的页面。这种双重评分系统有助于识别信息(权威)和推荐(枢纽)方面最相关的页面。

2. 图表示

采用网站的有向图表示;节点是网页,超链接充当边。链接表示一个页面对另一个页面的推荐,这对于建立枢纽和权威关系至关重要。

3. 邻接矩阵

HITS 分析使用一个邻接矩阵进行,该矩阵显示了哪些网站链接到哪些网站。如果页面 i 链接到页面 j,则邻接矩阵中的条目 Aij 等于 1;否则等于 0。该矩阵对于在每个阶段更新权威分数和枢纽分数的过程中都很重要。

4. 相互促进关系

该算法依赖于枢纽和权威的相互促进关系。如果一个高分枢纽链接到一个页面,该页面的权威分数就会增加;如果一个页面链接到一个高分权威,该页面的枢纽分数就会增加。这些分数的相互关联性需要对其进行连续和迭代的计算。

5. 迭代计算

HITS 利用一个迭代机制,根据链接结构更新枢纽和权威分数。计算从一组初始分数(表示为正常,几乎所有都等于一)开始,其中对于每个页面的链接,分数会在循环中重复,直到它们稳定下来。

6. 归一化和收敛

序列中的每个最后一个分数都通过将每个分数除以该类型所有值的总和来进行归一化,这样主要分数就不会在多次迭代中减少,从而防止分数发散。均值偏移过程会进行,直到达到权威和枢纽分数不再发生显著变化的状态,因为它们已经相互关联以辨别值。

7. 输出

算法的最终输出是页面及其各自的权威和枢纽分数,以及一个按重要性(作为权威)和相关性(作为枢纽)排序的列表。此输出有助于绘制内容集群并确定站点中最重要的页面。通过将这些组件结合起来,HITS 能够检查链接结构并有效地对页面进行相关性和权威性排名。

HITS 算法的步骤

HITS,即超链接诱导主题搜索,是一种通过其链接来推导网页权威性和枢纽性值的算法。以下是其执行过程:

1. 初始化分数

为每个页面分配初始声望和枢纽指数,通常默认为 1。然后,在后续迭代中将对此指数进行修改。

2. 循环更新

权威更新:随着每个页面权威声誉的提升,通过对所有链接到它的页面 N 的枢纽分数 H 进行求和来修改其权威分数 A。数学表达为:xi = ∑j→i hj,其中 hj 是页面 j 的枢纽分数。

枢纽更新:随着页面 N 的平均出链页面数的增加,通过对页面 i 链接到的所有权威页面 j 的权威分数 xj 求和来修改其枢纽分数 H。数学表达为:yi = ∑j→i xj,其中 xj 是页面 i 链接到的权威页面 j 的权威分数。

3. 归一化

可能需要调整大量的权威或枢纽值以避免发散。此函数通常通过将某个值除以该类别的总值来执行。

4. 检查收敛性

迭代计算和归一化过程会重复进行,直到权威和枢纽分数不再发生变化。在这种意义上,通常在连续两次迭代之间某个分数的变化小于某个阈值时观察到收敛。

5. 解释结果

一旦算法收敛,它将输出页面及其最终的权威和枢纽分数。权威分数高的页面被视为该主题的权威,而枢纽分数高的页面是权威页面的良好资源。

6. 排名和分析

根据权威和枢纽分数对页面进行排序。具有高权威和高枢纽分数的页面分别被视为搜索引擎结果和信息提供中的重要且可靠的页面。

这种枢纽和权威分数之间的相互促进的迭代过程使 HITS 算法能够找到不仅在全球范围内排名很高的页面,还能找到指向这些页面(在网页图中)的良好枢纽节点。

在 C++ 中实现 HITS 算法

这是一个在 C++ 中实现 HITS 算法的简单示例。它使用网页图的邻接矩阵表示,其中每个页面链接到其他页面,HITS 算法通过迭代更新来计算权威分数和枢纽分数。

输出

 
Final Authority Scores:
Page 0: 2.08245e-10
Page 1: 0.327985
Page 2: 0.736976
Page 3: 0.591009
Final Hub Scores:
Page 0: 0.591009
Page 1: 0.736976
Page 2: 0.327985
Page 3: 2.08245e-10   

说明

  1. 遗传编程的表示方法
    网页图表示为邻接矩阵 (adjMatrix),其中 adjMatrix[i][j] = 1 表示页面 i 链接到页面 j,否则为 0。
  2. 初始化
    每个页面的权威和枢纽分数初始化为 1.0。
  3. 迭代更新
    对于每次迭代,将每个页面的新权威分数计算为所有链接到它的页面的枢纽分数之和。将每个页面的新枢纽分数计算为它链接到的所有页面的权威分数之和。然后对分数进行归一化,使其落在同一尺度上。
  4. 收敛性检查
    如果每次迭代之间的权威和枢纽分数变化低于某个阈值,算法将终止,以确保分数确实已收敛。
  5. 输出
    打印每个页面的最终权威和枢纽分数,指示该页面总体上最重要的权威和枢纽。

HITS 算法的应用

HITS(Hyperlink-Induced Topic Search)算法有多种应用,主要是在链接结构用于识别网络内权威和枢纽资源的领域。以下是一些主要应用:

  1. 网页搜索和信息检索:在搜索引擎中,HITS 用于根据网页链接结构对网页进行排名。枢纽页面是链接到权威页面的目录或聚合器,这使得搜索结果更相关;而权威页面被认为是特定主题的值得信赖的来源。HITS 算法用于识别社交网络中的影响力节点。通过分析网页的链接结构对网页进行排名。权威页面被认为是特定主题的值得信赖的来源,而枢纽页面是链接到这些权威页面的目录或聚合器,从而提高了搜索结果的相关性。
  2. 社交网络分析:在社交网络中,HITS 算法有助于识别有影响力的人物。枢纽是连接到这些有影响力实体的用户或帐户,而权威可以是经常被引用的关键个人或组织。它有助于理解网络中的信息流和影响力。
  3. 学术引用分析:HITS 可以在学术引用网络中区分重要的研究论文(权威)和链接到有影响力研究的文献综述或调查论文(枢纽)。
  4. 产品推荐系统和 电子商务HITS 算法可用于通过识别高活动枢纽用户或经常链接或引用权威产品的精选列表来推荐产品。对于特定主题,枢纽页面是链接到这些权威页面的目录或聚合器,从而提高了搜索结果的相关性。
  5. 生物学和医学网络:在生物学中,HITS 可用于分析基因和蛋白质相互作用网络,识别与许多其他蛋白质(枢纽)相互作用的关键蛋白质(权威)。这有助于精确定位对理解疾病至关重要的靶蛋白或基因。
  6. 文档和内容推荐系统:内容平台,如新闻网站或流媒体服务,可以使用 HITS 通过查找热门或高质量内容(权威)以及聚合这些内容的精选列表或播放列表(枢纽)来推荐文档或媒体。
  7. 金融网络中的欺诈检测:HITS 可用于金融网络,以找出在可疑网络结构中哪些账户是权威或枢纽。权威页面被认为是特定主题的值得信赖的来源,而枢纽页面是链接到这些权威页面的目录或聚合器,从而提高了搜索结果的相关性。
  8. 主题搜索和内容聚类:按主题进行特定搜索和相关文章的分布。HITS 可扩展用于主题敏感搜索应用,以开发一组感兴趣主题的对象集群,从而创建相关内容集群。在主题领域使用的 HITS 可以识别相关页面组,并且在数字图书馆和教育资源中非常有效。

HITS 算法的局限性

这些应用利用了 HITS 的相互促进原则,该原则允许人们轻松地构建大型网络中的重要节点或内容。

  1. 查询依赖性
    HITS 设计用于处理与特定搜索查询相关的网页子集,而不是整个网络。这限制了其可伸缩性,因为它必须为每个查询单独运行,这在计算上非常密集。
  2. 易受链接垃圾信息影响
    由于 HITS 依赖链接结构来确定权威和枢纽分数,因此它极易受到链接操纵的影响。例如,包含不重要和不相关信息的垃圾网站页面可以建立页面之间的链接,使得区分垃圾权威页面变得困难。实际上,它可能会偏离设定的搜索主题,因为 HITS 只使用超链接信息来创建相关内容集群。通过分析主题域内的页面链接,HITS 有助于查找相关页面集群,这在数字图书馆或教育平台中很有用。
  3. 漂移倾向
    在实践中,HITS 可能由于依赖链接分析而偏离原始查询主题。如果无关紧要或高度链接的页面包含在子集中,可能会涌入大量结果,并且由于算法倾斜,最终返回的结果非常不理想。
  4. 难以实现类似 PageRank 的全局权威
    与可以计算网页全局排名的 PageRank 不同,HITS 侧重于特定查询的子集。这使得它不太适合提供完整的排名解决方案,因为它只根据有限的上下文对枢纽和权威进行排名,从而限制了其通用应用的范围。
  5. 对动态或实时更新无效
    HITS 的分数计算是迭代的,因此在动态等环境中成本很高。实时分数重新计算非常困难,并且不适合快速变化的内容。
  6. 偏爱广受欢迎的节点和权威
    一方面,HITS 似乎选择了链接到许多页面的高人气枢纽页面和链接良好的权威页面。对于链接结构频繁变化的动态网络环境而言,它在计算上成本高且效率低下。实时重新计算分数具有挑战性,使其不太适合快速变化的内容。
  7. 缺乏对内容质量的考虑
    HITS 也不考虑链接的 WWW 页面中包含的文本信息。要计算分数,对于链接结构频繁变化的动态网络环境而言,它在计算上成本高且效率低下。实时重新计算分数具有挑战性,使其不太适合快速变化的内容。

结论

总之,同样重要的 **Hyperlink-Induced Topic Search (HITS)** 算法可以在指定的网络中建立枢纽页面和权威页面的地位。由于 HITS 从链接结构计算权威和枢纽分数,因此它在特定应用中效果很好,例如学术引用分析、社交网络影响力映射和基于主题的搜索,其中它将相关文档分组在一起。

然而,HITS 存在明显的缺点:该算法对链接垃圾信息敏感,并且依赖于某些面向查询的子集;此外,这种变体在密集链接网络的收敛性方面不稳定。它也无法检查内容质量,并且在开放环境中很容易受到滥用排名的影响。尽管如此,HITS 在明确定义的领域中对于信息检索和内容建议仍然有用。对于需要全局排名的应用,可以使用 PageRank 等其他算法来扩展或替换 HITS,以在大型、不断演变的环境中提供规模化、可能更相关的性能。