全部產品
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支援多種資料格式及長條圖近似等最佳化技術。

使用限制

支援的計算引擎為MaxCompute。

使用說明

  • PS-SMART二分類訓練組件的目標列僅支援數實值型別,且0表示負例,1表示正例。如果MaxCompute表資料是STRING類型,則需要進行類型轉換。例如,分類目標是Good/Bad字串,需要轉換為1/0

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

  • 雖然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

選擇權重列

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

參數設定

評估指標類型

支援以下幾種類型:

  • negative loglikelihood for logistic regression

  • binary classification error

  • Area under curve for classification

樹數量

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

樹最大深度

預設值為5,即最多16個葉子節點。取值為正整數。

資料採樣比例

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

特徵採樣比例

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

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_binary_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="f0,f1,f2,f3,f4,f5"
    -DenableSparse="false"
    -Dobjective="binary:logistic"
    -Dmetric="error"
    -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_binary_input"
    -DmodelName="xlab_m_pai_ps_smart_bi_545859_v0"
    -DoutputTableName="pai_temp_24515_545860_1"
    -DfeatureColNames="f0,f1,f2,f3,f4,f5"
    -DappendColNames="label,qid,f0,f1,f2,f3,f4,f5"
    -DenableSparse="false"
    -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的表,二進位格式,不支援讀取,只能通過SMART的預測組件擷取。

lifecycle

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

3

演算法參數

objective

目標函數類型。如果進行二分類訓練,則選擇binary:logistic

metric

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

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

  • error:對應可視化方式中的binary classification error類型。

  • auc:對應可視化方式中的Area under curve for classification類型。

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

調優參數

coreNum

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

系統自動分配

memSizePerCore

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

系統自動分配

樣本

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

    drop table if exists smart_binary_input;
    create table smart_binary_input lifecycle 3 as
    select
    *
    from
    (
    select 0.72 as f0, 0.42 as f1, 0.55 as f2, -0.09 as f3, 1.79 as f4, -1.2 as f5, 0 as label
    union all
    select 1.23 as f0, -0.33 as f1, -1.55 as f2, 0.92 as f3, -0.04 as f4, -0.1 as f5, 1 as label
    union all
    select -0.2 as f0, -0.55 as f1, -1.28 as f2, 0.48 as f3, -1.7 as f4, 1.13 as f5, 1 as label
    union all
    select 1.24 as f0, -0.68 as f1, 1.82 as f2, 1.57 as f3, 1.18 as f4, 0.2 as f5, 0 as label
    union all
    select -0.85 as f0, 0.19 as f1, -0.06 as f2, -0.55 as f3, 0.31 as f4, 0.08 as f5, 1 as label
    union all
    select 0.58 as f0, -1.39 as f1, 0.05 as f2, 2.18 as f3, -0.02 as f4, 1.71 as f5, 0 as label
    union all
    select -0.48 as f0, 0.79 as f1, 2.52 as f2, -1.19 as f3, 0.9 as f4, -1.04 as f5, 1 as label
    union all
    select 1.02 as f0, -0.88 as f1, 0.82 as f2, 1.82 as f3, 1.55 as f4, 0.53 as f5, 0 as label
    union all
    select 1.19 as f0, -1.18 as f1, -1.1 as f2, 2.26 as f3, 1.22 as f4, 0.92 as f5, 0 as label
    union all
    select -2.78 as f0, 2.33 as f1, 1.18 as f2, -4.5 as f3, -1.31 as f4, -1.8 as f5, 1 as label
    ) tmp;

    產生的訓練資料如下。image

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

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

    2. 參照上圖,通過連線的方式,將各個節點群組織構建成為一個有上下遊關係的工作流程。

    3. 配置組件參數。

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

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

        頁簽

        參數

        描述

        欄位設定

        特徵列

        選擇f0f1f2f3f4、及f5列。

        標籤列

        選擇label列。

        參數設定

        評估指標類型

        選擇Area under curve for classification

        樹數量

        輸入5

      • 在畫布中單擊預測-1組件,在右側欄位設定頁簽,選擇原樣輸出資料行全選。其餘參數使用預設值。

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

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

  3. 按右鍵預測-1組件,在捷徑功能表中,選擇查看資料 > 預測結果輸出,查看預測結果。image其中prediction_detail列的1表示正例,0表示負例。

  4. 按右鍵PS-SMART二分類訓練-1組件,在捷徑功能表,選擇查看資料 > 輸出特徵重要性表,查看特徵重要性表。image其中:

    • id:表示傳入的特徵序號。因為該樣本傳入的特徵為f0f1f2f3f4f5,所以id列的0表示f0特徵列,id列的4表示f4特徵列。如果輸入資料是KV格式,則id列表示KV中的key

    • value:表示特徵重要性類型,預設為gain,即該特徵對模型帶來的資訊增益之和。

    • 該特性重要性表中僅有3個特性,表示樹在分裂過程中僅使用了這三個特性,可以認為其他特性的特徵重要性為0。

PS-SMART模型部署說明

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

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

相關文檔

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

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