线性回归(Linear Regression)是分析因变量和多个自变量之间的线性关系模型,参数服务器PS(Parameter Server)致力于解决大规模的离线及在线训练任务。PS线性回归支持千亿样本、十亿特征的大规模线性训练任务。
组件配置
您可以使用以下任意一种方式,配置PS线性回归组件参数。
方式一:可视化方式
在Designer工作流页面配置组件参数。
页签 | 参数 | 描述 |
字段设置 | 选择特征列 | 输入数据源中,参与训练的特征列。 |
选择标签列 | 支持DOUBLE及BIGINT类型。 | |
是否稀疏格式 | 使用KV格式表示稀疏格式。 | |
kv间的分隔符 | 默认使用空格分隔。 | |
key与value分隔符 | 默认使用半角冒号(:)分隔。 | |
参数设置 | L1 weight | L1正则化系数。该参数值越大,表示模型非零元素越少。如果过拟合,则增大该参数值。 |
L2 weight | L2正则化系数。该参数值越大,表示模型参数绝对值越小。如果过拟合,则增大该参数值。 | |
最大迭代次数 | 算法进行的最大迭代次数。如果最大迭代次数为0,则算法迭代次数无限制。 | |
最小收敛误差 | 优化算法终止条件。 | |
最大特征ID | 最大的特征ID或特征维度,该参数取值可以大于实际值。如果未配置该参数,则系统启动SQL任务自动计算。 | |
执行调优 | 核心数 | 默认为系统自动分配。 |
每个核的内存大小 | 默认为系统自动分配。 |
方式二:PAI命令方式
使用PAI命令方式,配置该组件参数。您可以使用SQL脚本组件进行PAI命令调用,详情请参见SQL脚本。
#训练。
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。 | 系统自动分配 |
示例
使用SQL脚本执行如下SQL语句,生成输入数据(以KV格式数据为例)。
drop table if exists lm_test_input; create table lm_test_input as select * from ( select cast(2 as BIGINT) as label, '1:0.55 2:-0.15 3:0.82 4:-0.99 5:0.17' as features union all select cast(1 as BIGINT) as label, '1:-1.26 2:1.36 3:-0.13 4:-2.82 5:-0.41' as features union all select cast(1 as BIGINT) as label, '1:-0.77 2:0.91 3:-0.23 4:-4.46 5:0.91' as features union all select cast(2 as BIGINT) as label, '1:0.86 2:-0.22 3:-0.46 4:0.08 5:-0.60' as features union all select cast(1 as BIGINT) as label, '1:-0.76 2:0.89 3:1.02 4:-0.78 5:-0.86' as features union all select cast(1 as BIGINT) as label, '1:2.22 2:-0.46 3:0.49 4:0.31 5:-1.84' as features union all select cast(0 as BIGINT) as label, '1:-1.21 2:0.09 3:0.23 4:2.04 5:0.30' as features union all select cast(1 as BIGINT) as label, '1:2.17 2:-0.45 3:-1.22 4:-0.48 5:-1.41' as features union all select cast(0 as BIGINT) as label, '1:-0.40 2:0.63 3:0.56 4:0.74 5:-1.44' as features union all select cast(1 as BIGINT) as label, '1:0.17 2:0.49 3:-1.50 4:-2.20 5:-0.35' as features ) tmp;
生成的数据如下。
说明KV格式数据的特征ID必须为正整数,特征值必须为实数。如果特征ID为字符串,则需要进行序列化操作。如果特征值为类别型字符串,则需要进行特征离散化操作。
构建如下工作流,详情请参见算法建模。
配置组件参数。
单击读数据表-1组件,在右侧表选择页签中,配置表名为lm_test_input。
配置PS线性回归组件的参数(配置如下表格中的参数,其余参数使用默认值)。
页签
参数
描述
字段设置
是否稀疏格式
选择true。
选择特征列
选择features列。
选择标签列
选择label列。
执行调优
核心数
配置为3。
每个核的内存大小
配置为1024 MB。
配置预测组件的参数(配置如下表格中的参数,其余参数使用默认值)。
页签
参数
描述
字段设置
特征列
选择features列。
原样输出列
选择label列和features列。
稀疏矩阵
选中稀疏矩阵复选框。
key与value分隔符
配置为半角冒号(:)。
kv对间的分隔符
使用空格作为分隔符,留空即可。
单击画布中的运行按钮,运行工作流。
工作流运行成功后,右键单击预测-1组件,在快捷菜单中,选择
。