PS线性回归是一种结合了线性回归模型和参数服务器(Parameter Server)架构的机器学习算法。它旨在处理因变量和多个自变量之间的线性关系,特别适用于大规模数据集的训练任务,支持处理千亿样本和十亿特征的数据量。通过参数服务器架构,PS线性回归能够有效地分布式计算和存储模型参数,从而提升训练效率和可扩展性。
配置组件
方式一:可视化方式
在Designer工作流页面添加PS线性回归组件,并在界面右侧配置相关参数:
参数类型 | 参数 | 描述 |
参数类型 | 参数 | 描述 |
字段设置 | 选择特征列 | 输入数据源中,参与训练的特征列。 |
选择标签列 | 支持DOUBLE及BIGINT类型。 | |
是否稀疏格式 | 使用KV格式表示稀疏格式。 | |
kv间的分隔符 | 默认使用空格分隔。 | |
key与value分隔符 | 默认使用半角冒号(:)分隔。 | |
参数设置 | L1 weight | L1正则化系数。该参数值越大,表示模型非零元素越少。如果过拟合,则增大该参数值。 |
L2 weight | L2正则化系数。该参数值越大,表示模型参数绝对值越小。如果过拟合,则增大该参数值。 | |
最大迭代次数 | 算法进行的最大迭代次数。如果最大迭代次数为0,则算法迭代次数无限制。 | |
最小收敛误差 | 优化算法终止条件。 | |
最大特征ID | 最大的特征ID或特征维度,该参数取值可以大于实际值。如果未配置该参数,则系统启动SQL任务自动计算。 | |
执行调优 | 核心数 | 默认为系统自动分配。 |
每个核的内存大小 | 默认为系统自动分配。 |
方式二:PAI命令方式
使用PAI命令配置PS线性回归组件参数。您可以使用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 | 否 | false | 输入数据是否为稀疏格式,取值范围为{true,false}。 |
itemDelimiter | 否 | 空格 | KV对之间的分隔符。如果enableSparse为true,则该参数生效。 |
kvDelimiter | 否 | 半角冒号(:) | keyvalue之间的分隔符。如果enableSparse为true,则该参数生效。 |
enableModelIo | 否 | true | 是否输出到Offline Model。如果enableModelIo为false,则将模型输出到MaxCompute表。取值范围为{true,false}。 |
maxIter | 否 | 100 | 算法进行的最大迭代次数,取值范围为非负整数。 |
epsilon | 否 | 0.000001 | 优化算法终止条件,取值范围为[0,1]。 |
l1Weight | 否 | 1.0 | L1正则化系数。该参数值越大,模型非零元素越少。如果过拟合,则增大该参数值。 |
l2Weight | 否 | 0 | L2正则化系数。该参数值越大,模型参数绝对值越小。如果过拟合,则增大该参数值。 |
modelSize | 否 | 0 | 最大的特征ID或特征维度,该参数取值可以大于实际值。如果未配置该参数,则系统启动SQL任务自动计算。取值范围为非负整数。 |
coreNum | 否 | 系统自动分配 | 默认为系统自动分配。 |
memSizePerCore | 否 | 系统自动分配 | 默认为系统自动分配。 |
示例
使用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组件,在快捷菜单中,选择
。
- 本页导读 (1)
- 配置组件
- 方式一:可视化方式
- 方式二:PAI命令方式
- 示例