線性迴歸(Linear Regression)是分析因變數和多個自變數之間的線性關聯式模式,參數伺服器PS(Parameter Server)致力於解決大規模的離線及線上訓練任務。PS線性迴歸支援千億樣本、十億特徵的大規模線性訓練任務。
組件配置
您可以使用以下任意一種方式,配置PS線性迴歸組件參數。
方式一:可視化方式
在Designer工作流程頁面配置組件參數。
頁簽 | 參數 | 描述 |
欄位設定 | 選擇特徵列 | 輸入資料來源中,參與訓練的特徵列。 |
選擇標籤列 | 支援DOUBLE及BIGINT類型。 | |
是否稀疏格式 | 使用KV格式表示稀疏格式。 | |
kv間的分隔字元 | 預設使用空格分隔。 | |
key與value分隔字元 | 預設使用半形冒號(:)分隔。 | |
參數設定 | L1 weight | L1正則化係數。該參數值越大,表示模型非零元素越少。如果過擬合,則增大該參數值。 |
L2 weight | L2正則化係數。該參數值越大,表示模型參數絕對值越小。如果過擬合,則增大該參數值。 | |
最大迭代次數 | 演算法進行的最大迭代次數。如果最大迭代次數為0,則演算法迭代次數無限制。 | |
最小收斂誤差 | 最佳化演算法終止條件。 | |
最大特徵ID | 最大的特徵ID或特徵維度,該參數取值可以大於實際值。如果未配置該參數,則系統啟動SQL任務自動計算。 | |
執行調優 | 核心數 | 預設為系統自動分配。 |
每個核的記憶體大小 | 預設為系統自動分配。 |
方式二:PAI命令方式
使用PAI命令方式,配置該組件參數。您可以使用SQL指令碼組件進行PAI命令調用,詳情請參見SQL指令碼。
#訓練。
PAI -name ps_linearregression
-project algo_public
-DinputTableName="lm_test_input"
-DmodelName="linear_regression_model"
-DlabelColName="label"
-DfeatureColNames="features"
-Dl1Weight=1.0
-Dl2Weight=0.0
-DmaxIter=100
-Depsilon=1e-6
-DenableSparse=true
#預測。
drop table if exists logistic_regression_predict;
PAI -name prediction
-DmodelName="linear_regression_model"
-DoutputTableName="linear_regression_predict"
-DinputTableName="lm_test_input"
-DappendColNames="label,features"
-DfeatureColNames="features"
-DenableSparse=true
參數 | 是否必選 | 描述 | 預設值 |
inputTableName | 是 | 輸入表的名稱。 | 無 |
modelName | 是 | 輸出模型的名稱。 | 無 |
outputTableName | 否 | 輸出的模型評估表名稱。如果enableFitGoodness為true,則該參數必選。 | 無 |
labelColName | 是 | 輸入表的標籤列名,支援DOUBLE及BIGINT類型。 | 無 |
featureColNames | 是 | 輸入表中,用於訓練的特徵列名。如果輸入資料為稠密格式,則支援DOUBLE及BIGINT類型。如果輸入資料為稀疏格式,則支援STRING類型。 | 無 |
inputTablePartitions | 否 | 輸入表的分區。 | 無 |
enableSparse | 否 | 輸入資料是否為稀疏格式,取值範圍為{true,false}。 | false |
itemDelimiter | 否 | KV對之間的分隔字元。如果enableSparse為true,則該參數生效。 | 空格 |
kvDelimiter | 否 | keyvalue之間的分隔字元。如果enableSparse為true,則該參數生效。 | 半形冒號(:) |
enableModelIo | 否 | 是否輸出到Offline Model。如果enableModelIo為false,則將模型輸出到MaxCompute表。取值範圍為{true,false}。 | true |
maxIter | 否 | 演算法進行的最大迭代次數,取值範圍為非負整數。 | 100 |
epsilon | 否 | 最佳化演算法終止條件,取值範圍為[0,1]。 | 0.000001 |
l1Weight | 否 | L1正則化係數。該參數值越大,模型非零元素越少。如果過擬合,則增大該參數值。 | 1.0 |
l2Weight | 否 | L2正則化係數。該參數值越大,模型參數絕對值越小。如果過擬合,則增大該參數值。 | 0 |
modelSize | 否 | 最大的特徵ID或特徵維度,該參數取值可以大於實際值。如果未配置該參數,則系統啟動SQL任務自動計算。取值範圍為非負整數。 | 0 |
coreNum | 否 | 計算的核心數量。 | 系統自動分配 |
memSizePerCore | 否 | 每個核心的記憶體,單位為MB。 | 系統自動分配 |
樣本
使用SQL指令碼執行如下SQL語句,產生輸入資料(以KV格式資料為例)。
drop table if exists lm_test_input; create table lm_test_input as select * from ( select cast(2 as BIGINT) as label, '1:0.55 2:-0.15 3:0.82 4:-0.99 5:0.17' as features union all select cast(1 as BIGINT) as label, '1:-1.26 2:1.36 3:-0.13 4:-2.82 5:-0.41' as features union all select cast(1 as BIGINT) as label, '1:-0.77 2:0.91 3:-0.23 4:-4.46 5:0.91' as features union all select cast(2 as BIGINT) as label, '1:0.86 2:-0.22 3:-0.46 4:0.08 5:-0.60' as features union all select cast(1 as BIGINT) as label, '1:-0.76 2:0.89 3:1.02 4:-0.78 5:-0.86' as features union all select cast(1 as BIGINT) as label, '1:2.22 2:-0.46 3:0.49 4:0.31 5:-1.84' as features union all select cast(0 as BIGINT) as label, '1:-1.21 2:0.09 3:0.23 4:2.04 5:0.30' as features union all select cast(1 as BIGINT) as label, '1:2.17 2:-0.45 3:-1.22 4:-0.48 5:-1.41' as features union all select cast(0 as BIGINT) as label, '1:-0.40 2:0.63 3:0.56 4:0.74 5:-1.44' as features union all select cast(1 as BIGINT) as label, '1:0.17 2:0.49 3:-1.50 4:-2.20 5:-0.35' as features ) tmp;
產生的資料如下。
說明KV格式資料的特徵ID必須為正整數,特徵值必須為實數。如果特徵ID為字串,則需要進行序列化操作。如果特徵值為類型字串,則需要進行特徵離散化操作。
構建如下工作流程,詳情請參見演算法建模。
配置組件參數。
單擊讀資料表-1組件,在右側表選擇頁簽中,配置表名為lm_test_input。
配置PS線性迴歸組件的參數(配置如下表格中的參數,其餘參數使用預設值)。
頁簽
參數
描述
欄位設定
是否稀疏格式
選擇true。
選擇特徵列
選擇features列。
選擇標籤列
選擇label列。
執行調優
核心數
配置為3。
每個核的記憶體大小
配置為1024 MB。
配置預測組件的參數(配置如下表格中的參數,其餘參數使用預設值)。
頁簽
參數
描述
欄位設定
特徵列
選擇features列。
原樣輸出資料行
選擇label列和features列。
疏鬆陣列
選中疏鬆陣列複選框。
key與value分隔字元
配置為半形冒號(:)。
kv對間的分隔字元
使用空格作為分隔字元,留空即可。
單擊畫布中的運行按鈕,運行工作流程。
工作流程運行成功後,按右鍵預測-1組件,在捷徑功能表中,選擇
。