本文为您介绍PAI-Studio提供的回归算法,包括GBDT回归、线性回归、PS-SMART回归及PS线性回归。
GBDT回归
梯度渐进回归树GBDT(Gradient Boosting Decesion Tree)是一种迭代决策树算法,适用于线性及非线性回归场景。
PAI-Studio支持通过可视化或PAI命令的方式,配置该组件参数:
- 可视化方式
页签 参数 描述 字段设置 输入列 输入数据源中,参与训练的特征列。支持DOUBLE及BIGINT类型。 说明 特征列数量不能超过800。标签列 支持DOUBLE及BIGINT类型。 分组列 支持DOUBLE及BIGINT类型,默认将全表作为一组。 参数设置 损失函数类型 支持gbrank loss、lambdamart dcg loss、lambdamart ndcg loss及regression loss类型。 gbrank loss中的Tau参数 取值范围为[0,1]。 gbrank与regression loss中的指数底数 取值范围为[1,10]。 metric类型 支持NDCG及DCG类型。 树数量 取值范围为1~10000。 学习速率 取值范围为(0,1)。 最大叶子数 取值范围为1~1000。 一棵树的最大深度 取值范围为1~100。 叶子节点容纳的最少样本数 取值范围为1~1000。 样本采样比例 取值范围为(0,1)。 训练中采集的特征比例 取值范围为(0,1)。 测试样本数比例 取值范围为[0,1)。 随机数产生器种子 取值范围为[0,10]。 是否使用newton方法来学习 使用Newton方法的开关。 一个特征分裂的最大数量 取值范围为1~1000。 执行调优 计算核心数 系统根据输入数据量,自动分配训练的实例数量。 每个核内存 系统根据输入数据量,自动分配内存。单位为MB。 - PAI命令方式
PAI -name gbdt -project algo_public -DfeatureSplitValueMaxSize="500" -DlossType="0" -DrandSeed="0" -DnewtonStep="0" -Dshrinkage="0.05" -DmaxLeafCount="32" -DlabelColName="campaign" -DinputTableName="bank_data_partition" -DminLeafSampleCount="500" -DsampleRatio="0.6" -DgroupIDColName="age" -DmaxDepth="11" -DmodelName="xlab_m_GBDT_83602" -DmetricType="2" -DfeatureRatio="0.6" -DinputTablePartitions="pt=20150501" -Dtau="0.6" -Dp="1" -DtestRatio="0.0" -DfeatureColNames="previous,cons_conf_idx,euribor3m" -DtreeCount="500"
参数 是否必选 描述 默认值 inputTableName 是 输入表的名称。 无 featureColNames 否 输入表中,用于训练的特征列名。支持DOUBLE及BIGINT类型。 所有数值列 labelColName 是 输入表中的标签列名,支持DOUBLE及BIGINT类型。 无 inputTablePartitions 否 输入表中,参与训练的分区。支持的格式包括: - Partition_name=value
- name1=value1/name2=value2:多级分区
说明 如果指定多个分区,则使用英文逗号(,)分隔。所有分区 modelName 是 输出的模型名称。 无 outputImportanceTableName 否 输出特征重要性的表名。 无 groupIDColName 否 数据分组列。 全表 lossType 否 损失函数包括以下类型: - 0:GBRANK
- 1:LAMBDAMART_DCG
- 2:LAMBDAMART_NDCG
- 3:LEAST_SQUARE
- 4:LOG_LIKELIHOOD
0 metricType 否 包括以下类型: - 0:NDCG(Normalized Discounted Cumulative Gain)
- 1:DCG(Discounted Cumulative Gain)
- 2:AUC,仅适用于label取值为0/1的场景
0 treeCount 否 树数量,取值范围为1~10000。 500 shrinkage 否 学习速率,取值范围为(0,1)。 0.05 maxLeafCount 否 最大叶子数,取值范围为1~1000。 32 maxDepth 否 树的最大深度,取值范围为1~100。 10 minLeafSampleCount 否 叶子节点容纳的最少样本数,取值范围为1~1000。 500 sampleRatio 否 训练采集的样本比例,取值范围为(0,1)。 0.6 featureRatio 否 训练采集的特征比例,取值范围为(0,1)。 0.6 tau 否 GBRank Loss中的Tau参数,取值范围为[0,1]。 0.6 p 否 GBRank Loss中的p参数,取值范围为[1,10]。 1 randSeed 否 随机数种子,取值范围为[0,10]。 0 newtonStep 否 使用Newton迭代法的开关,取值范围为{0,1}。 1 featureSplitValueMaxSize 否 特征分裂的最大数量,取值范围为1~1000。 500 lifecycle 否 输出表的生命周期。 无
GBDT回归示例
- 使用SQL语句,生成测试数据。
生成的测试数据表gbdt_ls_test_input如下。drop table if exists gbdt_ls_test_input; create table gbdt_ls_test_input as select * from ( select cast(1 as double) as f0, cast(0 as double) as f1, cast(0 as double) as f2, cast(0 as double) as f3, cast(0 as bigint) as label from dual union all select cast(0 as double) as f0, cast(1 as double) as f1, cast(0 as double) as f2, cast(0 as double) as f3, cast(0 as bigint) as label from dual union all select cast(0 as double) as f0, cast(0 as double) as f1, cast(1 as double) as f2, cast(0 as double) as f3, cast(1 as bigint) as label from dual union all select cast(0 as double) as f0, cast(0 as double) as f1, cast(0 as double) as f2, cast(1 as double) as f3, cast(1 as bigint) as label from dual union all select cast(1 as double) as f0, cast(0 as double) as f1, cast(0 as double) as f2, cast(0 as double) as f3, cast(0 as bigint) as label from dual union all select cast(0 as double) as f0, cast(1 as double) as f1, cast(0 as double) as f2, cast(0 as double) as f3, cast(0 as bigint) as label from dual ) a;
f0 f1 f2 f3 label 1.0 0.0 0.0 0.0 0 0.0 0.0 1.0 0.0 1 0.0 0.0 0.0 1.0 1 0.0 1.0 0.0 0.0 0 1.0 0.0 0.0 0.0 0 0.0 1.0 0.0 0.0 0 - 使用PAI命令,提交GBDT回归组件的训练参数。
drop offlinemodel if exists gbdt_ls_test_model; PAI -name gbdt -project algo_public -DfeatureSplitValueMaxSize="500" -DlossType="3" -DrandSeed="0" -DnewtonStep="1" -Dshrinkage="0.5" -DmaxLeafCount="32" -DlabelColName="label" -DinputTableName="gbdt_ls_test_input" -DminLeafSampleCount="1" -DsampleRatio="1" -DmaxDepth="10" -DmetricType="0" -DmodelName="gbdt_ls_test_model" -DfeatureRatio="1" -Dp="1" -Dtau="0.6" -DtestRatio="0" -DfeatureColNames="f0,f1,f2,f3" -DtreeCount="10"
- 使用PAI命令,提交预测组件参数。
drop table if exists gbdt_ls_test_prediction_result; PAI -name prediction -project algo_public -DdetailColName="prediction_detail" -DmodelName="gbdt_ls_test_model" -DitemDelimiter="," -DresultColName="prediction_result" -Dlifecycle="28" -DoutputTableName="gbdt_ls_test_prediction_result" -DscoreColName="prediction_score" -DkvDelimiter=":" -DinputTableName="gbdt_ls_test_input" -DenableSparse="false" -DappendColNames="label"
- 查看预测结果表gbdt_ls_test_prediction_result。
label prediction_result prediction_score prediction_detail 0 NULL 0.0 {“label”: 0} 0 NULL 0.0 {“label”: 0} 1 NULL 0.9990234375 {“label”: 0.9990234375} 1 NULL 0.9990234375 {“label”: 0.9990234375} 0 NULL 0.0 {“label”: 0} 0 NULL 0.0 {“label”: 0}
线性回归
线性回归(Linear Regression)是分析因变量和多个自变量之间的线性关系模型。PAI-Studio支持通过可视化或PAI命令的方式,配置该组件参数:
- 可视化方式
页签 参数 描述 字段设置 选择特征列 输入数据源中,参与训练的特征列。 选择标签列 支持DOUBLE及BIGINT类型。 是否稀疏格式 使用KV格式表示稀疏格式。 kv对间分隔符 默认使用英文逗号(,)分隔。 key与value分隔符 默认使用英文冒号(:)分隔。 参数设置 最大迭代轮数 算法进行的最大迭代次数。 最小似然误差 如果两次迭代间的Log Likelihood之差小于该值,则算法终止。 正则化类型 支持L1、L2及None类型。 正则系数 如果正则化类型为None,则该参数失效。 生成模型评估表 指标包括R-Squared、AdjustedR-Squared、AIC、自由度、残差的标准差及偏差。 回归系数评估 指标包括T值、P值及置信区间[2.5%,97.5%]。只有选中生成模型评估表复选框,该参数才生效。 执行调优 计算核心数 默认为系统自动分配。 每核内存大小 默认为系统自动分配。 - PAI命令方式
PAI -name linearregression -project algo_public -DinputTableName=lm_test_input -DfeatureColNames=x -DlabelColName=y -DmodelName=lm_test_input_model_out;
参数 是否必选 描述 默认值 inputTableName 是 输入表的名称。 无 modelName 是 输出模型的名称。 无 outputTableName 否 输出的模型评估表名称。如果enableFitGoodness为true,则该参数必选。 无 labelColName 是 因变量,支持DOUBLE及BIGINT类型。只能选择一列作为因变量。 无 featureColNames 是 自变量。如果输入数据为稠密格式,则支持DOUBLE及BIGINT类型。如果输入数据为稀疏格式,则支持STRING类型。 无 inputTablePartitions 否 输入表的分区。 无 enableSparse 否 输入数据是否为稀疏格式,取值范围为{true,false}。 false itemDelimiter 否 KV对之间的分隔符。如果enableSparse为true,则该参数生效。 英文逗号(,) kvDelimiter 否 keyvalue之间的分隔符。如果enableSparse为true,则该参数生效。 英文冒号(:) maxIter 否 算法进行的最大迭代次数。 100 epsilon 否 最小似然误差。如果两次迭代间的Log Likelihood之差小于该值,则算法终止。 0.000001 regularizedType 否 正则化类型,取值范围为{l1,l2,None}。 None regularizedLevel 否 正则系数。如果regularizedType为None,则该参数失效。 1 enableFitGoodness 否 是否生成模型评估表。指标包括R-Squared、AdjustedR-Squared、AIC、自由度、残差的标准差及偏差。取值范围为{true,false}。 false enableCoefficientEstimate 否 是否进行回归系数评估。评估指标包括T值、P值及置信区间[2.5%,97.5%]。如果enableFitGoodness为true,则该参数生效。取值范围为{true,false}。 false lifecycle 否 模型评估输出表的生命周期。 -1 coreNum 否 计算的核心数量。 系统自动分配 memSizePerCore 否 每个核心的内存,取值范围为1024 MB~20*1024 MB。 系统自动分配
线性回归示例
- 使用SQL语句,生成测试数据。
drop table if exists lm_test_input; create table lm_test_input as select * from ( select 10 as y, 1.84 as x1, 1 as x2, '0:1.84 1:1' as sparsecol1 from dual union all select 20 as y, 2.13 as x1, 0 as x2, '0:2.13' as sparsecol1 from dual union all select 30 as y, 3.89 as x1, 0 as x2, '0:3.89' as sparsecol1 from dual union all select 40 as y, 4.19 as x1, 0 as x2, '0:4.19' as sparsecol1 from dual union all select 50 as y, 5.76 as x1, 0 as x2, '0:5.76' as sparsecol1 from dual union all select 60 as y, 6.68 as x1, 2 as x2, '0:6.68 1:2' as sparsecol1 from dual union all select 70 as y, 7.58 as x1, 0 as x2, '0:7.58' as sparsecol1 from dual union all select 80 as y, 8.01 as x1, 0 as x2, '0:8.01' as sparsecol1 from dual union all select 90 as y, 9.02 as x1, 3 as x2, '0:9.02 1:3' as sparsecol1 from dual union all select 100 as y, 10.56 as x1, 0 as x2, '0:10.56' as sparsecol1 from dual ) tmp;
- 使用PAI命令,提交线性回归组件参数。
PAI -name linearregression -project algo_public -DinputTableName=lm_test_input -DlabelColName=y -DfeatureColNames=x1,x2 -DmodelName=lm_test_input_model_out -DoutputTableName=lm_test_input_conf_out -DenableCoefficientEstimate=true -DenableFitGoodness=true -Dlifecycle=1;
- 使用PAI命令,提交预测组件参数。
pai -name prediction -project algo_public -DmodelName=lm_test_input_model_out -DinputTableName=lm_test_input -DoutputTableName=lm_test_input_predict_out -DappendColNames=y;
- 查看输出的模型评估表lm_test_input_conf_out。
+------------+------------+------------+------------+--------------------+------------+ | colname | value | tscore | pvalue | confidenceinterval | p | +------------+------------+------------+------------+--------------------+------------+ | Intercept | -6.42378496687763 | -2.2725755951390028 | 0.06 | {"2.5%": -11.964027, "97.5%": -0.883543} | coefficient | | x1 | 10.260063429838898 | 23.270944360826963 | 0.0 | {"2.5%": 9.395908, "97.5%": 11.124219} | coefficient | | x2 | 0.35374498323846265 | 0.2949247320997519 | 0.81 | {"2.5%": -1.997160, "97.5%": 2.704650} | coefficient | | rsquared | 0.9879675667384592 | NULL | NULL | NULL | goodness | | adjusted_rsquared | 0.9845297286637332 | NULL | NULL | NULL | goodness | | aic | 59.331109494251805 | NULL | NULL | NULL | goodness | | degree_of_freedom | 7.0 | NULL | NULL | NULL | goodness | | standardErr_residual | 3.765777749448906 | NULL | NULL | NULL | goodness | | deviance | 99.26757440771128 | NULL | NULL | NULL | goodness | +------------+------------+------------+------------+--------------------+------------+
- 查看预测结果表lm_test_input_predict_out。
+------------+-------------------+------------------+-------------------+ | y | prediction_result | prediction_score | prediction_detail | +------------+-------------------+------------------+-------------------+ | 10 | NULL | 12.808476727264404 | {"y": 12.8084767272644} | | 20 | NULL | 15.43015013867922 | {"y": 15.43015013867922} | | 30 | NULL | 33.48786177519568 | {"y": 33.48786177519568} | | 40 | NULL | 36.565880804147355 | {"y": 36.56588080414735} | | 50 | NULL | 52.674180388994415 | {"y": 52.67418038899442} | | 60 | NULL | 62.82092871092313 | {"y": 62.82092871092313} | | 70 | NULL | 71.34749583130122 | {"y": 71.34749583130122} | | 80 | NULL | 75.75932310613193 | {"y": 75.75932310613193} | | 90 | NULL | 87.1832221199846 | {"y": 87.18322211998461} | | 100 | NULL | 101.92248485222113 | {"y": 101.9224848522211} | +------------+-------------------+------------------+-------------------+
PS-SMART回归
参数服务器PS(Parameter Server)致力于解决大规模的离线及在线训练任务,SMART(Scalable Multiple Additive Regression Tree)是GBDT(Gradient Boosting Decesion Tree)基于PS实现的迭代算法。PS-SMART支持百亿样本及几十万特征的训练任务,可以在上千节点中运行。同时,PS-SMART支持多种数据格式及直方图近似等优化技术。
PAI-Studio支持通过可视化或PAI命令方式,配置PS-SMART回归组件的参数:
- 可视化方式
页签 参数 描述 字段设置 是否稀疏格式 稀疏格式的KV之间使用空格分隔,key与value之间使用英文冒号(:)分隔。例如1:0.3 3:0.9。 选择特征列 输入表中,用于训练的特征列。如果输入数据是Dense格式,则只能选择数值(BIGINT或DOUBLE)类型。如果输入数据是Sparse KV格式,且key和value是数值类型,则只能选择STRING类型。 选择标签列 输入表的标签列,支持STRING及数值类型。如果是内部存储,则仅支持数值类型。例如二分类中的0和1。 选择权重列 列可以对每行样本进行加权,支持数值类型。 参数设置 目标函数类型 支持Linear regression、Logistic regression、Poisson regression、Gamma regression及Tweedie regression类型。 Tweedie分布指数 Tweedie分布的方差和均值关系指数。 评估指标类型 支持rooted mean square error、mean absolute error、negative loglikelihood for logistic regression、negative loglikelihood for poisson regression、residual deviance for gamma regression、negative log-likelihood for gamma regression、negative log-likelihood for Tweedie regression及无类型。 树数量 训练数据量与树数量成正比。 树最大深度 默认值为5,即最多32个叶子节点。 数据采样比例 构建每棵树时,采样部分数据进行学习,构建弱学习器,从而加快训练。 特征采样比例 构建每棵树时,采样部分特征进行学习,构建弱学习器,从而加快训练。 L1惩罚项系数 控制叶子节点大小。该参数值越大,叶子节点规模分布越均匀。如果过拟合,则增大该参数值。 L2惩罚项系数 控制叶子节点大小。该参数值越大,叶子节点规模分布越均匀。如果过拟合,则增大该参数值。 学习速率 取值范围为(0,1)。 近似Sketch精度 构造Sketch的切割分位点阈值。该参数值越小,获得的桶越多。一般使用默认值0.03,无需手动配置。 最小分裂损失变化 分裂节点所需要的最小损失变化。该参数值越大,分裂越保守。 特征数量 特征数量或最大特征ID。如果估计使用资源时,未配置该参数,则系统会启动SQL任务自动计算。 全局偏置项 所有样本的初始预测值。 特征重要性类型 支持模型中,该特征做为分裂特征的次数、模型中,该特征带来的信息增益及模型中,该特征在分裂节点覆盖的样本数类型。 执行调优 核心数 默认为系统自动分配。 每个核的内存大小 单个核心使用的内存,单位为MB。通常无需手动配置,系统会自动分配。 - PAI命令方式
#训练。 PAI -name ps_smart -project algo_public -DinputTableName="smart_regression_input" -DmodelName="xlab_m_pai_ps_smart_bi_545859_v0" -DoutputTableName="pai_temp_24515_545859_2" -DoutputImportanceTableName="pai_temp_24515_545859_3" -DlabelColName="label" -DfeatureColNames="features" -DenableSparse="true" -Dobjective="reg:linear" -Dmetric="rmse" -DfeatureImportanceType="gain" -DtreeCount="5"; -DmaxDepth="5" -Dshrinkage="0.3" -Dl2="1.0" -Dl1="0" -Dlifecycle="3" -DsketchEps="0.03" -DsampleRatio="1.0" -DfeatureRatio="1.0" -DbaseScore="0.5" -DminSplitLoss="0" #预测。 PAI -name prediction -project algo_public -DinputTableName="smart_regression_input"; -DmodelName="xlab_m_pai_ps_smart_bi_545859_v0" -DoutputTableName="pai_temp_24515_545860_1" -DfeatureColNames="features" -DappendColNames="label,features" -DenableSparse="true" -Dlifecycle="28"
模块 参数 是否必选 描述 默认值 数据参数 featureColNames 是 输入表中,用于训练的特征列。如果输入表是Dense格式,则只能选择数值(BIGINT或DOUBLE)类型。如果输入表是Sparse KV格式,且KV格式中key和value是数值类型,则只能选择STRING类型。 无 labelColName 是 输入表的标签列,支持STRING及数值类型。如果是内部存储,则仅支持数值类型。例如二分类中的0和1。 无 weightCol 否 列可以对每行样本进行加权,支持数值类型。 无 enableSparse 否 是否为稀疏格式,取值范围为{true,false}。稀疏格式的KV之间使用空格分隔,key与value之间使用英文冒号(:)分隔。例如1:0.3 3:0.9。 false inputTableName 是 输入表的名称。 无 modelName 是 输出的模型名称。 无 outputImportanceTableName 否 输出特征重要性的表名。 无 inputTablePartitions 否 格式为ds=1/pt=1。 无 outputTableName 否 输出至MaxCompute的表,二进制格式,不支持读取,只能通过SMART的预测组件获取。 无 lifecycle 否 输出表的生命周期。 3 算法参数 objective 是 目标函数类型。支持以下类型: - reg:linear:Linear Regression
- reg:logistic:Logistic Regression
- count:poisson:Poisson Regression
- reg:gamma:Gamma Regression
- reg:tweedie:Tweedie Regression
reg:linear metric 否 训练集的评估指标类型,输出在logview文件coordinator区域的stdout。支持以下类型: - rmse:对应可视化方式的rooted mean square error类型。
- mae:对应可视化方式中的mean absolute error类型。
- logistic-nloglik:对应可视化方式中的negative loglikelihood for logistic regression类型。
- poisson-nloglik:对应可视化方式中的negative loglikelihood for poisson regression类型。
- gamma-deviance:对应可视化方式中的residual deviance for gamma regression类型。
- gamma-nloglik:对应可视化方式中的negative log-likelihood for gamma regression类型。
- tweedie-nloglik:对应可视化方式中的negative log-likelihood for Tweedie regression类型。
无 treeCount 否 树数量,与训练时间成正比。 1 maxDepth 否 树的最大深度,取值范围为1~20。 5 sampleRatio 否 数据采样比例,取值范围为(0,1]。如果取值为1.0,则表示不采样。 1.0 featureRatio 否 特征采样比例,取值范围为(0,1]。如果取值为1.0,则表示不采样。 1.0 l1 否 L1惩罚项系数。该参数值越大,叶子节点分布越均匀。如果过拟合,则增大该参数值。 0 l2 否 L2惩罚项系数。该参数值越大,叶子节点分布越均匀。如果过拟合,则增大该参数值。 1.0 shrinkage 否 学习速率,取值范围为(0,1)。 0.3 sketchEps 否 构造Sketch的切割分位点阈值,桶数为O(1.0/sketchEps)。该参数值越小,获得的桶越多。一般使用默认值,无需手动配置。取值范围为(0,1)。 0.03 minSplitLoss 否 分裂节点所需要的最小损失变化。该参数值越大,分裂越保守。 0 featureNum 否 特征数量或最大特征ID。如果估计使用资源时,未配置该参数,则系统会启动SQL任务自动计算。 无 baseScore 否 所有样本的初始预测值。 0.5 featureImportanceType 否 计算特征重要性的类型,包括: - weight:在模型中,该特征作为分裂特征的次数。
- gain:在模型中,该特征带来的信息增益。
- cover:在模型中,该特征在分裂节点覆盖的样本数。
gain tweedieVarPower 否 Tweedie分布的方差和均值关系指数。 1.5 调优参数 coreNum 否 核心数量,该参数值越大,算法运行越快。 系统自动分配 memSizePerCore 否 每个核心使用的内存,单位为MB。 系统自动分配
PS-SMART回归示例
- 使用如下SQL语句,生成输入数据(以KV格式数据为例)。
生成的数据如下。drop table if exists smart_regression_input; create table smart_regression_input as select * from ( select 2.0 as label, '1:0.55 2:-0.15 3:0.82 4:-0.99 5:0.17' as features from dual union all select 1.0 as label, '1:-1.26 2:1.36 3:-0.13 4:-2.82 5:-0.41' as features from dual union all select 1.0 as label, '1:-0.77 2:0.91 3:-0.23 4:-4.46 5:0.91' as features from dual union all select 2.0 as label, '1:0.86 2:-0.22 3:-0.46 4:0.08 5:-0.60' as features from dual union all select 1.0 as label, '1:-0.76 2:0.89 3:1.02 4:-0.78 5:-0.86' as features from dual union all select 1.0 as label, '1:2.22 2:-0.46 3:0.49 4:0.31 5:-1.84' as features from dual union all select 0.0 as label, '1:-1.21 2:0.09 3:0.23 4:2.04 5:0.30' as features from dual union all select 1.0 as label, '1:2.17 2:-0.45 3:-1.22 4:-0.48 5:-1.41' as features from dual union all select 0.0 as label, '1:-0.40 2:0.63 3:0.56 4:0.74 5:-1.44' as features from dual union all select 1.0 as label, '1:0.17 2:0.49 3:-1.50 4:-2.20 5:-0.35' as features from dual ) tmp;
- 构建实验,详情请参见算法建模。
- 配置PS-SMART回归组件的参数(配置如下表格中的参数,其余参数使用默认值)。
页签 参数 描述 字段设置 是否稀疏格式 选中是否稀疏格式复选框。 特征列 选择features列。 标签列 选择label列。 参数设置 目标函数类别 配置为Linear regression。 评估指标类型 选择rooted mean square error。 树数量 配置为5。 - 配置统一预测组件的参数(配置如下表格中的参数,其余参数使用默认值)。
页签 参数 描述 字段设置 特征列 默认全选,多余列不影响预测结果。 原样输出列 选择为label列。 稀疏矩阵 选中稀疏矩阵复选框。 key与value分隔符 配置为英文冒号(:)。 kv对间的分隔符 配置为空格或\u0020。 - 配置PS-SMART预测组件的参数(配置如下表格中的参数,其余参数使用默认值)。
页签 参数 描述 字段设置 特征列 默认全选,多余列不影响预测结果。 原样输出列 选择label列。 稀疏矩阵 选中稀疏矩阵复选框。 key与value分隔符 配置为英文冒号(:)。 kv对间的分隔符 配置为空格或\u0020。 - 运行实验,查看统一预测组件的预测结果。
- 查看PS-Smart预测组件的预测结果。
其中prediction_score列表示预测值,leaf_index列表示预测的叶子节点编号。
- 右键单击PS-SMART回归组件,在快捷菜单,选择 ,查看特征重要性。
其中id列表示传入的特征序号。因为该示例的输入数据是KV格式,所以id列表示KV对中的key。该特性重要性表中仅有2个特性,表示树在分裂过程中仅使用了这两个特性,可以认为其他特性的特征重要性为0。value列表示特征重要性类型,默认为gain,即该特征对模型带来的信息增益之和。
相关说明:
- PS-SMART回归组件的目标列仅支持数值类型。如果MaxCompute表数据是STRING类型,则需要进行类型转换。
- 如果数据是KV格式,则特征ID必须为正整数,特征值必须为实数。如果特征ID为字符串类型,则需要使用序列化组件进行序列化。如果特征值为类别型字符串,需要进行特征离散化等特征工程处理。
- 虽然PS-SMART回归组件支持数十万特征任务,但是消耗资源大且运行速度慢,可以使用GBDT类算法进行训练。GBDT类算法适合直接使用连续特征进行训练,除需要对类别特征进行One-Hot编码(筛除低频特征)外,不建议对其他连续型数值特征进行离散化。
- PS-SMART算法会引入随机性。例如,data_sample_ratio及fea_sample_ratio表示的数据和特征采样、算法使用的直方图近似优化及局部Sketch归并为全局Sketch的顺序随机性。虽然多个Worker分布式执行时,树结构不同,但是从理论上可以保证模型效果相近。如果您在训练过程中,使用相同数据和参数,多次得到的结果不一致,属于正常现象。
- 如果需要加速训练,可以增大计算核心数。因为PS-SMART算法需要所有服务器获得资源后,才能开始训练,所以集群忙碌时,申请较多资源会增加等待时间。
PS线性回归
线性回归(Linear Regression)是分析因变量和多个自变量之间的线性关系模型,参数服务器PS(Parameter Server)致力于解决大规模的离线及在线训练任务。PS线性回归支持千亿样本、十亿特征的大规模线性训练任务。
PAI-Studio支持通过可视化或PAI命令的方式,配置该组件参数:
- 可视化方式
页签 参数 描述 字段设置 选择特征列 输入数据源中,参与训练的特征列。 选择标签列 支持DOUBLE及BIGINT类型。 是否稀疏格式 使用KV格式表示稀疏格式。 kv间的分隔符 默认使用空格分隔。 key与value分隔符 默认使用英文冒号(:)分隔。 参数设置 L1 weight L1正则化系数。该参数值越大,表示模型非零元素越少。如果过拟合,则增大该参数值。 L2 weight L2正则化系数。该参数值越大,表示模型参数绝对值越小。如果过拟合,则增大该参数值。 最大迭代次数 算法进行的最大迭代次数。如果最大迭代次数为0,则算法迭代次数无限制。 最小收敛误差 优化算法终止条件。 最大特征ID 最大的特征ID或特征维度,该参数取值可以大于实际值。如果未配置该参数,则系统启动SQL任务自动计算。 执行调优 核心数 默认为系统自动分配。 每个核的内存大小 默认为系统自动分配。 - PAI命令方式
#训练。 PAI -name ps_linearregression -project algo_public -DinputTableName="lm_test_input" -DmodelName="linear_regression_model" -DlabelColName="label" -DfeatureColNames="features" -Dl1Weight=1.0 -Dl2Weight=0.0 -DmaxIter=100 -Depsilon=1e-6 -DenableSparse=true #预测。 drop table if exists logistic_regression_predict; PAI -name prediction -DmodelName="linear_regression_model" -DoutputTableName="linear_regression_predict" -DinputTableName="lm_test_input" -DappendColNames="label,features" -DfeatureColNames="features" -DenableSparse=true
参数 是否必选 描述 默认值 inputTableName 是 输入表的名称。 无 modelName 是 输出模型的名称。 无 outputTableName 否 输出的模型评估表名称。如果enableFitGoodness为true,则该参数必选。 无 labelColName 是 输入表的标签列名,支持DOUBLE及BIGINT类型。 无 featureColNames 是 输入表中,用于训练的特征列名。如果输入数据为稠密格式,则支持DOUBLE及BIGINT类型。如果输入数据为稀疏格式,则支持STRING类型。 无 inputTablePartitions 否 输入表的分区。 无 enableSparse 否 输入数据是否为稀疏格式,取值范围为{true,false}。 false itemDelimiter 否 KV对之间的分隔符。如果enableSparse为true,则该参数生效。 空格 kvDelimiter 否 keyvalue之间的分隔符。如果enableSparse为true,则该参数生效。 英文冒号(:) enableModelIo 否 是否输出到Offline Model。如果enableModelIo为false,则将模型输出到MaxCompute表。取值范围为{true,false}。 true maxIter 否 算法进行的最大迭代次数,取值范围为非负整数。 100 epsilon 否 优化算法终止条件,取值范围为[0,1]。 0.000001 l1Weight 否 L1正则化系数。该参数值越大,模型非零元素越少。如果过拟合,则增大该参数值。 1.0 l2Weight 否 L2正则化系数。该参数值越大,模型参数绝对值越小。如果过拟合,则增大该参数值。 0 modelSize 否 最大的特征ID或特征维度,该参数取值可以大于实际值。如果未配置该参数,则系统启动SQL任务自动计算。取值范围为非负整数。 0 coreNum 否 计算的核心数量。 系统自动分配 memSizePerCore 否 每个核心的内存,单位为MB。 系统自动分配
PS线性回归示例
- 使用如下SQL语句,生成输入数据(以KV格式数据为例)。
生成的数据如下。drop table if exists lm_test_input; create table lm_test_input as select * from ( select 2 as label, '1:0.55 2:-0.15 3:0.82 4:-0.99 5:0.17' as features from dual union all select 1 as label, '1:-1.26 2:1.36 3:-0.13 4:-2.82 5:-0.41' as features from dual union all select 1 as label, '1:-0.77 2:0.91 3:-0.23 4:-4.46 5:0.91' as features from dual union all select 2 as label, '1:0.86 2:-0.22 3:-0.46 4:0.08 5:-0.60' as features from dual union all select 1 as label, '1:-0.76 2:0.89 3:1.02 4:-0.78 5:-0.86' as features from dual union all select 1 as label, '1:2.22 2:-0.46 3:0.49 4:0.31 5:-1.84' as features from dual union all select 0 as label, '1:-1.21 2:0.09 3:0.23 4:2.04 5:0.30' as features from dual union all select 1 as label, '1:2.17 2:-0.45 3:-1.22 4:-0.48 5:-1.41' as features from dual union all select 0 as label, '1:-0.40 2:0.63 3:0.56 4:0.74 5:-1.44' as features from dual union all select 1 as label, '1:0.17 2:0.49 3:-1.50 4:-2.20 5:-0.35' as features from dual ) tmp;
说明 KV格式数据的特征ID必须为正整数,特征值必须为实数。如果特征ID为字符串,则需要进行序列化操作。如果特征值为类别型字符串,则需要进行特征离散化操作。 - 构建实验,详情请参见算法建模。
- 配置PS线性回归组件的参数(配置如下表格中的参数,其余参数使用默认值)。
页签 参数 描述 字段设置 是否稀疏格式 选择true。 选择特征列 选择features列。 选择标签列 选择label列。 执行调优 核心数 配置为3。 每个核的内存大小 配置为1024 MB。 - 配置预测组件的参数(配置如下表格中的参数,其余参数使用默认值)。
页签 参数 描述 字段设置 特征列 默认全选,多余列不影响预测结果。 原样输出列 选择label列。 稀疏矩阵 选中稀疏矩阵复选框。 key与value分隔符 配置为英文冒号(:)。 kv对间的分隔符 配置为\u0020。 - 运行实验,查看预测结果。
在文档使用中是否遇到以下问题
更多建议
匿名提交