经典逻辑回归是一个二分类算法,支持稀疏及稠密数据格式。
组件配置
您可以使用以下任意一种方式,配置逻辑回归二分类组件参数。
方式一:可视化方式
在Designer工作流页面配置组件参数。
页签 | 参数 | 描述 |
字段设置 | 训练特征列 | 输入数据源中,用于训练的特征列。支持DOUBLE及BIGINT类型。 说明 特征数量不能超过两千万。 |
目标列 | 输入数据源中,目标列名称。 | |
正类值 | 无。 | |
是否稀疏数据 | 输入数据是否为稀疏格式。 | |
参数设置 | 正则项 | 支持None、L1及L2类型。 |
最大迭代次数 | 默认值为100。 | |
正则系数 | 如果 正则项为None,则该参数失效。 | |
最小收敛误差 | 默认值为0.000001。 | |
执行调优 | 核数目 | 系统自动分配。 |
每个核内存数 | 系统自动分配。 |
方式二:PAI命令方式
使用PAI命令方式,配置该组件参数。您可以使用SQL脚本组件进行PAI命令调用,详情请参见SQL脚本。
PAI -name logisticregression_binary
-project algo_public
-DmodelName="xlab_m_logistic_regression_6096"
-DregularizedLevel="1"
-DmaxIter="100"
-DregularizedType="l1"
-Depsilon="0.000001"
-DlabelColName="y"
-DfeatureColNames="pdays,emp_var_rate"
-DgoodValue="1"
-DinputTableName="bank_data"
参数名称 | 是否必选 | 参数描述 | 默认值 |
inputTableName | 是 | 输入表的表名。 | 无 |
featureColNames | 否 | 输入表中,用于训练的特征列名。 说明 特征数量不能超过两千万。 | 所有数值列 |
labelColName | 是 | 输入表的标签列名。 | 无 |
inputTablePartitions | 否 | 输入表中,参与训练的分区。系统支持的格式包括:
说明 指定多个分区时,分区间使用英文逗号(,)分隔。 | 全表 |
modelName | 是 | 输出的模型名。 | 无 |
regularizedType | 否 | 正则化类型,取值范围为{‘l1’,’l2’,’None’}。 | l1 |
regularizedLevel | 否 | 正则化系数。如果 regularizedType为None,则该参数失效。 | 1.0 |
maxIter | 否 | L-BFGS的最大迭代次数。 | 100 |
epsilon | 否 | 收敛误差。该参数是L-BFGS算法的终止条件,即两次迭代的log-likelihood之差小于该值,迭代终止。 | 1.0e-06 |
goodValue | 否 | 目标基准值。二分类时,指定训练系数针对的 label值。如果为空,则系统随机分配。 | 无 |
enableSparse | 否 | 输入数据是否为稀疏格式,取值范围为{true,false}。 | false |
itemDelimiter | 否 | 输入表数据为稀疏格式时,KV对之间的分隔符。 | 英文逗号(,) |
kvDelimiter | 否 | 输入表数据为稀疏格式时,key和value之间的分隔符。 | 英文冒号(:) |
coreNum | 否 | 核心数量。 | 系统自动分配 |
memSizePerCore | 否 | 单个核心使用的内存数,单位为MB。 | 系统自动分配 |
PAI使用KV格式表示稀疏数据,如下表所示。其中itemDelimiter表示KV对之间的分隔符,kvDelimiter表示key和value之间的分隔符。
key_value |
1:100,4:200,5:300 |
1:10,2:20,3:30 |
KV格式使用索引(从0开始)表示key。如果使用字符表示key,则系统报错。
示例
使用SQL语句,生成训练数据。
drop table if exists lr_test_input; create table lr_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 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 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 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 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 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 ) a;
生成的训练数据表lr_test_input如下。
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命令,提交逻辑回归二分类组件的训练参数。
drop offlinemodel if exists lr_test_model; PAI -name logisticregression_binary -project algo_public -DmodelName="lr_test_model" -DitemDelimiter="," -DregularizedLevel="1" -DmaxIter="100" -DregularizedType="None" -Depsilon="0.000001" -DkvDelimiter=":" -DlabelColName="label" -DfeatureColNames="f0,f1,f2,f3" -DenableSparse="false" -DgoodValue="1" -DinputTableName="lr_test_input";
使用PAI命令,提交预测组件参数。更多参数说明,请参见预测。
drop table if exists lr_test_prediction_result; PAI -name prediction -project algo_public -DdetailColName="prediction_detail" -DmodelName="lr_test_model" -DitemDelimiter="," -DresultColName="prediction_result" -Dlifecycle="28" -DoutputTableName="lr_test_prediction_result" -DscoreColName="prediction_score" -DkvDelimiter=":" -DinputTableName="lr_test_input" -DenableSparse="false" -DappendColNames="label";
查看预测结果表lr_test_prediction_result。
label
prediction_result
prediction_score
prediction_detail
0
0
0.9999998793434426
{“0”: 0.9999998793434426, “1”: 1.206565574533681e-07}
1
1
0.999999799574135
{“0”: 2.004258650156743e-07, “1”: 0.999999799574135}
1
1
0.999999799574135
{“0”: 2.004258650156743e-07, “1”: 0.999999799574135}
0
0
0.9999998793434426
{“0”: 0.9999998793434426, “1”: 1.206565574533681e-07}
0
0
0.9999998793434426
{“0”: 0.9999998793434426, “1”: 1.206565574533681e-07}
0
0
0.9999998793434426
{“0”: 0.9999998793434426, “1”: 1.206565574533681e-07}