ハイパーリンク誘導トピック検索(HITS 、ハブとオーソリティとも呼ばれる)は、ジョン・クラインバーグによって開発された、Web ページを評価するリンク分析アルゴリズムです。ハブとオーソリティの背後にあるアイデアは、インターネットが最初に形成されたときの Web ページの作成に関する特定の洞察から生まれました。つまり、ハブと呼ばれる特定の Web ページは、保持する情報に関して実際には権威があるわけではないものの、ユーザーを他の権威あるページに直接導く広範な情報のカタログのコンパイルとして使用される大規模なディレクトリとして機能していました。言い換えれば、優れたハブは他の多くのページを指し示すページを表し、優れたオーソリティは多くの異なるハブによってリンクされているページを表します。[ 1 ]
そのため、この制度では各ページに2つのスコアを割り当てます。1つはページのコンテンツの価値を評価する「オーソリティ」、もう1つは他のページへのリンクの価値を評価する「ハブ値」です。
科学雑誌の重要性をランク付けするために、多くの方法が用いられてきました。その一つがガーフィールドのインパクトファクターです。ScienceやNatureのような雑誌は多数の引用を受けており、非常に高いインパクトファクターを持っています。したがって、引用数がほぼ同じである2つのあまり知られていない雑誌を比較する場合、そのうちの1つがScienceやNatureから多くの引用を受けている場合、その雑誌はより上位にランク付けされる必要があります。言い換えれば、重要でない雑誌から引用されるよりも、重要な雑誌から引用される方が良いということです。[ 2 ]
この現象はインターネットでも見られます。ページへのリンク数を数えることで、ウェブ上でのそのページの知名度を大まかに把握できますが、被リンク数が非常に少ないページでも、そのうち2つがYahoo!、Google、MSNなどのサイトのホームページからのリンクであれば、高い知名度を持つ可能性があります。これらのサイトは非常に重要度が高く、同時に検索エンジンでもあるため、ページの実際の関連性よりもはるかに高いランキングになることがあるのです。

HITSアルゴリズムでは、最初のステップとして、検索クエリに最も関連性の高いページを取得します。このセットはルートセットと呼ばれ、テキストベースの検索アルゴリズムによって返される上位ページを取得することで得られます。ベースセットは、ルートセットからリンクされているすべてのWebページと、ルートセットにリンクしている一部のページを追加することで生成されます。ベースセット内のWebページと、それらのページ間のすべてのハイパーリンクは、フォーカスされたサブグラフを形成します。HITS計算は、このフォーカスされたサブグラフに対してのみ実行されます。クラインバーグによれば、ベースセットを構築する理由は、最も強力な権威のほとんど(または多く)が含まれるようにするためです。
オーソリティ値とハブ値は、相互再帰によって定義されます。オーソリティ値は、そのページを指すスケーリングされたハブ値の合計として計算されます。ハブ値は、それが指すページのスケーリングされたオーソリティ値の合計です。実装によっては、リンクされたページの関連性も考慮されます。
このアルゴリズムは一連の反復処理を実行し、各反復処理は2つの基本的なステップから構成される。
ノードのハブスコアとオーソリティスコアは、以下のアルゴリズムで計算されます。
HITSは、PageとBrinのPageRankと同様に、ウェブ上の文書のリンクに基づいた反復アルゴリズムです。しかし、いくつかの大きな違いがあります。
ランキングを始めるにあたり、そして各ページについて我々は、権限更新ルールとハブ更新ルールの2種類の更新を検討します。各ノードのハブ/権限スコアを計算するために、権限更新ルールとハブ更新ルールを繰り返し適用します。ハブ権限アルゴリズムのkステップ適用では、まず権限更新ルールをk回適用し、次にハブ更新ルールを適用します。
各更新しますにどこは、ページへのリンクがあるすべてのページです。つまり、ページのオーソリティスコアは、そのページを指し示すすべてのページのハブスコアの合計です。
各更新しますにどこすべてのページはどのページですかリンク先。つまり、ページのハブスコアは、そのページが指し示すすべてのページのオーソリティスコアの合計です。
ノードの最終的なハブ権限スコアは、アルゴリズムを無限に繰り返し実行した後に決定されます。ハブ更新ルールと権限更新ルールを直接かつ反復的に適用すると値が発散するため、各反復後にマトリックスを正規化する必要があります。これにより、このプロセスで得られる値は最終的に収束します。
G := ページのセット 各ページpについて、p.auth = 1 // p.authはページpのオーソリティ スコアですp.hub = 1 // p.hubはページpのハブ スコアですステップ1からkまで、k ステップにわたってアルゴリズムを実行します ノルム = 0 Gの各ページpに対して、 // まずすべてのオーソリティ値を更新します。 p.auth = 0 p.incomingNeighborsの各ページqに対して、 // p.incomingNeighbors はpにリンクしているページのセットです。p.auth += q.hub norm += square( p .auth) // 認証値の二乗の合計を計算して正規化する norm = sqrt(norm) Gの各ページpに対して、次の操作を実行します 。 // 認証スコアを更新します。 p.auth = p.auth / norm // 認証値を正規化します。 ノルム = 0 Gの各ページpに対して、 // 次にすべてのハブ値を更新します。 p.hub = 0 p.outgoingNeighborsの各ページrに対して、 // p.outgoingNeighbors はp がリンクしている ページのセットです。p.hub + = r.auth norm += square( p .hub) // 正規化するために、ハブ値の二乗の合計を計算します norm = sqrt(norm) Gの各ページpに対して、 // すべてのハブ値を更新します。 p.hub = p.hub / norm // ハブ値を正規化します
上記の擬似コードでは、ハブ値とオーソリティ値が収束する。
以下のコードは、アルゴリズムの実行ステップ数を制限する必要があるため、収束しません。しかし、これを回避する方法の一つとして、各「ステップ」後にハブ値とオーソリティ値を正規化する方法があります。具体的には、各オーソリティ値をすべてのオーソリティ値の二乗の合計の平方根で割り、各ハブ値をすべてのハブ値の二乗の合計の平方根で割ります。上記の擬似コードは、まさにこの処理を行っています。
G := ページのセット 各ページp in Gに対して、p.auth = 1 // p.authはページpのオーソリティ スコアですp.hub = 1 // p.hubはページpのハブ スコアですfunction HubsAndAuthorities( G ) for step from 1 to k do // アルゴリズムを k ステップ実行 for each page p in G do // まずすべてのオーソリティ値を更新 p .auth = 0 for each page q in p.incomingNeighbors do // p.incomingNeighborsはp にリンクしているページのセットですp .auth += q .hub for each page p in G do // 次にすべてのハブ値を更新 p .hub = 0 for each page r in p.outgoingNeighbors do // p.outgoingNeighbors はpがリンクしている ページのセットですp .hub += r .auth
{{cite book}}: CS1メンテナンス: 場所の発行元が見つかりません (リンク)