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

Platform For AI:SVD

最終更新日:Jul 22, 2024

特異値分解 (SVD) は、線形代数における重要な行列分解です。 これは、行列分析における正常行列の対角化の一般化です。 SVDは、信号処理や統計などの分野で広く使用されています。

背景情報

特異値分解の式: X = U S V'

コンポーネントの設定

次のいずれかの方法を使用してコンポーネントを設定できます。

  • Machine Learning Platform for AIコンソールの使用

    タブ

    パラメーター

    説明

    フィールド設定

    フィーチャー列

    キーと値のペアを格納するために使用される列。 キーと値はコロン (:) で区切り、複数のキーと値のペアはコンマ (,) で区切ります。

    パラメーター設定

    予約済みの単一値の数

    分解したい上位N個の特異グループ。 すべての特異群はデフォルトで分解されます。

    精度エラー

    許可されているエラーの精度。

    チューニング

    ノードあたりのメモリサイズ

    各ノードのメモリサイズ。 単位:MB。 このパラメーターは、[ノード数] パラメーターと共に使用する必要があります。 このパラメーターの値は正の整数でなければなりません。 有効な値: [1,9999]

    ノード数

    このパラメーターの値は正の整数でなければなりません。 有効値: [1024,64 × 1024]

    生涯

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

  • コマンドの使用

    PAI -name svd
        -project algo_public
        -DinputTableName=bank_data
        -DselectedColNames=col0
        -DenableSparse=true
        -Dk=5
        -DoutputUTableName=u_table
        -DoutputVTableName=v_table
        -DoutputSTableName=s_table;

    パラメーター

    必須

    説明

    デフォルト値

    inputTableName

    トレーニングに使用される入力テーブル。

    N/A

    selectedColNames

    不可

    トレーニング用に入力テーブルから選択された列。 列はコンマ (,) で区切ります。

    スパース行列を使用する場合、STRINGデータ型の列がサポートされます。 データテーブルを使用する場合、INT型とDOUBLE型の列がサポートされます。

    すべての列

    inputTablePartitions

    不可

    トレーニング用に入力テーブルから選択されたパーティション。 このパラメーターをPartition_name=value形式で設定します。

    マルチレベルパーティションを指定するには、このパラメーターをname1=value1/name2=value2; 形式で設定します。

    複数のパーティションを指定する場合は、コンマで区切ります (,) 。

    すべてのパーティション

    outputUTableName

    ユニタリ行列の出力テーブル。 出力テーブルは、m * sgNumディメンションから生成されます。 mはデータテーブルの行数を表し、sgNumは計算された特異値の数を表します。

    N/A

    outputSTableName

    散乱行列 (S行列) の出力テーブル。 出力テーブルは、sgNum * sgNumディメンションから生成されます。 sgNumは、計算された特異値の数を表す。

    N/A

    outputVTableName

    V行列の出力テーブル。 出力テーブルは、n * sgNumディメンションから生成されます。 nは行列の列の数を表し、sgNumは計算された特異値の数を表します。

    N/A

    k

    予想される特異値の数。

    生成される特異値の数は、kパラメータによって指定される値よりも小さい正の整数であってもよい。

    N/A

    tol

    不可

    収束エラー。

    1.0e ~ 06

    enableSparse

    不可

    入力テーブルのデータがスパース形式かどうかを指定します。 有効な値:

    • true

    • false

    false

    itemDelimiter

    不可

    入力テーブルのデータがスパース形式の場合にキーと値のペアを区切るために使用される区切り文字。

    スペース

    kvDelimiter

    不可

    入力テーブルのデータがスパース形式である場合に、キーと値を区切るために使用される区切り文字。

    :

    coreNum

    不可

    コアの数。 このパラメーターは、memSizePerCoreパラメーターと共に使用する必要があります。 このパラメーターの値は正の整数でなければなりません。 有効な値: [1,9999]

    システムによって決定される

    memSizePerCore

    不可

    各コアのメモリサイズ。 単位:MB。 このパラメーターの値は正の整数でなければなりません。 有効値: [1024,64 × 1024]

    システムによって決定される

    ライフサイクル

    不可

    出力テーブルのライフサイクル。 値は正の整数でなければなりません。

    N/A

例:

  • 入力データの生成

    drop table if exists svd_test_input;
    create table svd_test_input
    as
    select
        *
    from
    (
      select
            '0:3.9079 2:0.0009 3:0.0416 4:0.17664 6:0.36460 8:0.091330' as col0
        union all
      select
            '0:0.09229 2:0.4872172 5:0.5267 8:0.4544 9:0.23317' as col0
        union all
        select
        '1:0.8312 3:0.9317 5:0.5680 7:0.5560 9:0.0508' as col0
        union all
        select
        '2:0.767 5:0.01891 8:0.25235 ' as col0
        union all
        select
        '0:0.29819 2:0.87598086 6:0.5315568 ' as col0
        union all
        select
        '0:0.920260 2:0.5154311513 4:0.8104 5:0.188420 8:0.88' as col0
    ) a;
  • コマンドの実行

    PAI -name svd
        -project algo_public
        -DinputTableName=svd_test_input
        -DselectedColNames=col0
        -DenableSparse=true
        -Dk=5
        -DoutputUTableName=u_table
        -DoutputVTableName=v_table
        -DoutputSTableName=s_table;
  • 分析スケール: 100,000列