全部產品
Search
文件中心

Platform For AI:標準化

更新時間:Jul 13, 2024

本文為您介紹Designer提供的標準化組件。

背景資訊

  • 對一個表的某一列或多列,進行標準化處理,將產生的資料存入新表中。

  • 標準化所使用的公式 :(X - Mean)/(standard deviation)。

    • Mean:樣本平均值。

    • standard deviation:樣本標準差,針對從總體抽樣,利用樣本來計算總體偏差,為了使算出的值與總體水平更接近,就必須將算出的標準差的值適度放大,即 standard deviation

    • 樣本標準差公式:expression

      其中x代表所採用的樣本X1,X2,…,Xn的均值。

組件配置

您可以使用以下任意一種方式,配置標準化組件參數。

方式一:可視化方式

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

頁簽

參數

描述

欄位設定

預設全選

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

保留原始列

處理過的列增加“stdized_”首碼。支援DOUBLE類型與BIGINT類型。

執行調優

計算核心數

系統根據輸入資料量,自動分配訓練的執行個體數量。

每個核記憶體數

系統根據輸入資料量,自動分配記憶體。單位為MB。

方式二:PAI命令方式

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

  • 稠密資料的命令

    PAI -name Standardize
        -project algo_public 
        -DkeepOriginal="false"    
        -DoutputTableName="test_5"
        -DinputTablePartitions="pt=20150501"  
        -DinputTableName="bank_data_partition" 
        -DselectedColNames="euribor3m,pdays"
  • 稀疏資料的命令

    PAI -name Standardize    
        -project projectxlib4
        -DkeepOriginal="true"
        -DoutputTableName="kv_standard_output"
        -DinputTableName=kv_standard_test
        -DselectedColNames="f0,f1,f2"
        -DenableSparse=true
        -DoutputParaTableName=kv_standard_model    
        -DkvIndices=1,2,8,6
        -DitemDelimiter=",";

參數名稱

是否必選

參數描述

預設值

inputTableName

輸入表的表名。

selectedColNames

輸入表中,參與訓練的列。列名以英文逗號(,)分隔,支援INT和DOUBLE類型。如果輸入為稀疏格式,則支援STRING類型的列。

所有列

inputTablePartitions

輸入表中,參與訓練的分區。支援以下格式:

  • Partition_name=value

  • name1=value1/name2=value2:多級格式

說明

如果指定多個分區,則使用英文逗號(,)分隔。

所有分區

outputTableName

輸出結果表。

outputParaTableName

配置輸出表。

inputParaTableName

配置輸入表。

keepOriginal

是否保留原始列:

  • true:處理過的列重新命名(“stdized_”首碼),原始列保留。

  • false:全部列保留且不重新命名。

false

lifecycle

輸出表生命週期。

coreNum

核心數量。

系統自動分配

memSizePerCore

單個核心使用的記憶體數。

系統自動分配

enableSparse

是否開啟稀疏支援:

  • true

  • false

false

itemDelimiter

KV對之間分隔字元。

預設”,”

kvDelimiter

Key和Value之間分隔字元。

預設”:”

kvIndices

KV表中需要歸一化的特徵索引。

樣本

詳細樣本

drop table if exists standardize_test_input;
create table standardize_test_input(
    col_string string,
    col_bigint bigint,
    col_double double,
    col_boolean boolean,
    col_datetime datetime);
insert overwrite table standardize_test_input
select
    *
from
(
    select
        '01' as col_string,
        10 as col_bigint,
        10.1 as col_double,
        True as col_boolean,
        cast('2016-07-01 10:00:00' as datetime) as col_datetime
    union all
        select
            cast(null as string) as col_string,
            11 as col_bigint,
            10.2 as col_double,
            False as col_boolean,
            cast('2016-07-02 10:00:00' as datetime) as col_datetime
    union all
        select
            '02' as col_string,
            cast(null as bigint) as col_bigint,
            10.3 as col_double,
            True as col_boolean,
            cast('2016-07-03 10:00:00' as datetime) as col_datetime
    union all
        select
            '03' as col_string,
            12 as col_bigint,
            cast(null as double) as col_double,
            False as col_boolean,
            cast('2016-07-04 10:00:00' as datetime) as col_datetime
    union all
        select
            '04' as col_string,
            13 as col_bigint,
            10.4 as col_double,
            cast(null as boolean) as col_boolean,
            cast('2016-07-05 10:00:00' as datetime) as col_datetime
    union all
        select
            '05' as col_string,
            14 as col_bigint,
            10.5 as col_double,
            True as col_boolean,
            cast(null as datetime) as col_datetime
) tmp;
  • PAI命令列

    drop table if exists standardize_test_input_output;
    drop table if exists standardize_test_input_model_output;
    PAI -name Standardize
        -project algo_public
        -DoutputParaTableName="standardize_test_input_model_output"
        -Dlifecycle="28"
        -DoutputTableName="standardize_test_input_output"
        -DinputTableName="standardize_test_input"
        -DselectedColNames="col_double,col_bigint"
        -DkeepOriginal="true";
    drop table if exists standardize_test_input_output_using_model;
    drop table if exists standardize_test_input_output_using_model_model_output;
    PAI -name Standardize
        -project algo_public
        -DoutputParaTableName="standardize_test_input_output_using_model_model_output"
        -DinputParaTableName="standardize_test_input_model_output"
        -Dlifecycle="28"
        -DoutputTableName="standardize_test_input_output_using_model"
        -DinputTableName="standardize_test_input";
  • 輸入說明

    standardize_test_input

    col_string

    col_bigint

    col_double

    col_boolean

    col_datetime

    01

    10

    10.1

    true

    2016-07-01 10:00:00

    NULL

    11

    10.2

    false

    2016-07-02 10:00:00

    02

    NULL

    10.3

    true

    2016-07-03 10:00:00

    03

    12

    NULL

    false

    2016-07-04 10:00:00

    04

    13

    10.4

    NULL

    2016-07-05 10:00:00

    05

    14

    10.5

    true

    NULL

  • 輸出說明

    • standardize_test_input_output

      col_string

      col_bigint

      col_double

      col_boolean

      col_datetime

      stdized_col_bigint

      stdized_col_double

      01

      10

      10.1

      true

      2016-07-01 10:00:00

      -1.2649110640673518

      -1.2649110640683832

      NULL

      11

      10.2

      false

      2016-07-02 10:00:00

      -0.6324555320336759

      -0.6324555320341972

      02

      NULL

      10.3

      true

      2016-07-03 10:00:00

      NULL

      0.0

      03

      12

      NULL

      false

      2016-07-04 10:00:00

      0.0

      NULL

      04

      13

      10.4

      NULL

      2016-07-05 10:00:00

      0.6324555320336759

      0.6324555320341859

      05

      14

      10.5

      true

      NULL

      1.2649110640673518

      1.2649110640683718

    • standardize_test_input_model_output

      feature

      json

      col_bigint

      {“name”: “standardize”, “type”:”bigint”, “paras”:{“mean”:12, “std”: 1.58113883008419}}

      col_double

      {“name”: “standardize”, “type”:”double”, “paras”:{“mean”:10.3, “std”: 0.1581138830082909}}

    • standardize_test_input_output_using_model

      col_string

      col_bigint

      col_double

      col_boolean

      col_datetime

      01

      -1.2649110640673515

      -1.264911064068383

      true

      2016-07-01 10:00:00

      NULL

      -0.6324555320336758

      -0.6324555320341971

      false

      2016-07-02 10:00:00

      02

      NULL

      0.0

      true

      2016-07-03 10:00:00

      03

      0.0

      NULL

      false

      2016-07-04 10:00:00

      04

      0.6324555320336758

      0.6324555320341858

      NULL

      2016-07-05 10:00:00

      05

      1.2649110640673515

      1.2649110640683716

      true

      NULL

    • standardize_test_input_output_using_model_model_output

      feature

      json

      col_bigint

      {“name”: “standardize”, “type”:”bigint”, “paras”:{“mean”:12, “std”: 1.58113883008419}}

      col_double

      {“name”: “standardize”, “type”:”double”, “paras”:{“mean”:10.3, “std”: 0.1581138830082909}}