經典羅吉斯迴歸是一個二分類演算法,PAI提供的羅吉斯迴歸可以支援多分類,且支援稀疏及稠密資料格式。
組件配置
您可以使用以下任意一種方式,配置羅吉斯迴歸多分類組件參數。
方式一:可視化方式
在Designer工作流程頁面配置組件參數。
頁簽 | 參數 | 描述 |
欄位設定 | 訓練特徵列 | 輸入資料來源中,用於訓練的特徵列。支援DOUBLE及BIGINT類型。 說明 特徵數量不能超過兩千萬。 |
目標列 | 輸入資料來源中,目標列名稱。 | |
是否稀疏資料 | 輸入資料是否為稀疏格式。 | |
參數設定 | 正則項類型 | 支援L1、L2及None類型。 |
最大迭代次數 | 預設值為100。 | |
正則係數 | 如果 正則項為None,則該參數失效。 | |
最小收斂誤差 | 預設值為0.000001。 |
方式二:PAI命令方式
使用PAI命令方式,配置該組件參數。您可以使用SQL指令碼組件進行PAI命令調用,詳情請參見SQL指令碼。
PAI -name logisticregression_multi
-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 |
enableSparse | 否 | 輸入資料是否為稀疏格式,取值範圍為{true,false}。 | false |
itemDelimiter | 否 | 輸入表資料為稀疏格式時,KV對之間的分隔字元。 | 英文逗號(,) |
kvDelimiter | 否 | 輸入表資料為稀疏格式時,key和value之間的分隔字元。 | 英文冒號(:) |
coreNum | 否 | 核心數量。 | 系統自動分配 |
memSizePerCore | 否 | 單個核心使用的記憶體數,單位為MB。 | 系統自動分配 |
樣本
使用SQL語句,產生訓練資料。
drop table if exists multi_lr_test_input; create table multi_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(2 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 ) a;
產生的訓練資料(multi_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
2
0.0
0.0
0.0
1.0
1
0.0
1.0
0.0
0.0
0
使用PAI命令,提交羅吉斯迴歸多分類演算法組件參數。
drop offlinemodel if exists multi_lr_test_model; PAI -name logisticregression_multi -project algo_public -DmodelName="multi_lr_test_model" -DitemDelimiter="," -DregularizedLevel="1" -DmaxIter="100" -DregularizedType="None" -Depsilon="0.000001" -DkvDelimiter=":" -DlabelColName="label" -DfeatureColNames="f0,f1,f2,f3" -DenableSparse="false" -DinputTableName="multi_lr_test_input";
使用PAI命令,提交預測組件參數。
drop table if exists multi_lr_test_prediction_result; PAI -name prediction -project algo_public -DdetailColName="prediction_detail" -DmodelName="multi_lr_test_model" -DitemDelimiter="," -DresultColName="prediction_result" -Dlifecycle="28" -DoutputTableName="multi_lr_test_prediction_result" -DscoreColName="prediction_score" -DkvDelimiter=":" -DinputTableName="multi_lr_test_input" -DenableSparse="false" -DappendColNames="label";
查看輸出結果(multi_lr_test_prediction_result表)。
label
prediction_result
prediction_score
prediction_detail
0
0
0.9999997274902165
{“0”: 0.9999997274902165, “1”: 2.324679066261573e-07, “2”: 2.324679066261569e-07}
0
0
0.9999997274902165
{“0”: 0.9999997274902165, “1”: 2.324679066261573e-07, “2”: 2.324679066261569e-07}
2
2
0.9999999155958832
{“0”: 2.018833979850994e-07, “1”: 2.324679066261573e-07, “2”: 0.9999999155958832}
1
1
0.9999999155958832
{“0”: 2.018833979850994e-07, “1”: 0.9999999155958832, “2”: 2.324679066261569e-07}