線性回歸(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組件,在快捷菜單中,選擇
。