本文为您介绍如何通过提交一个使用MaxCompute计算资源的超参数调优实验,来运行PS-SMART二分类、预测和评估组件,以获取PS-SMART组件算法的较优超参数组合。
前提条件
首次使用AutoML功能时,需要完成AutoML相关权限授权。具体操作,请参见云产品依赖与授权:AutoML。
已创建工作空间并关联了MaxCompute资源。具体操作,请参见创建工作空间。
步骤一:准备数据
本方案使用经过特征工程处理过的银行客户认购产品预测数据集,参考以下操作步骤准备训练数据集和测试数据集:
通过MaxCompute客户端执行以下SQL命令,分别创建表bank_train_data和bank_test_data。关于MaxCompute客户端的安装和配置,请参见使用本地客户端(odpscmd)连接。
create table bank_train_data( id bigint ,age double ,job double ,marital double ,education double ,default double ,housing double ,loan double ,contact double , month double ,day_of_week double ,duration double ,campaign double ,pdays double ,previous double ,poutcome double ,emp_var_rate double , cons_price_index double ,cons_conf_index double ,lending_rate3m double ,nr_employed double ,subscribe bigint ); create table bank_test_data( id bigint ,age double ,job double ,marital double ,education double ,default double ,housing double ,loan double ,contact double , month double ,day_of_week double ,duration double ,campaign double ,pdays double ,previous double ,poutcome double ,emp_var_rate double , cons_price_index double ,cons_conf_index double ,lending_rate3m double ,nr_employed double ,subscribe bigint );
通过MaxCompute客户端的Tunnel命令,分别将以下训练数据集和测试数据集上传到表bank_train_data和bank_test_data中。关于Tunnel命令的使用方法,请参见Tunnel命令。
-- 将训练数据集上传到表bank_train_data中。其中xx/train_data.csv需要替换为train_data.csv所在的路径。 tunnel upload xx/train_data.csv bank_train_data; -- 将测试数据集上传到表bank_test_data中。其中xx/test_data.csv需要替换为test_data.csv所在的路径。 tunnel upload xx/test_data.csv bank_test_data;
训练数据集:train_data.csv
测试数据集:test_data.csv
步骤二:新建实验
进入新建实验页面,并按照以下操作步骤配置关键参数,其他参数配置详情,请参见新建实验。参数配置完成后,单击提交。
设置执行配置。
参数
描述
任务类型
选择MaxCompute。
命令
配置以下五个命令,按照顺序依次排列,后续会按顺序执行命令。
cmd1:使用准备好的测试数据,运行PS-SMART二分类训练,构建二分类模型。各个参数的配置说明,请参见PS-SMART二分类训练。
PAI -name ps_smart -project algo_public -DinputTableName='bank_train_data' -DmodelName='bi_ps_${exp_id}_${trial_id}' -DoutputTableName='bi_model_output_${exp_id}_${trial_id}' -DoutputImportanceTableName='bi_imp_${exp_id}_${trial_id}' -DlabelColName='subscribe' -DfeatureColNames='age,job,marital,education,default,housing,loan,contact,month,day_of_week,duration,campaign,pdays,previous,poutcome,emp_var_rate,cons_price_index,cons_conf_index,lending_rate3m,nr_employed' -DenableSparse='false' -Dobjective='binary:logistic' -Dmetric='error' -DfeatureImportanceType='gain' -DtreeCount='${tree_count}' -DmaxDepth='${max_depth}' -Dshrinkage="0.3" -Dl2="1.0" -Dl1="0" -Dlifecycle="3" -DsketchEps="0.03" -DsampleRatio="1.0" -DfeatureRatio="1.0" -DbaseScore="0.5" -DminSplitLoss="0"
cmd2:删除预测结果表。
drop table if exists bi_output_${exp_id}_${trial_id};
cmd3:基于cmd1生成的分类模型,运行预测组件,来预测输入数据。各个参数的配置说明,请参见预测。
PAI -name prediction -project algo_public -DinputTableName='bank_test_data' -DmodelName='bi_ps_${exp_id}_${trial_id}' -DoutputTableName='bi_output_${exp_id}_${trial_id}' -DfeatureColNames='age,job,marital,education,default,housing,loan,contact,month,day_of_week,duration,campaign,pdays,previous,poutcome,emp_var_rate,cons_price_index,cons_conf_index,lending_rate3m,nr_employed' -DappendColNames='subscribe,age,job,marital,education,default,housing,loan,contact,month,day_of_week,duration,campaign,pdays,previous,poutcome,emp_var_rate,cons_price_index,cons_conf_index,lending_rate3m,nr_employed' -DenableSparse='false' -Dlifecycle='3';
cmd4:基于cmd3生成的预测结果,运行二分类评估组件,来评估二分类模型的优劣性。各个参数的配置说明,请参见二分类评估。
PAI -name evaluate -project algo_public -DoutputDetailTableName='bi_0804_${exp_id}_${trial_id}_outputDetailTable' -DoutputMetricTableName='bi_0804_${exp_id}_${trial_id}_outputMetricTable' -DlabelColName='subscribe' -DscoreColName='prediction_score' -DpositiveLabel='1' -DbinCount='1000' -DdetailColName='prediction_detail' -DlabelMatch='true' -DinputTableName='bi_output_${exp_id}_${trial_id}';
cmd5:从cmd4的评估结果表里,获取评估指标。
INSERT OVERWRITE TABLE ps_smart_classification_metrics PARTITION(pt='${exp_id}_${trial_id}') SELECT /*+MAPJOIN(b,c,d)*/ REGEXP_EXTRACT(a.data_range, '\\\((.*?),') as threshold, a.recall, a.precision, a.f1_score, c.value as auc, d.value as ks FROM (SELECT recall, precision, f1_score, data_range, 'AUC' auc, 'KS' ks from bi_0804_${exp_id}_${trial_id}_outputDetailTable) a JOIN bi_0804_${exp_id}_${trial_id}_outputMetricTable b on b.name='F1 Score' AND a.f1_score=b.value JOIN bi_0804_${exp_id}_${trial_id}_outputMetricTable c ON c.name=a.auc JOIN bi_0804_${exp_id}_${trial_id}_outputMetricTable d ON d.name=a.ks;
超参数
每个超参数对应的约束类型和搜索空间配置如下:
tree_count:
约束类型:choice。
搜索空间:单击,增加3个枚举值,分别为50、100和150。
max_depth:
约束类型:choice。
搜索空间:单击,增加3个枚举值,分别为6、8和10。
使用上述配置可以生成9种超参数组合,后续实验会分别为每种超参数组合创建一个Trial,在每个Trial中使用一组超参数组合来运行PS-SMART二分类组件和二分类评估组件。
设置Trial配置。
参数
描述
指标类型
选择table。
计算方式
选择best。
指标权重
配置以下指标权重:
key:recall、value:0.5
key:precision、value:0.25
key:auc、value:0.25
指标来源
配置为
select * from ps_smart_classification_metrics where pt='${exp_id}_${trial_id}';
。优化方向
选择越大越好。
模型名称
配置为bi_ps_${exp_id}_${trial_id}。
设置搜索配置。
参数
描述
搜索算法
选择TPE。
最大搜索次数
配置为5。
最大并发量
配置为2。
步骤三:查看实验详情和运行结果
在实验列表页面,单击实验名称,进入实验详情页面。在该页面,您可以查看Trial的执行进度和状态统计,实验根据配置的搜索算法和最大搜索次数自动创建5个Trial。
单击Trial列表,您可以在该页面查看该实验自动生成的所有Trial列表,以及每个Trial的执行状态、最终指标和超参数组合。根据配置的优化方向(越大越好),从上图可以看出,最终指标为0.688894对应的超参组合(tree_count:50;max_depth:8)较优。