すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:PageRank

最終更新日:Sep 11, 2026

PageRank アルゴリズムは、ウェブページの重要度を測定します。 このアルゴリズムは、ページへのリンクの数と質がその重要度を決定するという考えに基づき、ハイパーリンクを分析します。 被リンクが多いページほど、ランキングは高くなります。 リンク元ページの重みも、最終的な PageRank スコアに影響します。 PageRank コンポーネントは、各ノードの重みを出力します。

アルゴリズムの説明

PageRank アルゴリズムは、ウェブページの相対的な重要度を評価するために使用されるリンク分析手法です。 その中心的な原則は次のとおりです。

  • 他の多くのウェブページからリンクされているウェブページは、一般的により重要、または高品質なリソースと見なされます。

  • このアルゴリズムは、被リンクの数だけでなく、各リンク元ページの重みも考慮します。 この重みは、リンク元ページ自身の PageRank スコアと、そのページのアウトバウンドリンクの数に基づいています。

PageRank の概念は、ソーシャルネットワークにも適用されます。 ユーザーの影響力は、そのユーザー個人の属性とソーシャルコネクションの質に依存します。 たとえば、Sina Weibo では、ユーザーがフォロワーに与える影響は、関係の近さによって決まります。 通常、ユーザーは家族、クラスメート、同僚に対してより大きな影響力を持ちます。 このネットワークモデルでは、エッジの重みが関係の近さを反映し、その強さを示します。

リンクの重みを考慮した PageRank の計算式は次のとおりです。PageRank公式

  • W(i):ノード i の重み。

  • C(Ai):リンクの重み。

  • d:減衰係数。

  • W(A):アルゴリズムが収束した後のノードの重み。 これは各ユーザーの影響力指数を表します。

コンポーネントの設定

方法1:可視化による設定

Designer ワークフローで、[PageRank] コンポーネントを追加し、インターフェイスの右側でパラメーターを設定します。

パラメータータイプ

パラメーター

説明

フィールド設定

ソース頂点列

エッジリストのソース頂点を含む列。

宛先頂点列

エッジリストの宛先頂点を含む列。

エッジの重み列

エッジの重みを含む列。

パラメーター設定

最大反復回数

アルゴリズムが収束すると反復を停止します。 デフォルト値は 30 です。

減衰係数

ユーザーがウェブページに到達した後、閲覧を続ける確率。

実行チューニング

プロセス数

並列ジョブ実行のためのノード数。 値を大きくすると並列度は高くなりますが、フレームワークの通信オーバーヘッドが増加します。

ワーカーごとのメモリサイズ

単一ジョブの最大メモリサイズ。 単位:MB。 デフォルト値は 4096 です。

実際のメモリ使用量がこの値を超えると、OutOfMemory 例外がスローされます。

方法2:PAI コマンドの使用

PAI コマンドを使用して、SQL スクリプトコンポーネントからコマンドを呼び出すことで、[PageRank] コンポーネントのパラメーターを設定できます。 詳細については、「シナリオ 4:SQL スクリプトコンポーネントでの PAI コマンドの実行」をご参照ください。

PAI -name PageRankWithWeight
    -project algo_public
    -DinputEdgeTableName=PageRankWithWeight_func_test_edge
    -DfromVertexCol=flow_out_id
    -DtoVertexCol=flow_in_id
    -DoutputTableName=PageRankWithWeight_func_test_result
    -DhasEdgeWeight=true
    -DedgeWeightCol=weight
    -DmaxIter=100;

パラメーター

必須

デフォルト値

説明

inputEdgeTableName

はい

なし

入力エッジリストのテーブル名。

inputEdgeTablePartitions

いいえ

フルテーブルスキャン

入力エッジリストのパーティション。

fromVertexCol

はい

なし

入力エッジリストのソース頂点を含む列。

toVertexCol

はい

なし

入力エッジリストの宛先頂点を含む列。

outputTableName

はい

なし

出力テーブルの名前。

outputTablePartitions

いいえ

なし

出力テーブルのパーティション。

lifecycle

いいえ

なし

出力テーブルのライフサイクル。

workerNum

いいえ

未設定

並列ジョブ実行のためのノード数。 値を大きくすると並列度は高くなりますが、フレームワークの通信オーバーヘッドが増加します。

workerMem

いいえ

4096

単一ジョブの最大メモリサイズ。 単位:MB。 デフォルト値は 4096 です。

実際のメモリ使用量がこの値を超えると、OutOfMemory 例外がスローされます。

splitSize

いいえ

64

データチャンクのサイズ。 単位:MB。

hasEdgeWeight

いいえ

false

入力エッジリストのエッジに重みがあるかどうかを指定します。

edgeWeightCol

いいえ

なし

入力エッジリストのエッジの重みを含む列。

maxIter

いいえ

30

最大反復回数。

例

  1. SQL スクリプトコンポーネントを追加します。 [Use Script Mode] と [System Adds Create Table Statement] のチェックを外し、[SQL Script] フィールドに次の SQL 文を入力します。

    drop table if exists PageRankWithWeight_func_test_edge;
    create table PageRankWithWeight_func_test_edge as
    select * from
    (
        select 'a' as flow_out_id,'b' as flow_in_id,1.0 as weight
        union all
        select 'a' as flow_out_id,'c' as flow_in_id,1.0 as weight
        union all
        select 'b' as flow_out_id,'c' as flow_in_id,1.0 as weight
        union all
        select 'b' as flow_out_id,'d' as flow_in_id,1.0 as weight
        union all
        select 'c' as flow_out_id,'d' as flow_in_id,1.0 as weight
    )tmp;

    対応するデータ構造グラフを以下に示します:

    image

  2. 別の SQL スクリプトコンポーネントを追加します。 [Use Script Mode] と [System Adds Create Table Statement] のチェックを外します。 [SQL Script] フィールドに次の PAI コマンドを入力します。 手順 1 のコンポーネントをこのコンポーネントに接続します。

    drop table if exists ${o1};
    PAI -name PageRankWithWeight
        -project algo_public
        -DinputEdgeTableName=PageRankWithWeight_func_test_edge
        -DfromVertexCol=flow_out_id
        -DtoVertexCol=flow_in_id
        -DoutputTableName=${o1}
        -DhasEdgeWeight=true
        -DedgeWeightCol=weight
        -DmaxIter=100;
  3. 左上隅の image をクリックしてワークフローを実行します。

  4. ワークフローが完了したら、手順 2 のコンポーネントを右クリックし、[View Data > Output of SQL Script] を選択してトレーニング結果を表示します。

    | node | weight     |
    | ---- | ---------- |
    | a    | 0.12841452 |
    | b    | 0.18299069 |
    | c    | 0.26076174 |
    | d    | 0.42783305 |