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

Platform For AI:ページランク

最終更新日:Jul 22, 2024

PageRankアルゴリズムは、webページの重要性を測定するために使用されます。 PageRankアルゴリズムは、ハイパーリンクを分析して、ウェブページへのリンクの数および品質に基づいてウェブページの重要性を判定する。 ウェブページへのリンクの数が多いほど、ウェブページのランキングが高いことを示す。 リンクソースの重みは、webページの最終的なPageRankスコアにも影響します。 ページランクコンポーネントは、各ノードの重みを計算するために使用されます。

説明

PageRankアルゴリズムは、ウェブページへのリンクを分析して、ウェブページの相対的な重要性を評価する。 PageRankアルゴリズムは、次の基本原則に基づいて機能します。

  • 他のウェブページからウェブページへのリンクの数が多いほど、ウェブページの重要性または品質が高いことを示す。

  • PageRankアルゴリズムは、他のウェブページからウェブページへのリンクの数を収集し、他のウェブページの重みを考慮に入れる。 ウェブページの重みは、ウェブページのPageRankスコアと、ウェブページから他のウェブページへのリンクの数とに基づいて計算される。

PageRankアルゴリズムは、ソーシャルネットワークにも適用できます。 ソーシャルネットワークでは、ユーザーの影響は、その個人的な属性とその社会的なつながりの質によって決まります。 たとえば、Sina Weiboユーザーがフォロワーに与える影響は、フォロワーとの関係の近さによって影響を受けます。 ほとんどの場合、Sina Weiboユーザーは家族、クラスメート、同僚に影響を与える可能性が高くなります。 ソーシャルネットワークでは、エッジ重みは、ユーザ間の関係の近さを反映し、関係強度インデックスであると考えられる。

リンク重みPageRank公式を含むPageRank式

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

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

  • d: ダンピング係数。

  • W(A): 各ユーザの影響指数とアルゴリズム反復後のノード重みが安定する。

コンポーネントの設定

方法1: パイプラインページでコンポーネントを設定する

Platform for AI (PAI) コンソールのMachine Learning Designerのパイプラインページで、ページランクコンポーネントのパラメーターを設定します。 下表に、各パラメーターを説明します。

タブ

パラメーター

説明

フィールド設定

ソース頂点列

エッジテーブルの開始頂点列。

ターゲット頂点列

エッジテーブルの末尾の頂点列。

エッジ重量コラム

エッジテーブルのエッジ重み列。

パラメーター設定

最大イテレーション

アルゴリズムが自動的に収束するまでの反復回数。 デフォルト値:30。

ダンピング係数

ユーザーがブラウジングを続ける確率。

チューニング

労働者

並列ジョブ実行のノード数。 並列性とフレームワーク通信コストの程度は、このパラメータの値とともに増加します。

Workerあたりのメモリサイズ (MB)

ジョブで使用できるメモリの最大サイズ。 単位:MB。 デフォルト値: 4096

使用されているメモリのサイズがこのパラメーターの値を超えると、OutOfMemoryエラーが報告されます。

方法2: PAIコマンドを使用する

PAIコマンドを使用して、ページランクコンポーネントのパラメーターを設定します。 SQLスクリプトコンポーネントを使用してPAIコマンドを呼び出すことができます。 詳細については、「シナリオ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

不可

デフォルト値なし

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

ライフサイクルの設定 (Set lifecycle)

不可

デフォルト値なし

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

workerNum

不可

デフォルト値なし

並列ジョブ実行のノード数。 並列性とフレームワーク通信コストの程度は、このパラメータの値とともに増加します。

workerMem

不可

4096

ジョブで使用できるメモリの最大サイズ。 単位:MB。 デフォルト値: 4096

使用されているメモリのサイズがこのパラメーターの値を超えると、OutOfMemoryエラーが報告されます。

splitSize

不可

64

データ分割サイズ。 単位:MB。

hasEdgeWeight

不可

false

入力エッジテーブルのエッジに重みがあるかどうかを指定します。

edgeWeightCol

不可

デフォルト値なし

入力エッジテーブルのエッジ重み列。

maxIter

不可

有効期限の 30

反復の最大数。

例:

  1. SQLスクリプトコンポーネントをノードとしてキャンバスに追加し、次の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スクリプトコンポーネントをノードとしてキャンバスに追加し、次のPAIコマンドを実行してモデルをトレーニングします。

    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. SQLスクリプトコンポーネントを右クリックし、[データの表示]> [SQLスクリプトの出力] を選択してトレーニング結果を表示します。

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