MaxCompute PS-SMART二分類最佳實(shí)踐
本文為您介紹如何通過提交一個(gè)使用MaxCompute計(jì)算資源的超參數(shù)調(diào)優(yōu)實(shí)驗(yàn),來運(yùn)行PS-SMART二分類、預(yù)測(cè)和評(píng)估組件,以獲取PS-SMART組件算法的較優(yōu)超參數(shù)組合。
前提條件
首次使用AutoML功能時(shí),需要完成AutoML相關(guān)權(quán)限授權(quán)。具體操作,請(qǐng)參見云產(chǎn)品依賴與授權(quán):AutoML。
已創(chuàng)建工作空間并關(guān)聯(lián)了MaxCompute資源。具體操作,請(qǐng)參見創(chuàng)建工作空間。
步驟一:準(zhǔn)備數(shù)據(jù)
本方案使用經(jīng)過特征工程處理過的銀行客戶認(rèn)購產(chǎn)品預(yù)測(cè)數(shù)據(jù)集,參考以下操作步驟準(zhǔn)備訓(xùn)練數(shù)據(jù)集和測(cè)試數(shù)據(jù)集:
通過MaxCompute客戶端執(zhí)行以下SQL命令,分別創(chuàng)建表bank_train_data和bank_test_data。關(guān)于MaxCompute客戶端的安裝和配置,請(qǐng)參見使用本地客戶端(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命令,分別將以下訓(xùn)練數(shù)據(jù)集和測(cè)試數(shù)據(jù)集上傳到表bank_train_data和bank_test_data中。關(guān)于Tunnel命令的使用方法,請(qǐng)參見Tunnel命令。
-- 將訓(xùn)練數(shù)據(jù)集上傳到表bank_train_data中。其中xx/train_data.csv需要替換為train_data.csv所在的路徑。 tunnel upload xx/train_data.csv bank_train_data; -- 將測(cè)試數(shù)據(jù)集上傳到表bank_test_data中。其中xx/test_data.csv需要替換為test_data.csv所在的路徑。 tunnel upload xx/test_data.csv bank_test_data;
訓(xùn)練數(shù)據(jù)集:train_data.csv
測(cè)試數(shù)據(jù)集:test_data.csv
步驟二:新建實(shí)驗(yàn)
進(jìn)入新建實(shí)驗(yàn)頁面,并按照以下操作步驟配置關(guān)鍵參數(shù),其他參數(shù)配置詳情,請(qǐng)參見新建實(shí)驗(yàn)。參數(shù)配置完成后,單擊提交。
設(shè)置執(zhí)行配置。
參數(shù)
描述
任務(wù)類型
選擇MaxCompute。
命令
配置以下五個(gè)命令,按照順序依次排列,后續(xù)會(huì)按順序執(zhí)行命令。
cmd1:使用準(zhǔn)備好的測(cè)試數(shù)據(jù),運(yùn)行PS-SMART二分類訓(xùn)練,構(gòu)建二分類模型。各個(gè)參數(shù)的配置說明,請(qǐng)參見PS-SMART二分類訓(xùn)練。
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:刪除預(yù)測(cè)結(jié)果表。
drop table if exists bi_output_${exp_id}_${trial_id};
cmd3:基于cmd1生成的分類模型,運(yùn)行預(yù)測(cè)組件,來預(yù)測(cè)輸入數(shù)據(jù)。各個(gè)參數(shù)的配置說明,請(qǐng)參見預(yù)測(cè)。
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生成的預(yù)測(cè)結(jié)果,運(yùn)行二分類評(píng)估組件,來評(píng)估二分類模型的優(yōu)劣性。各個(gè)參數(shù)的配置說明,請(qǐng)參見二分類評(píng)估。
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的評(píng)估結(jié)果表里,獲取評(píng)估指標(biāo)。
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;
超參數(shù)
每個(gè)超參數(shù)對(duì)應(yīng)的約束類型和搜索空間配置如下:
tree_count:
約束類型:choice。
搜索空間:?jiǎn)螕?img src="https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/4663061171/p775493.png" width="18" id="u59d06d6e" class="image inline ne-image" alt="image.png" placement="inline">,增加3個(gè)枚舉值,分別為50、100和150。
max_depth:
約束類型:choice。
搜索空間:?jiǎn)螕?img src="https://help-static-aliyun-doc.aliyuncs.com/assets/img/zh-CN/4663061171/p775492.png" width="18" id="ue3c0ee02" class="image inline ne-image" alt="image.png" placement="inline">,增加3個(gè)枚舉值,分別為6、8和10。
使用上述配置可以生成9種超參數(shù)組合,后續(xù)實(shí)驗(yàn)會(huì)分別為每種超參數(shù)組合創(chuàng)建一個(gè)Trial,在每個(gè)Trial中使用一組超參數(shù)組合來運(yùn)行PS-SMART二分類組件和二分類評(píng)估組件。
設(shè)置Trial配置。
參數(shù)
描述
指標(biāo)類型
選擇table。
計(jì)算方式
選擇best。
指標(biāo)權(quán)重
配置以下指標(biāo)權(quán)重:
key:recall、value:0.5
key:precision、value:0.25
key:auc、value:0.25
指標(biāo)來源
配置為
select * from ps_smart_classification_metrics where pt='${exp_id}_${trial_id}';
。優(yōu)化方向
選擇越大越好。
模型名稱
配置為bi_ps_${exp_id}_${trial_id}。
設(shè)置搜索配置。
參數(shù)
描述
搜索算法
選擇TPE。
最大搜索次數(shù)
配置為5。
最大并發(fā)量
配置為2。
步驟三:查看實(shí)驗(yàn)詳情和運(yùn)行結(jié)果
在實(shí)驗(yàn)列表頁面,單擊實(shí)驗(yàn)名稱,進(jìn)入實(shí)驗(yàn)詳情頁面。在該頁面,您可以查看Trial的執(zhí)行進(jìn)度和狀態(tài)統(tǒng)計(jì),實(shí)驗(yàn)根據(jù)配置的搜索算法和最大搜索次數(shù)自動(dòng)創(chuàng)建5個(gè)Trial。
單擊Trial列表,您可以在該頁面查看該實(shí)驗(yàn)自動(dòng)生成的所有Trial列表,以及每個(gè)Trial的執(zhí)行狀態(tài)、最終指標(biāo)和超參數(shù)組合。根據(jù)配置的優(yōu)化方向(越大越好),從上圖可以看出,最終指標(biāo)為0.688894對(duì)應(yīng)的超參組合(tree_count:50;max_depth:8)較優(yōu)。