奇异值分解(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万列。