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

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