文档

PS线性回归

更新时间:

线性回归(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

输出的模型评估表名称。如果enableFitGoodnesstrue,则该参数必选。

labelColName

输入表的标签列名,支持DOUBLE及BIGINT类型。

featureColNames

输入表中,用于训练的特征列名。如果输入数据为稠密格式,则支持DOUBLE及BIGINT类型。如果输入数据为稀疏格式,则支持STRING类型。

inputTablePartitions

输入表的分区。

enableSparse

输入数据是否为稀疏格式,取值范围为{true,false}

false

itemDelimiter

KV对之间的分隔符。如果enableSparsetrue,则该参数生效。

空格

kvDelimiter

keyvalue之间的分隔符。如果enableSparsetrue,则该参数生效。

半角冒号(:)

enableModelIo

是否输出到Offline Model。如果enableModelIofalse,则将模型输出到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。

系统自动分配

示例

  1. 使用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;

    生成的数据如下。11

    说明

    KV格式数据的特征ID必须为正整数,特征值必须为实数。如果特征ID为字符串,则需要进行序列化操作。如果特征值为类别型字符串,则需要进行特征离散化操作。

  2. 构建如下工作流,详情请参见算法建模image

  3. 配置组件参数。

    1. 单击读数据表-1组件,在右侧表选择页签中,配置表名为lm_test_input。

    2. 配置PS线性回归组件的参数(配置如下表格中的参数,其余参数使用默认值)。

      页签

      参数

      描述

      字段设置

      是否稀疏格式

      选择true

      选择特征列

      选择features列。

      选择标签列

      选择label列。

      执行调优

      核心数

      配置为3

      每个核的内存大小

      配置为1024 MB。

    3. 配置预测组件的参数(配置如下表格中的参数,其余参数使用默认值)。

      页签

      参数

      描述

      字段设置

      特征列

      选择features列。

      原样输出列

      选择label列和features列。

      稀疏矩阵

      选中稀疏矩阵复选框。

      key与value分隔符

      配置为半角冒号(:)。

      kv对间的分隔符

      使用空格作为分隔符,留空即可。

  4. 单击画布中的运行按钮image,运行工作流。

  5. 工作流运行成功后,右键单击预测-1组件,在快捷菜单中,选择查看数据 > 预测结果输出PS线性回归预测结果