本文为您介绍PAI-Studio提供的特征变换算法,包括主成分分析、特征尺度变换、特征离散、奇异值分解和特征异常平滑。
主成分分析
主成分分析(PCA)是研究如何通过少数主成分揭示多个变量间的内部结构,考察多个变量间相关性的一种多元统计方法。
PCA从原始变量中导出少数主成分,使它们尽可能多地保留原始变量的信息,并且彼此间互不相关,作为新的综合指标。
- 可视化方式
页签 参数 描述 字段设置 选择特征列 输入表中用于分析的列名称。 附加列 附加在降维数据表后的列。 参数设置 信息量比例 降维后数据信息占原来的比例。 特征分解方式 分解特征的方式,取值如下: - CORR
- COVAR_SAMP
- COVAR_POP
数据转换方式 转换为新数据的处理方式,取值如下: - Simple
- Sub-Mean
- Normalization
执行调优 生命周期 指定输出表的生命周期,取值为正整数。 节点个数 与单个节点内存大小参数配对使用。取值为[1, 9999]的正整数。 单个节点内存大小 单位为兆。取值范围为[1024, 64*1024]的正整数。 - PAI命令方式
PAI -name PrinCompAnalysis -project algo_public -DinputTableName=bank_data -DeigOutputTableName=pai_temp_2032_17900_2 -DprincompOutputTableName=pai_temp_2032_17900_1 -DselectedColNames=pdays,previous,emp_var_rate,cons_price_idx,cons_conf_idx,euribor3m,nr_employed -DtransType=Simple -DcalcuType=CORR -DcontriRate=0.9;
参数名称 是否必选 参数描述 默认值 inputTableName 是 进行主成分分析的输入表。 无 selectedColNames 是 输入表中用于分析的列名称。 使用逗号分隔,支持INT和DOUBLE类型。
无 eigOutputTableName 是 特征向量与特征值的输出表。 无 princompOutputTableName 是 进行主成分降维降噪后的结果输出表。 无 transType 否 转换原表为主成分分析表的方式,取值如下: - Simple
- Sub-Mean
- Normalization
Simple calcuType 否 对原表进行特征分解的方式,取值如下: - CORR
- COVAR_SAMP
- COVAR_POP
CORR contriRate 否 数据信息降维后保留的百分比。取值范围为(0,1)。 0.9 remainColumns 否 降维表保留原表的字段。 无 coreNum 否 节点个数,与memSizePerCore参数配对使用。取值范围为[1, 9999]的正整数。 系统自动分配。 memSizePerCore 否 单个节点的内存大小,单位为兆。取值范围为[1024, 64*1024]的正整数。 系统自动分配。 lifecycle 否 指定输出表的生命周期,取值为正整数。 无
- 降维后的数据表
- 特征值和特征向量表
特征尺度变换
- 支持常见的log2、log10、ln、abs及sqrt等尺度变化函数。
- 支持稠密及稀疏数据格式。
- 可视化方式
页签 参数 描述 字段设置 尺度变换特征 需要缩放的特征。 选择标签列 如果您设置了该字段,则可以通过可视化方式查看特征到目标变量的x-y分布直方图。 参数设置 尺度变化函数 特征尺度变换组件支持如下尺度变化函数: - log2
- log10
- ln
- abs
- sqrt
- PAI命令方式
PAI -name fe_scale_runner -project algo_public -Dlifecycle=28 -DscaleMethod=log2 -DscaleCols=nr_employed -DinputTable=pai_dense_10_1 -DoutputTable=pai_temp_2262_20380_1;
参数名称 是否必选 参数描述 默认值 inputTable 是 输入表的表名称。 无 inputTablePartitions 否 输入表中指定参与训练的分区,格式为 Partition_name=value
。如果是多级分区,格式为
name1=value1/name2=value2;
。如果指定多个分区,则需要使用,隔开。
输入表的所有分区。 outputTable 是 缩放尺度后的结果表。 无 scaleCols 是 勾选需要缩放的特征。 系统会自动筛选稀疏特征。您只能勾选数值类特征。
无 labelCol 否 标签字段。 如果您设置了该字段,则可以通过可视化方式查看特征到目标变量的x-y分布直方图。
无 categoryCols 否 将勾选的字段作为枚举特征处理,并且不支持缩放。 “” scaleMethod 否 缩放方法,取值如下: - log2
- log10
- ln
- abs
- sqrt
log2 scaleTopN 否 当未勾选scaleCols参数时,系统自动挑选TopN个需要缩放的特征。 10 isSparse 否 是否为k:v的稀疏特征。 稠密数据 itemSpliter 否 稀疏特征item的分隔符。 , kvSpliter 否 稀疏特征item的分隔符。 : lifecycle 否 结果表的生命周期。 7 coreNum 否 节点个数。取值范围为[1, 9999]的正整数。与memSizePerCore参数配对使用。 系统自动分配。 memSizePerCore 否 单个节点的内存大小,单位为兆。取值范围为[2048, 64 * 1024]的正整数。 系统自动分配。
- 输入数据
create table if not exists pai_dense_10_1 as select nr_employed from bank_data limit 10;
- 参数配置
勾选nr_employed作为尺度变化特征,并且仅支持数值类特征。尺度变化函数选择log2,如下图所示。
- 运行结果
nr_employed 12.352071021075528 12.34313018339218 12.285286613666395 12.316026916036957 12.309533196497519 12.352071021075528 12.316026916036957 12.316026916036957 12.309533196497519 12.316026916036957
特征离散
- 支持稠密数值类特征离散。
- 支持等频离散和等距离离散等无监督离散。
说明 无监督离散的特征离散默认为等距离离散。
- 支持基于Gini增益离散和基于熵增益离散等有监督离散。
说明 标签类特征离散必须是枚举类型STRING或BIGINT类型。

- 您必须使用相同的离散模型做特征离散预测,才能保证特征对齐。
- 有监督离散是根据熵增益不断遍历寻找切分断点,运行时间可能比较久。切分得到的分区数不受指定的maxBins参数限制。
- 可视化方式
页签 参数 描述 字段设置 离散的特征 选择需要离散的特征。如果选择的是稀疏特征,则系统会自动筛选。 标签列 如果您设置了该字段,则可以通过可视化方式查看特征到目标变量的x-y分布直方图。 参数设置 离散方法 离散方法。取值如下: - Isometric Discretization(等距离散)
- Isofrequecy Discretization(等频离散)
- Gini-gain-based Discretization(基于Gini增益离散)
- Entropy-gain-based Discretization(基于熵增益离散)
离散区间 离散区间大小。取值为大于1的正整数。 执行调优 计算核心数 计算的核心数目,取值为正整数。 每个核心内存 每个CPU分配的内存大小。 - PAI命令方式
PAI -name fe_discrete_runner_1 -project algo_public -DdiscreteMethod=SameFrequecy -Dlifecycle=28 -DmaxBins=5 -DinputTable=pai_dense_10_1 -DdiscreteCols=nr_employed -DoutputTable=pai_temp_2262_20382_1 -DmodelTable=pai_temp_2262_20382_2;
参数名称 是否必选 参数描述 默认值 inputTable 是 输入表的表名称。 无 inputTablePartitions 否 输入表中指定参与训练的分区,格式为 Partition_name=value
。如果是多级分区,格式为
name1=value1/name2=value2;
。如果指定多个分区,则需要使用,隔开。
输入表的所有分区。 outputTable 是 离散后的结果表。 无 discreteCols 是 选择需要离散的特征。如果选择的是稀疏特征,则系统会自动筛选。 “” labelCol 否 标签字段。如果您设置了该字段,则可以通过可视化方式查看特征到目标变量的x-y分布直方图。 无 categoryCols 否 将勾选的字段作为枚举特征处理,并且不支持离散。 默认为空 discreteMethod 否 离散方法。取值如下: - Isometric Discretization(等距离散)
- Isofrequecy Discretization(等频离散)
- Gini-gain-based Discretization(基于Gini增益离散)
- Entropy-gain-based Discretization(基于熵增益离散)
Isometric Discretization discreteTopN 否 当未勾选discreteCols参数时,系统自动挑选TopN个需要离散的特征。取值为正整数。 10 maxBins 否 离散区间大小。取值为大于1的正整数。 100 isSparse 否 是否为k:v的稀疏特征,取值如下: - true
- false
默认为稠密数据。
false itemSpliter 否 稀疏特征item的分隔符。 , kvSpliter 否 稀疏特征item的分隔符。 : lifecycle 否 结果表生命周期。取值为正整数。 7 coreNum 否 节点个数。与memSizePerCore参数配对使用,取值为正整数。 系统自动分配。 memSizePerCore 否 单个节点内存大小,单位为兆。取值为正整数。 系统自动分配。
- 输入数据
create table if not exists pai_dense_10_1 as select nr_employed from bank_data limit 10;
- 参数配置
输入数据为pai_dense_10_1。离散特征选择nr_employed,离散方法选择等距离散,离散区间配置为5,如下图所示。
- 运行结果
nr_employed 4.0 3.0 1.0 3.0 2.0 4.0 3.0 3.0 2.0 3.0
特征异常平滑
- ZScore平滑
如果特征分布遵循正态分布,则噪音一般集中在-3×alpha和3×alpha之外,ZScore是将该范围的数据平滑到[-3×alpha,3×alpha]之间。
例如,某个特征遵循正态分布,均值为0,标准差为3。因此,-10的特征值会被识别为异常而修正为-3×3+0,即为-9。同理10会被修正为3×3+0,即为9,如下图所示。 - 百分位平滑
用于将分布不在[minPer, maxPer]的数据平滑到minPer和maxPer这两个分位点。
例如,age特征取值0~200,设置minPer为0,maxPer为50%,则不在0~100的特征取值都会被修正成0或100。
- 阈值平滑
用于将分布不在[minThresh, maxThresh]的数据平滑到minThresh和maxThresh这两个数据点。
例如,age特征取值0~200,设置minThresh为10,maxThresh为80,则不在0~80的特征取值都会被修正成0或80。
- 可视化方式
页签 参数 描述 字段设置 选择平滑特征列 需要平滑处理的特征列。 标签列 如果您设置了该字段,则可以通过可视化方式查看特征到目标变量的x-y分布直方图。 参数设置 平滑方法 平滑方法如下: - ZScore平滑
- 百分位平滑
- 阈值平滑
- 箱线图平滑
置信范围 置信水平。当平滑方法为ZScore平滑时需要配置该参数。 阈值下限 阈值最小值,默认为-9999,表示不设置。 当平滑方法为阈值平滑时需要配置该参数。
阈值上限 阈值最大值,默认为-9999,表示不设置。 当平滑方法为阈值平滑时需要配置该参数。
百分位下限 最低百分位。 当平滑方法为百分位平滑或箱线图平滑时需要配置该参数。
百分位上限 最高百分位。 当平滑方法为百分位平滑或箱线图平滑时需要配置该参数。
- PAI命令方式
PAI -name fe_soften_runner -project algo_public -DminThresh=5000 -Dlifecycle=28 -DsoftenMethod=min-max-thresh -DsoftenCols=nr_employed -DmaxThresh=6000 -DinputTable=pai_dense_10_1 -DoutputTable=pai_temp_2262_20381_1;
参数名称 是否必选 参数描述 默认值 inputTable 是 输入表的表名 无 inputTablePartitions 否 输入表中指定参与训练的分区,格式为 Partition_name=value
。如果是多级分区,格式为
name1=value1/name2=value2;
。如果指定多个分区,则需要使用,隔开。
输入表的所有分区。 outputTable 是 平滑后的结果表。 无 labelCol 否 标签字段。如果您设置了该字段,则可以通过可视化方式查看特征到目标变量的x-y分布直方图。 默认为空 categoryCols 否 将勾选的字段作为枚举特征处理。 默认为空 softenCols 是 选择需要平滑的特征。如果特征为稀疏特征时,系统会自动化筛选。 无 softenMethod 否 平滑方法如下: - ZScore平滑
- 百分位平滑
- 阈值平滑
- 箱线图平滑
ZScore平滑 softenTopN 否 当未勾选softenCols参数时,系统自动挑选TopN个需要平滑的特征。取值为正整数。 10 cl 否 置信水平。当平滑方法为ZScore平滑时需要配置该参数。 10 minPer 否 最低百分位。当平滑方法为百分位平滑或箱线图平滑时需要配置该参数。 0.0 maxPer 否 最高百分位。当平滑方法为百分位平滑或箱线图平滑时需要配置该参数。 1.0 minThresh 否 阈值最小值。当平滑方法为阈值平滑时需要配置该参数。 -9999 maxThresh 否 阈值最大值。当平滑方法为阈值平滑时需要配置该参数。 -9999 isSparse 否 是否为k:v的稀疏特征,取值如下: - true
- false
默认为稠密数据。
false itemSpliter 否 稀疏特征item的分隔符。 , kvSpliter 否 稀疏特征item的分隔符。 : lifecycle 否 结果表生命周期。取值为正整数。 7 coreNum 否 节点个数。与memSizePerCore参数配对使用,取值为[1, 9999]的正整数。 系统自动分配。 memSizePerCore 否 单个节点内存大小,单位为兆。取值为[2048, 64 *1024]的正整数。 系统自动分配。
- 输入数据
create table if not exists pai_dense_10_1 as select nr_employed from bank_data limit 10;
nr_employed 5228.1 5195.8 4991.6 5099.1 5076.2 5228.1 5099.1 5099.1 5076.2 5099.1 - 参数配置
平滑特征选择nr_employed,参数设置中平滑方法选择阈值平滑,阈值下限为5000,阈值上限为6000,如下图所示。
- 运行结果
nr_employed 5228.1 5195.8 5000.0 5099.1 5076.2 5228.1 5099.1 5099.1 5076.2 5099.1
奇异值分解
奇异值分解(Singular Value Decomposition)是线性代数中一种重要的矩阵分解,是矩阵分析中正规矩阵求对角化的推广。在信号处理、统计学等领域有重要应用。
奇异值分解的公式为X = U S V’
。
- 可视化方式
页签 参数 描述 字段设置 选择特征列 存放k:v,k:v格式的列。 参数设置 保留奇异值个数 期望求解的top奇异组个数。默认求解全部奇异组。 精度误差 允许的期望的误差精度。 执行调优 单个节点内存大小 单位为兆,与memSizePerCore参数配对使用,取值为[1, 9999]的正整数。 节点个数 取值为[1024, 64*1024]的正整数。 生命周期 指定输出表的生命周期。 - PAI命令方式
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 from dual union all select '0:0.09229 2:0.4872172 5:0.5267 8:0.4544 9:0.23317' as col0 from dual union all select '1:0.8312 3:0.9317 5:0.5680 7:0.5560 9:0.0508' as col0 from dual union all select '2:0.767 5:0.01891 8:0.25235 ' as col0 from dual union all select '0:0.29819 2:0.87598086 6:0.5315568 ' as col0 from dual union all select '0:0.920260 2:0.5154311513 4:0.8104 5:0.188420 8:0.88' as col0 from dual ) 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万列。
在文档使用中是否遇到以下问题
更多建议
匿名提交