本文為您介紹Designer提供的標準化組件。
背景資訊
對一個表的某一列或多列,進行標準化處理,將產生的資料存入新表中。
標準化所使用的公式 :(X - Mean)/(standard deviation)。
Mean:樣本平均值。
standard deviation:樣本標準差,針對從總體抽樣,利用樣本來計算總體偏差,為了使算出的值與總體水平更接近,就必須將算出的標準差的值適度放大,即 。
樣本標準差公式:。
其中代表所採用的樣本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 | 否 | 輸入表中,參與訓練的分區。支援以下格式:
說明 如果指定多個分區,則使用英文逗號(,)分隔。 | 所有分區 |
outputTableName | 是 | 輸出結果表。 | 無 |
outputParaTableName | 是 | 配置輸出表。 | 無 |
inputParaTableName | 否 | 配置輸入表。 | 無 |
keepOriginal | 否 | 是否保留原始列:
| false |
lifecycle | 否 | 輸出表生命週期。 | 無 |
coreNum | 否 | 核心數量。 | 系統自動分配 |
memSizePerCore | 否 | 單個核心使用的記憶體數。 | 系統自動分配 |
enableSparse | 否 | 是否開啟稀疏支援:
| 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}}