超链接诱导主题搜索
(HITS)算法是一种由Jon Kleinberg开发的对网页进行评分的链接分析算法。该算法用于Web链接结构, 以发现和排名与特定搜索相关的网页。
HITS使用中心和权限来定义网页之间的递归关系。在了解HITS算法之前, 我们首先需要了解中心和授权机构。
- 给定对搜索引擎的查询, 将高度相关的网页集称为根源。他们有潜力当局.
- 不太相关但指向根中页面的页面称为集线器。因此, "授权机构"是许多集线器链接到的页面, 而"集线器"是链接到许多权限的页面。
-> 让迭代次数为k。 -> 为每个节点分配一个Hub得分= 1, 一个Authority得分=1。-> 重复k次:Hub更新:每个节点的Hub得分=(它指向的每个节点的Authority得分)。权限更新:每个节点的权限得分=(指向每个节点的节点得分)。通过将每个Hub得分除以所有Hub得分的平方和的平方根, 再将每个Authority得分除以所有Authority得分的平方和的平方根, 对得分进行归一化。 (可选的)现在, 让我们看看如何使用Networxx模块实现此算法。
让我们考虑下图:
文章图片
在运行HITS算法时
文章图片
(没有规范化),
Initially, Hub Scores:Authority Scores:
A ->
1A ->
1
B ->
1B ->
1
C ->
1C ->
1
D ->
1D ->
1
E ->
1E ->
1
F ->
1F ->
1
G ->
1G ->
1
H ->
1H ->
1After 1st iteration, Hub Scores:Authority Scores:
A ->
1A ->
3
B ->
2B ->
2
C ->
1C ->
4
D ->
2D ->
2
E ->
4E ->
1
F ->
1F ->
1
G ->
2G ->
0
H ->
1H ->
1After 2nd iteration, Hub Scores:Authority Scores:
A ->
2A ->
4
B ->
5B ->
6
C ->
3C ->
7
D ->
6D ->
5
E ->
9E ->
2
F ->
1F ->
4
G ->
7G ->
0
H ->
3H ->
1After 3rd iteration, Hub Scores:Authority Scores:
A ->
5A ->
13
B ->
9B ->
15
C ->
4C ->
27
D ->
13D ->
11
E ->
22E ->
5
F ->
1F ->
9
G ->
11G ->
0
H ->
4H ->
3
Python软件包Networkx具有用于运行HITS算法的内置函数。参考上面的图表可以看到。
# importing modules
import networkx as nx
import matplotlib.pyplot as pltG = nx.DiGarph()G.add_edges_from([( 'A' , 'D' ), ( 'B' , 'C' ), ( 'B' , 'E' ), ( 'C' , 'A' ), ( 'D' , 'C' ), ( 'E' , 'D' ), ( 'E' , 'B' ), ( 'E' , 'F' ), ( 'E' , 'C' ), ( 'F' , 'C' ), ( 'F' , 'H' ), ( 'G' , 'A' ), ( 'G' , 'C' ), ( 'H' , 'A' )])plt.figure(figsize = ( 10 , 10 ))
nx.draw_networkx(G, with_labels = True )hubs, authorities = nx.hits(G, max_iter = 50 , normalized = True )
# The in-built hits function returns two dictionaries keyed by nodes
# containing hub scores and authority scores respectively.print ( "Hub Scores: " , hubs)
print ( "Authority Scores: " , authorities)
输出如下:
文章图片
Hub Scores:{'A': 0.04642540386472174, 'D': 0.133660375232863, 'B': 0.15763599440595596, 'C': 0.037389132480584515, 'E': 0.2588144594158868, 'F': 0.15763599440595596, 'H': 0.037389132480584515, 'G': 0.17104950771344754}Authority Scores:{'A': 0.10864044085687284, 'D': 0.13489685393050574, 'B': 0.11437974045401585, 'C': 0.3883728005172019, 'E': 0.06966521189369385, 'F': 0.11437974045401585, 'H': 0.06966521189369385, 'G': 0.0}
首先, 你的面试准备可通过以下方式增强你的数据结构概念:Python DS课程。
推荐阅读
- Python使用.kv文件的Kivy中的StackLayout
- JavaScript ScrollLoopMenu插件用法示例
- 如何处理Win8.1鼠标间歇性失灵问题?
- Win8应用商店中没有检查更新选项如何应对?
- 如何调整Win8系统输入法切换的顺序
- Win8.1系统关闭硬件加速的办法
- 如何取消Windows8系统开机扫描驱动器?
- 如何给Win8.1系统添加一个新的账户?
- Win8开机黑屏只有光标怎样处理?