线性回归(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 输出的模型评估表名称。如果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语句,生成输入数据(以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;
    生成的数据如下。11
    说明 KV格式数据的特征ID必须为正整数,特征值必须为实数。如果特征ID为字符串,则需要进行序列化操作。如果特征值为类别型字符串,则需要进行特征离散化操作。
  2. 构建实验,详情请参见算法建模PS线性回归实验模型
  3. 配置PS线性回归组件的参数(配置如下表格中的参数,其余参数使用默认值)。
    页签 参数 描述
    字段设置 是否稀疏格式 选择true
    选择特征列 选择features列。
    选择标签列 选择label列。
    执行调优 核心数 配置为3
    每个核的内存大小 配置为1024 MB。
  4. 配置预测组件的参数(配置如下表格中的参数,其余参数使用默认值)。
    页签 参数 描述
    字段设置 特征列 默认全选,多余列不影响预测结果。
    原样输出列 选择label列。
    稀疏矩阵 选中稀疏矩阵复选框。
    key与value分隔符 配置为英文冒号(:)。
    kv对间的分隔符 配置为\u0020
  5. 运行实验,查看预测结果。PS线性回归预测结果