全部產品
Search
文件中心

Platform For AI:PS-SMART迴歸

更新時間:Jul 13, 2024

參數伺服器PS(Parameter Server)致力於解決大規模的離線及線上訓練任務,SMART(Scalable Multiple Additive Regression Tree)是GBDT(Gradient Boosting Decision Tree)基於PS實現的迭代演算法。PS-SMART支援百億樣本及幾十萬特徵的訓練任務,可以在上千節點中運行。同時,PS-SMART支援多種資料格式及長條圖近似等最佳化技術。

使用限制

PS-SMART迴歸組件的輸入資料必須滿足以下要求:

  • PS-SMART迴歸組件的目標列僅支援數實值型別。如果MaxCompute表資料是STRING類型,則需要進行類型轉換。

  • 如果資料是KV格式,則特徵ID必須為正整數,特徵值必須為實數。如果特徵ID為字串類型,則需要使用序列化組件進行序列化。如果特徵值為類型字串,需要進行特徵離散化等特徵工程處理。

  • 雖然PS-SMART迴歸組件支援數十萬特徵任務,但是消耗資源大且運行速度慢,可以使用GBDT類演算法進行訓練。GBDT類演算法適合直接使用連續特徵進行訓練,除需要對類別特徵進行One-Hot編碼(篩除低頻特徵)外,不建議對其他連續型數值特徵進行離散化。

  • PS-SMART演算法會引入隨機性。例如,data_sample_ratiofea_sample_ratio表示的資料和特徵採樣、演算法使用的長條圖近似最佳化及局部Sketch歸併為全域Sketch的順序隨機性。雖然多個Worker分布式執行時,樹結構不同,但是從理論上可以保證模型效果相近。如果您在訓練過程中,使用相同資料和參數,多次得到的結果不一致,屬於正常現象。

  • 如果需要加速訓練,可以增大計算核心數。因為PS-SMART演算法需要所有伺服器獲得資源後,才能開始訓練,所以叢集忙碌時,申請較多資源會增加等待時間。

注意事項

使用PS-SMART迴歸組件時,您需要注意以下事宜:

  • 雖然PS-SMART迴歸組件支援數十萬特徵任務,但是消耗資源大且運行速度慢,可以使用GBDT類演算法進行訓練。GBDT類演算法適合直接使用連續特徵進行訓練,除需要對類別特徵進行One-Hot編碼(篩除低頻特徵)外,不建議對其他連續型數值特徵進行離散化。

  • PS-SMART演算法會引入隨機性。例如,data_sample_ratiofea_sample_ratio表示的資料和特徵採樣、演算法使用的長條圖近似最佳化及局部Sketch歸併為全域Sketch的順序隨機性。雖然多個Worker分布式執行時,樹結構不同,但是從理論上可以保證模型效果相近。如果您在訓練過程中,使用相同資料和參數,多次得到的結果不一致,屬於正常現象。

  • 如果需要加速訓練,可以增大計算核心數。因為PS-SMART演算法需要所有伺服器獲得資源後,才能開始訓練,所以叢集忙碌時,申請較多資源會增加等待時間。

組件配置

您可以使用以下任意一種方式,配置PS-SMART迴歸組件參數。

方式一:可視化方式

Designer工作流程頁面配置組件參數。

頁簽

參數

描述

欄位設定

是否稀疏格式

稀疏格式的KV之間使用空格分隔,keyvalue之間使用半形冒號(:)分隔。例如1:0.3 3:0.9

選擇特徵列

輸入表中,用於訓練的特徵列。如果輸入資料是Dense格式,則只能選擇數值(BIGINT或DOUBLE)類型。如果輸入資料是Sparse KV格式,且keyvalue是數實值型別,則只能選擇STRING類型。

選擇標籤列

輸入表的標籤列,支援STRING及數實值型別。如果是內部儲存,則僅支援數實值型別。例如二分類中的01

選擇權重列

列可以對每行樣本進行加權,支援數實值型別。

參數設定

目標函數類型

支援以下類型:

  • Linear regression(預設值)

  • Logistic regression

  • Poisson regression

  • Gamma regression

  • Tweedie regression

Tweedie分布指數

僅目標函數類型選擇Tweedie regression時,支援配置該參數。表示Tweedie分布的方差和均值關係指數。

評估指標類型

支援以下類型:

  • rooted mean square error

  • mean absolute error

  • negative loglikelihood for logistic regression

  • negative loglikelihood for poisson regression

  • residual deviance for gamma regression

  • negative log-likelihood for gamma regression

  • negative log-likelihood for Tweedie regression

樹數量

需要配置為樹數量,正整數,樹數量和訓練時間成正比。

樹最大深度

預設值為5,即最多32個葉子節點。

資料採樣比例

構建每棵樹時,採樣部分資料進行學習,構建弱學習器,從而加快訓練。

特徵採樣比例

構建每棵樹時,採樣部分特徵進行學習,構建弱學習器,從而加快訓練。

L1懲罰項係數

控制葉子節點大小。該參數值越大,葉子節點規模分布越均勻。如果過擬合,則增大該參數值。

L2懲罰項係數

控制葉子節點大小。該參數值越大,葉子節點規模分布越均勻。如果過擬合,則增大該參數值。

學習速率

取值範圍為(0,1)

近似Sketch精度

構造Sketch的切割分位點閾值。該參數值越小,獲得的桶越多。一般使用預設值0.03,無需手動設定。

最小分裂損失變化

分裂節點所需要的最小損失變化。該參數值越大,分裂越保守。

特徵數量

特徵數量或最大特徵ID。如果估計使用資源時,未配置該參數,則系統會啟動SQL任務自動計算。

全域偏置項

所有樣本的初始預測值。

隨機數產生器種子

隨機數種子,整型。

特徵重要性類型

支援以下類型:

  • 模型中,該特徵做為分裂特徵的次數

  • 模型中,該特徵帶來的資訊增益(預設值)

  • 模型中,該特徵在分裂節點覆蓋的樣本數

執行調優

核心數

預設為系統自動分配。

每個核的記憶體大小

單個核心使用的記憶體,單位為MB。通常無需手動設定,系統會自動分配。

方式二:PAI命令方式

使用PAI命令方式,配置該組件參數。您可以使用SQL指令碼組件進行PAI命令調用,詳情請參見SQL指令碼

#訓練。
PAI -name ps_smart
    -project algo_public
    -DinputTableName="smart_regression_input"
    -DmodelName="xlab_m_pai_ps_smart_bi_545859_v0"
    -DoutputTableName="pai_temp_24515_545859_2"
    -DoutputImportanceTableName="pai_temp_24515_545859_3"
    -DlabelColName="label"
    -DfeatureColNames="features"
    -DenableSparse="true"
    -Dobjective="reg:linear"
    -Dmetric="rmse"
    -DfeatureImportanceType="gain"
    -DtreeCount="5"
    -DmaxDepth="5"
    -Dshrinkage="0.3"
    -Dl2="1.0"
    -Dl1="0"
    -Dlifecycle="3"
    -DsketchEps="0.03"
    -DsampleRatio="1.0"
    -DfeatureRatio="1.0"
    -DbaseScore="0.5"
    -DminSplitLoss="0"
#預測。
PAI -name prediction
    -project algo_public
    -DinputTableName="smart_regression_input";
    -DmodelName="xlab_m_pai_ps_smart_bi_545859_v0"
    -DoutputTableName="pai_temp_24515_545860_1"
    -DfeatureColNames="features"
    -DappendColNames="label,features"
    -DenableSparse="true"
    -Dlifecycle="28"

模組

參數

是否必選

描述

預設值

資料參數

featureColNames

輸入表中,用於訓練的特徵列。如果輸入表是Dense格式,則只能選擇數值(BIGINT或DOUBLE)類型。如果輸入表是Sparse KV格式,且KV格式中keyvalue是數實值型別,則只能選擇STRING類型。

labelColName

輸入表的標籤列,支援STRING及數實值型別。如果是內部儲存,則僅支援數實值型別。例如二分類中的01

weightCol

列可以對每行樣本進行加權,支援數實值型別。

enableSparse

是否為稀疏格式,取值範圍為{true,false}。稀疏格式的KV之間使用空格分隔,keyvalue之間使用半形冒號(:)分隔。例如1:0.3 3:0.9

false

inputTableName

輸入表的名稱。

modelName

輸出的模型名稱。

outputImportanceTableName

輸出特徵重要性的表名。

inputTablePartitions

格式為ds=1/pt=1

outputTableName

輸出至MaxCompute的表,二進位格式。

lifecycle

輸出表的生命週期,單位為天。

3

演算法參數

objective

目標函數類型。支援以下類型:

  • reg:linear:Linear Regression

  • reg:logistic:Logistic Regression

  • count:poisson:Poisson Regression

  • reg:gamma:Gamma Regression

  • reg:tweedie:Tweedie Regression

reg:linear

metric

訓練集的評估指標類型,輸出在logview檔案coordinator地區的stdout。支援以下類型:

  • rmse:對應可視化方式的rooted mean square error類型。

  • mae:對應可視化方式中的mean absolute error類型。

  • logistic-nloglik:對應可視化方式中的negative loglikelihood for logistic regression類型。

  • poisson-nloglik:對應可視化方式中的negative loglikelihood for poisson regression類型。

  • gamma-deviance:對應可視化方式中的residual deviance for gamma regression類型。

  • gamma-nloglik:對應可視化方式中的negative log-likelihood for gamma regression類型。

  • tweedie-nloglik:對應可視化方式中的negative log-likelihood for Tweedie regression類型。

treeCount

樹數量,與訓練時間成正比。

1

maxDepth

樹的最大深度,取值範圍為1~20。

5

sampleRatio

資料採樣比例,取值範圍為(0,1]。如果取值為1.0,則表示不採樣。

1.0

featureRatio

特徵採樣比例,取值範圍為(0,1]。如果取值為1.0,則表示不採樣。

1.0

l1

L1懲罰項係數。該參數值越大,葉子節點分布越均勻。如果過擬合,則增大該參數值。

0

l2

L2懲罰項係數。該參數值越大,葉子節點分布越均勻。如果過擬合,則增大該參數值。

1.0

shrinkage

學習速率,取值範圍為(0,1)

0.3

sketchEps

構造Sketch的切割分位點閾值,桶數為O(1.0/sketchEps)。該參數值越小,獲得的桶越多。一般使用預設值,無需手動設定。取值範圍為(0,1)

0.03

minSplitLoss

分裂節點所需要的最小損失變化。該參數值越大,分裂越保守。

0

featureNum

特徵數量或最大特徵ID。如果估計使用資源時,未配置該參數,則系統會啟動SQL任務自動計算。

baseScore

所有樣本的初始預測值。

0.5

randSeed

隨機數種子,整型。

featureImportanceType

計算特徵重要性的類型,包括:

  • weight:在模型中,該特徵作為分裂特徵的次數。

  • gain:在模型中,該特徵帶來的資訊增益。

  • cover:在模型中,該特徵在分裂節點覆蓋的樣本數。

gain

tweedieVarPower

Tweedie分布的方差和均值關係指數。

1.5

調優參數

coreNum

核心數量,該參數值越大,演算法運行越快。

系統自動分配

memSizePerCore

每個核心使用的記憶體,單位為MB。

系統自動分配

樣本

  1. 使用ODPS SQL節點執行如下SQL語句,產生輸入資料(以KV格式資料為例)。

    drop table if exists smart_regression_input;
    create table smart_regression_input as
    select
    *
    from
    (
    select 2.0 as label, '1:0.55 2:-0.15 3:0.82 4:-0.99 5:0.17' as features
        union all
    select 1.0 as label, '1:-1.26 2:1.36 3:-0.13 4:-2.82 5:-0.41' as features
        union all
    select 1.0 as label, '1:-0.77 2:0.91 3:-0.23 4:-4.46 5:0.91' as features
        union all
    select 2.0 as label, '1:0.86 2:-0.22 3:-0.46 4:0.08 5:-0.60' as features
        union all
    select 1.0 as label, '1:-0.76 2:0.89 3:1.02 4:-0.78 5:-0.86' as features
        union all
    select 1.0 as label, '1:2.22 2:-0.46 3:0.49 4:0.31 5:-1.84' as features
        union all
    select 0.0 as label, '1:-1.21 2:0.09 3:0.23 4:2.04 5:0.30' as features
        union all
    select 1.0 as label, '1:2.17 2:-0.45 3:-1.22 4:-0.48 5:-1.41' as features
        union all
    select 0.0 as label, '1:-0.40 2:0.63 3:0.56 4:0.74 5:-1.44' as features
        union all
    select 1.0 as label, '1:0.17 2:0.49 3:-1.50 4:-2.20 5:-0.35' as features
    ) tmp;

    產生的資料如下。image

  2. 構建如下工作流程,並運行組件,詳情請參見演算法建模image

    1. 在Designer左側組件列表中,分別搜尋讀資料表組件、PS-SMART迴歸組件、預測組件、寫資料表組件,並拖入右側畫布中。

    2. 配置組件參數。

      • 在畫布中單擊讀資料表-1組件,在右側表選擇頁簽,配置表名為smart_regression_input。

      • 在畫布中單擊PS-SMART迴歸-1組件,在右側配置如下表中的參數,其餘參數使用預設值。

        頁簽

        參數

        描述

        欄位設定

        是否稀疏格式

        選中是否稀疏格式複選框。

        特徵列

        選擇features列。

        標籤列

        選擇label列。

        參數設定

        目標函數類別

        配置為Linear regression

        評估指標類型

        選擇rooted mean square error

        樹數量

        配置為5

      • 在畫布中單擊預測-1組件,在右側配置如下表中的參數,其餘參數使用預設值。

        頁簽

        參數

        描述

        欄位設定

        特徵列

        預設全選,多餘列不影響預測結果。

        原樣輸出資料行

        選擇為label列。

        疏鬆陣列

        選中疏鬆陣列複選框。

        key與value分隔字元

        配置為半形冒號(:)。

        kv對間的分隔字元

        配置為空白格。

      • 在畫布中單擊寫資料表-1組件,在右側表選擇頁簽,配置寫入表表名為smart_regression_output。

    3. 參數配置完成後,單擊運行按鈕image,運行工作流程。

  3. 按右鍵預測-1組件,在捷徑功能表中,選擇查看資料 > 預測結果輸出,查看預測結果。image

  4. 按右鍵PS-SMART迴歸-1組件,在捷徑功能表,選擇查看資料 > 輸出特徵重要性表,查看特徵重要性。 image

    其中id列表示傳入的特徵序號。因為該樣本的輸入資料是KV格式,所以id列表示KV對中的key。該特性重要性表中僅有2個特性,表示樹在分裂過程中僅使用了這兩個特性,可以認為其他特性的特徵重要性為0。value列表示特徵重要性類型,預設為gain,即該特徵對模型帶來的資訊增益之和。

PS-SMART模型部署說明

如果您需要將PS-SMART組件產生的模型部署為線上服務,您需要在該組件的下遊接入通用模型匯出組件,並按照PS系列組件的使用方式配置組件參數,詳情請參見通用模型匯出

組件運行成功後,您可以前往PAI EAS模型線上服務頁面,部署模型服務,詳情請參見服務部署:控制台

相關文檔

  • 關於Designer組件更詳細的內容介紹,請參見Designer概述

  • Designer預置了多種演算法組件,你可以根據不同的使用情境選擇合適的組件進行資料處理,詳情請參見組件參考:所有組件匯總