線性迴歸(Linear Regression)是分析因變數和多個自變數之間的線性關聯式模式。
組件配置
您可以使用以下任意一種方式,配置線性迴歸組件參數。
方式一:可視化方式
在Designer工作流程頁面配置組件參數。
頁簽 | 參數 | 描述 |
欄位設定 | 選擇特徵列 | 輸入資料來源中,參與訓練的特徵列。 |
選擇標籤列 | 支援DOUBLE及BIGINT類型。 | |
是否稀疏格式 | 使用KV格式表示稀疏格式。 | |
kv對間分隔字元 | 預設使用英文逗號(,)分隔。 | |
key與value分隔字元 | 預設使用英文冒號(:)分隔。 | |
參數設定 | 最大迭代輪數 | 演算法進行的最大迭代次數。 |
最小似然誤差 | 如果兩次迭代間的Log Likelihood之差小於該值,則演算法終止。 | |
正則化類型 | 支援L1、L2及None類型。 | |
正則係數 | 如果正則化類型為None,則該參數失效。 | |
產生模型評估表 | 指標包括R-Squared、AdjustedR-Squared、AIC、自由度、殘差的標準差及偏差。 | |
迴歸係數評估 | 指標包括T值、P值及信賴區間[2.5%,97.5%]。只有選中產生模型評估表複選框,該參數才生效。 | |
執行調優 | 計算核心數 | 預設為系統自動分配。 |
每核記憶體大小 | 預設為系統自動分配。 |
方式二:PAI命令方式
使用PAI命令方式,配置該組件參數。您可以使用SQL指令碼組件進行PAI命令調用,詳情請參見SQL指令碼。
PAI -name linearregression
-project algo_public
-DinputTableName=lm_test_input
-DfeatureColNames=x
-DlabelColName=y
-DmodelName=lm_test_input_model_out;
參數 | 是否必選 | 描述 | 預設值 |
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,則該參數生效。 | 英文冒號(:) |
maxIter | 否 | 演算法進行的最大迭代次數。 | 100 |
epsilon | 否 | 最小似然誤差。如果兩次迭代間的Log Likelihood之差小於該值,則演算法終止。 | 0.000001 |
regularizedType | 否 | 正則化類型,取值範圍為{l1,l2,None}。 | None |
regularizedLevel | 否 | 正則係數。如果regularizedType為None,則該參數失效。 | 1 |
enableFitGoodness | 否 | 是否產生模型評估表。指標包括R-Squared、AdjustedR-Squared、AIC、自由度、殘差的標準差及偏差。取值範圍為{true,false}。 | false |
enableCoefficientEstimate | 否 | 是否進行迴歸係數評估。評估指標包括T值、P值及信賴區間[2.5%,97.5%]。如果enableFitGoodness為true,則該參數生效。取值範圍為{true,false}。 | false |
lifecycle | 否 | 模型評估輸出表的生命週期。 | -1 |
coreNum | 否 | 計算的核心數量。 | 系統自動分配 |
memSizePerCore | 否 | 每個核心的記憶體,取值範圍為1024 MB~20*1024 MB。 | 系統自動分配 |
樣本
使用SQL語句,產生測試資料。
drop table if exists lm_test_input; create table lm_test_input as select * from ( select 10 as y, 1.84 as x1, 1 as x2, '0:1.84 1:1' as sparsecol1 union all select 20 as y, 2.13 as x1, 0 as x2, '0:2.13' as sparsecol1 union all select 30 as y, 3.89 as x1, 0 as x2, '0:3.89' as sparsecol1 union all select 40 as y, 4.19 as x1, 0 as x2, '0:4.19' as sparsecol1 union all select 50 as y, 5.76 as x1, 0 as x2, '0:5.76' as sparsecol1 union all select 60 as y, 6.68 as x1, 2 as x2, '0:6.68 1:2' as sparsecol1 union all select 70 as y, 7.58 as x1, 0 as x2, '0:7.58' as sparsecol1 union all select 80 as y, 8.01 as x1, 0 as x2, '0:8.01' as sparsecol1 union all select 90 as y, 9.02 as x1, 3 as x2, '0:9.02 1:3' as sparsecol1 union all select 100 as y, 10.56 as x1, 0 as x2, '0:10.56' as sparsecol1 ) tmp;
使用PAI命令,提交線性迴歸組件參數。
PAI -name linearregression -project algo_public -DinputTableName=lm_test_input -DlabelColName=y -DfeatureColNames=x1,x2 -DmodelName=lm_test_input_model_out -DoutputTableName=lm_test_input_conf_out -DenableCoefficientEstimate=true -DenableFitGoodness=true -Dlifecycle=1;
使用PAI命令,提交預測組件參數。
pai -name prediction -project algo_public -DmodelName=lm_test_input_model_out -DinputTableName=lm_test_input -DoutputTableName=lm_test_input_predict_out -DappendColNames=y;
查看輸出的模型評估表lm_test_input_conf_out。
+------------+------------+------------+------------+--------------------+------------+ | colname | value | tscore | pvalue | confidenceinterval | p | +------------+------------+------------+------------+--------------------+------------+ | Intercept | -6.42378496687763 | -2.2725755951390028 | 0.06 | {"2.5%": -11.964027, "97.5%": -0.883543} | coefficient | | x1 | 10.260063429838898 | 23.270944360826963 | 0.0 | {"2.5%": 9.395908, "97.5%": 11.124219} | coefficient | | x2 | 0.35374498323846265 | 0.2949247320997519 | 0.81 | {"2.5%": -1.997160, "97.5%": 2.704650} | coefficient | | rsquared | 0.9879675667384592 | NULL | NULL | NULL | goodness | | adjusted_rsquared | 0.9845297286637332 | NULL | NULL | NULL | goodness | | aic | 59.331109494251805 | NULL | NULL | NULL | goodness | | degree_of_freedom | 7.0 | NULL | NULL | NULL | goodness | | standardErr_residual | 3.765777749448906 | NULL | NULL | NULL | goodness | | deviance | 99.26757440771128 | NULL | NULL | NULL | goodness | +------------+------------+------------+------------+--------------------+------------+
查看預測結果表lm_test_input_predict_out。
+------------+-------------------+------------------+-------------------+ | y | prediction_result | prediction_score | prediction_detail | +------------+-------------------+------------------+-------------------+ | 10 | NULL | 12.808476727264404 | {"y": 12.8084767272644} | | 20 | NULL | 15.43015013867922 | {"y": 15.43015013867922} | | 30 | NULL | 33.48786177519568 | {"y": 33.48786177519568} | | 40 | NULL | 36.565880804147355 | {"y": 36.56588080414735} | | 50 | NULL | 52.674180388994415 | {"y": 52.67418038899442} | | 60 | NULL | 62.82092871092313 | {"y": 62.82092871092313} | | 70 | NULL | 71.34749583130122 | {"y": 71.34749583130122} | | 80 | NULL | 75.75932310613193 | {"y": 75.75932310613193} | | 90 | NULL | 87.1832221199846 | {"y": 87.18322211998461} | | 100 | NULL | 101.92248485222113 | {"y": 101.9224848522211} | +------------+-------------------+------------------+-------------------+