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

Platform For AI:最大接続サブグラフ

最終更新日:Jul 22, 2024

Maximum Connected Subgraphアルゴリズムは、無向グラフ内の最大の接続部分を識別するために使用されます。これは、グラフ内の最大のノードセットです。 無向グラフでは、パスを使用して2つのノードを接続できます。 ほとんどの場合、アルゴリズムはネットワーク分析や画像処理などのシナリオで使用されます。 Maximum Connected Subgraphアルゴリズムは、深さ優先検索 (DFS) または幅優先検索 (BFS) を使用してグラフをトラバースし、すべての接続コンポーネントを識別し、最大数のノードを含むサブグラフを見つけます。

コンポーネントの設定

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

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

タブ

パラメーター

説明

フィールド設定

Vertexを開始

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

エンドノード

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

チューニング

労働者

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

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

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

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

データ分割サイズ (MB)

データ分割サイズ。 単位:MB。 デフォルト値: 64。

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

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

PAI -name MaximalConnectedComponent
    -project algo_public
    -DinputEdgeTableName=MaximalConnectedComponent_func_test_edge
    -DfromVertexCol=flow_out_id
    -DtoVertexCol=flow_in_id
    -DoutputTableName=MaximalConnectedComponent_func_test_result;

パラメーター

必須

デフォルト値

説明

inputEdgeTableName

可

デフォルト値なし

入力エッジテーブルの名前。

inputEdgeTablePartitions

不可

フルテーブル

入力エッジテーブルのパーティション。

fromVertexCol

可

デフォルト値なし

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

toVertexCol

可

デフォルト値なし

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

outputTableName

可

デフォルト値なし

出力テーブルの名前。

outputTablePartitions

不可

デフォルト値なし

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

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

不可

デフォルト値なし

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

workerNum

不可

デフォルト値なし

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

workerMem

不可

4096

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

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

splitSize

不可

64

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

例:

  1. SQLスクリプトコンポーネントをノードとしてキャンバスに追加し、次のSQL文を実行してトレーニングデータを生成します。

    drop table if exists MaximalConnectedComponent_func_test_edge;
    create table MaximalConnectedComponent_func_test_edge as
    select * from
    (
      select '1' as flow_out_id,'2' as flow_in_id
      union all
      select '2' as flow_out_id,'3' as flow_in_id
      union all
      select '3' as flow_out_id,'4' as flow_in_id
      union all
      select '1' as flow_out_id,'4' as flow_in_id
      union all
      select 'a' as flow_out_id,'b' as flow_in_id
      union all
      select 'b' as flow_out_id,'c' as flow_in_id
    )tmp;
    drop table if exists MaximalConnectedComponent_func_test_result;
    create table MaximalConnectedComponent_func_test_result
    (
      node string,
      grp_id string
    );

    データ構造

    image

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

    drop table if exists ${o1};
    PAI -name MaximalConnectedComponent
        -project algo_public
        -DinputEdgeTableName=MaximalConnectedComponent_func_test_edge
        -DfromVertexCol=flow_out_id
        -DtoVertexCol=flow_in_id
        -DoutputTableName=${o1};
  3. SQLスクリプトコンポーネントを右クリックし、[データの表示]> [SQLスクリプトの出力] を選択してトレーニング結果を表示します。

    | node1 | grp_id |
    | ----- | ------ |
    | a     | c      |
    | b     | c      |
    | c     | c      |
    | 1     | 4      |
    | 2     | 4      |
    | 3     | 4      |
    | 4     | 4      |