經典羅吉斯迴歸是一個二分類演算法,支援稀疏及稠密資料格式。
組件配置
您可以使用以下任意一種方式,配置羅吉斯迴歸二分類組件參數。
方式一:可視化方式
在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}