全部產品
Search
文件中心

Platform For AI:奇異值分解

更新時間:Jul 13, 2024

奇異值分解(Singular Value Decomposition)是線性代數中一種重要的矩陣分解,是矩陣分析中正規矩陣求對角化的推廣。在訊號處理、統計學等領域有重要應用。

背景資訊

奇異值分解的公式為X = U S V’

參數配置

您可以使用以下任意一種方式,配置奇異值分解組件參數。

方式一:可視化方式

Designer工作流程頁面配置組件參數。

頁簽

參數

描述

欄位設定

選擇特徵列

存放k:v,k:v格式的列。

參數設定

保留奇異值個數

期望求解的top奇異組個數。預設求解全部奇異組。

精度誤差

允許的期望的誤差精度。

執行調優

單個節點記憶體大小

單位為兆,與節點個數參數配對使用,取值為[1024, 64*1024]的正整數。

節點個數

取值為[1, 9999]的正整數。

生命週期

指定輸出表的生命週期。

方式二:PAI命令方式

使用PAI命令方式,配置該組件參數。您可以使用SQL指令碼組件進行PAI命令調用,詳情請參見SQL指令碼

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

進行主成分分析的輸入表。

selectedColNames

輸入表中用於分析的列名稱,使用逗號分隔。

如果是疏鬆陣列,支援STRING類型。如果是表,支援INT和DOUBLE類型。

預設選擇所有列。

inputTablePartitions

輸入表中指定參與分析的分區,格式為Partition_name=value

如果是多級分區,格式為name1=value1/name2=value2,

如果指定多個分區,則需要使用,隔開。

預設選擇所有分區。

outputUTableName

U矩陣的輸出表,維度是m * sgNum。其中,m為資料表的行數,sgNum為計算出的奇異值個數。

outputSTableName

S矩陣的輸出表,維度是sgNum * sgNum。其中,sgNum為計算出的奇異值個數。

outputVTableName

V矩陣的輸出表,維度是n * sgNum。其中,n是矩陣的列數,sgNum是計算出的奇異值個數。

k

期望的奇異值個數。

輸出的結果為可能比K值小的正整數。

tol

收斂誤差

1.0e-06

enableSparse

輸入資料是否為稀疏格式:

  • true

  • false

false

itemDelimiter

指當輸入表資料為稀疏格式時,kv間的分隔字元。

空格

kvDelimiter

指當輸入表資料為稀疏格式時,key和value的分隔字元。

冒號

coreNum

節點個數。與memSizePerCore參數配對使用,取值為[1, 9999]的正整數。

系統自動分配。

memSizePerCore

單個節點記憶體大小,單位為兆。取值為[1024, 64*1024]的正整數。

系統自動分配。

lifecycle

指定輸出表的生命週期。取值為正整數。

樣本

  • 資料產生

    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命令

    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;
  • 演算法規模:10萬列。