奇異值分解(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 | 否 | 輸入表中指定參與分析的分區,格式為 如果是多級分區,格式為 如果指定多個分區,則需要使用,隔開。 | 默認選擇所有分區。 |
outputUTableName | 是 | U矩陣的輸出表,維度是 | 無 |
outputSTableName | 是 | S矩陣的輸出表,維度是 | 無 |
outputVTableName | 是 | V矩陣的輸出表,維度是 | 無 |
k | 是 | 期望的奇異值個數。 輸出的結果為可能比K值小的正整數。 | 無 |
tol | 否 | 收斂誤差 | 1.0e-06 |
enableSparse | 否 | 輸入數據是否為稀疏格式:
| 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萬列。