全部產品
Search
文件中心

Platform For AI:線性迴歸

更新時間:Apr 02, 2025

線性迴歸(Linear Regression)是一種統計方法,用於預測因變數與一個或多個自變數之間的線性關係。通過擬合一條最佳線性曲線,線性迴歸能夠最小化預測值與實際值之間的誤差,從而實現對因變數的估計和分析。

配置組件

方式一:可視化方式

在Designer工作流程頁面添加線性迴歸組件,並在介面右側配置相關參數:

參數類型

參數

描述

欄位設定

選擇特徵列

輸入資料來源中,參與訓練的特徵列。

選擇標籤列

支援DOUBLE及BIGINT類型。

是否稀疏格式

使用KV格式表示稀疏格式。

kv對間分隔字元

預設使用英文逗號(,)分隔。

key與value分隔字元

預設使用英文冒號(:)分隔。

參數設定

最大迭代輪數

演算法進行的最大迭代次數。

最小似然誤差

使用對數似然(Log Likelihood)作為收斂標準。如果兩次迭代間的Log Likelihood之差小於該值,則演算法終止。

正則化類型

支援L1L2None類型。

正則係數

如果正則化類型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

輸出的模型評估表名稱。如果enableFitGoodnesstrue,則該參數必選。

labelColName

因變數,支援DOUBLE及BIGINT類型。只能選擇一列作為因變數。

featureColNames

自變數。如果輸入資料為稠密格式,則支援DOUBLE及BIGINT類型。如果輸入資料為稀疏格式,則支援STRING類型。

inputTablePartitions

輸入表的分區。

enableSparse

false

輸入資料是否為稀疏格式,取值範圍為{true,false}

itemDelimiter

英文逗號(,)

KV對之間的分隔字元。如果enableSparsetrue,則該參數生效。

kvDelimiter

英文冒號(:)

keyvalue之間的分隔字元。如果enableSparsetrue,則該參數生效。

maxIter

100

演算法進行的最大迭代次數。

epsilon

0.000001

最小似然誤差。如果兩次迭代間的Log Likelihood之差小於該值,則演算法終止。

regularizedType

None

正則化類型,取值範圍為{l1,l2,None}

regularizedLevel

1

正則係數。如果regularizedTypeNone,則該參數失效。

enableFitGoodness

false

是否產生模型評估表。指標包括R-Squared、AdjustedR-Squared、AIC、自由度、殘差的標準差及偏差。取值範圍為{true,false}

enableCoefficientEstimate

false

是否進行迴歸係數評估。評估指標包括T值、P值及信賴區間[2.5%,97.5%]。如果enableFitGoodnesstrue,則該參數生效。取值範圍為{true,false}

lifecycle

-1

模型評估輸出表的生命週期。

coreNum

系統自動分配

預設為系統自動分配。

memSizePerCore

系統自動分配

預設為系統自動分配。

樣本

  1. 使用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;
  2. 使用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;
  3. 使用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;
  4. 查看輸出的模型評估表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   |
    +------------+------------+------------+------------+--------------------+------------+
  5. 查看預測結果表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} |
    +------------+-------------------+------------------+-------------------+