ワンホットエンコーディングは、特徴の複数の値を複数のバイナリ特徴に変換することができる。 バイナリ機能は相互に排他的であり、一度に有効にできる機能は1つだけです。 ワンホットエンコーディングの後、出力データはスパース形式のキーと値のペアで構成されます。
概要
One Hot Encodingコンポーネントは、トレーニング機能と予測機能を提供します。
トレーニング機能:
入力ノード: このコンポーネントの最初の (左) 入力ノードはトレーニングデータの入力であり、2番目の (右) 入力ノードはトレーニング中に設定する必要はありません。
出力ノード: このコンポーネントには2つの出力ノードがあります。 左のものはエンコードされた出力テーブルであり、右のものは出力モデルテーブルである。 出力モデルテーブルは、同じタイプの新しいデータのワンホット符号化を実行するために使用される。
予測機能:
One Hot Encodingコンポーネントの2番目 (右) の入力ノードは、one-hotエンコードモデルをインポートするために使用されます。 既存のワンホット符号化モデルを使用して、新しいデータを符号化することができる。
コンポーネントの設定
次のいずれかの方法を使用して、one Hot Encodingコンポーネントを設定できます。
方法1: パイプラインページでコンポーネントを設定する
One Hot Encodingコンポーネントのパラメーターは、Machine Learning Platform for AI (PAI) のMachine Learning Designerのパイプラインページで設定できます。 Machine Learning Designerは、以前はMachine Learning Studioとして知られていました。 下表に、各パラメーターを説明します。
タブ | パラメーター | 説明 |
フィールド設定 | バイナリ化列 | 必須。 バイナリ化が必要なフィールド。 |
その他の予約済み機能 | キーと値の形式で予約およびエクスポートされる機能。 選択したフィールドは、キーと値の形式でフィーチャとしてエクスポートされます。 フィールドはDOUBLE型でなければなりません。 それらはワンホット符号化の対象ではなく、0から符号化される。 | |
追加された列 | オプションです。 出力テーブルに追加される列。 | |
パラメーター設定 | ライフサイクル | 出力テーブルのライフサイクル。 デフォルト値 : 7 |
出力テーブルタイプ | 出力テーブルのタイプ。 有効な値: KVおよびTable。 離散化が必要なフィーチャの数が多い場合は、このパラメーターをKVに設定することを推奨します。 このパラメーターをTableに設定すると、出力テーブルに最大1,024個の列を含めることができます。 エクスポートされた列の数が値を超えると、エラーが報告されます。 | |
コア | コアの数。 | |
ノードあたりのメモリサイズ | 各コアのメモリサイズ。 単位:MB。 | |
最後の列挙のエンコーディングの削除 | このチェックボックスをオンにすると、エンコードされたデータの線形独立性が保証されます。 | |
空の要素を無視 | このチェックボックスをオンにすると、空の要素はエンコードされません。 |
方法2: PAIコマンドを使用する
PAIコマンドを使用してコンポーネントパラメータを設定します。 SQLスクリプトコンポーネントを使用してPAIコマンドを呼び出すことができます。 詳細については、「SQLスクリプト」をご参照ください。
PAI -name one_hot
-project algo_public
-DinputTable=one_hot_test
-DbinaryCols=f0,f1,f2
-DmodelTable=one_hot_model
-DoutputTable=one_hot_output
-Dlifecycle=28;
パラメーター | 必須 | 説明 | デフォルト値 |
inputTable | 可 | 入力テーブルの名前。 | デフォルト値なし |
inputTablePartitions | 不可 | トレーニング用に入力テーブルから選択されたパーティション。 | 入力テーブルのすべてのパーティション |
binaryCols | 可 | ワンホットエンコードが必要なフィールド。 これらのフィールドは列挙機能である必要があり、そのデータ型は制限されません。 | デフォルト値なし |
reserveCols | 不可 | キーと値の形式でフィーチャとしてエクスポートされる選択されたフィールド。 フィールドはDOUBLE型でなければなりません。 それらはワンホット符号化の対象ではなく、0から符号化される。 | Empty string |
appendCols | 不可 | 出力テーブルにエクスポートされる選択されたフィールドは、入力テーブルと同じです。 | デフォルト値なし |
outputTable | 可 | ワンホットエンコード後に生成される出力テーブル。 エンコード結果はkey-value形式で保存されます。 | デフォルト値なし |
inputModelTable | 不可 | ワンホットエンコードの入力モデルテーブル。 説明 inputModelTableまたはoutputModelTableパラメーターの値は、空でない文字列である必要があります。 | Empty string |
outputModelTable | 不可 | ワンホット符号化の出力モデルテーブル。 説明 inputModelTableまたはoutputModelTableパラメーターの値は、空でない文字列である必要があります。 | Empty string |
ライフサイクル | 不可 | 出力テーブルのライフサイクル。 | 7 |
dropLast | 可 | 最後の列挙子のエンコード結果を削除するかどうかを指定します。 このパラメータがtrueに設定されている場合、エンコードされたデータの線形独立性が保証されます。 | false |
outputTableType | 可 | 出力テーブルのタイプ。 有効な値: kvとtable。 離散化が必要なフィーチャの数が多い場合は、このパラメーターをkvに設定することを推奨します。 このパラメーターをtableに設定すると、出力テーブルに最大1,024個の列を含めることができます。 エクスポートされた列の数が値を超えると、エラーが報告されます。 | kv |
ignoreNull | 可 | エンコーディングが必要なデータの空の要素を無視するかどうかを指定します。 このパラメーターをtrueに設定すると、空の要素はエンコードされません。 | false |
coreNum | 不可 | コアの数。 | システムによって決定される |
memSizePerCore | 不可 | 各コアのメモリサイズ。 単位:MB。 有効値: [2048,64 × 1024] 。 | システムによって決定される |
inputModelTableまたはoutputModelTableパラメーターの値は、空でない文字列である必要があります。 inputModelTableパラメーターの値が空でない文字列の場合、パラメーターで指定されたテーブルは空でないモデルテーブルです。
オンホットエンコーディングが必要な列では、離散化のために数千万の値を指定できます。
トレーニング済みモデルを次回エンコード用のモデルとして使用する場合、dropLast、ignoreNull、およびreserveColsパラメーターの値を変更することはできません。 これは、これらのパラメータの設定に基づいて生成された出力結果がモデルに統合されるためです。 3つのパラメータを変更する場合は、モデルを再度トレーニングする必要があります。
出力テーブルをkey-value形式でエクスポートすることを推奨します。 テーブル形式を使用する場合、最大1,024列をエクスポートできます。 エクスポートされた列の数が値を超えると、エラーが報告され、エンコードは失敗します。
デフォルトでは、ワンホットエンコード後に生成されるkey-value形式の出力テーブルは0からエンコードされます。
トレーニング済みモデルを使用して新しいデータをエンコードし、モデルマッピングテーブルでデータの離散マグニチュードが見つからない場合、離散マグニチュードは無視されます。 これは、離散振幅が符号化されないことを示す。 離散マグニチュードをエンコードする必要がある場合は、モデルマッピングテーブルを再度トレーニングする必要があります。
例:
次のSQL文を実行してトレーニングデータを生成します。
PAI -project projectxlib4 -name one_hot -DinputTable=one_hot_yh -DbinaryCols=f0,f2,f4 -DoutputModelTable=one_hot_model_8 -DoutputTable=one_hot_in_table_1_output_8 -DdropLast=false -DappendCols=f0,f2,f4 -DignoreNull=false -DoutputTableType=table -DreserveCols=f3 -DcoreNum=4 -DmemSizePerCore=2048;
次の表に示すデータをテスト用にインポートします。
f0
f1
f2
f3
f4
12
プレフィックス1
1970-09-15 12:50:22
0.1
true
12
プレフィックス3
1971-01-22 03:15:33
0.4
false
NULL
プレフィックス3
1970-01-01 08:00:00
0.2
NULL
3
NULL
1970-01-01 08:00:00
0.3
false
34
NULL
1970-09-15 12:50:22
0.4
NULL
3
プレフィックス1
1970-09-15 12:50:22
0.2
true
3
プレフィックス1
1970-09-15 12:50:22
0.3
false
3
プレフィックス3
1970-01-01 08:00:00
0.2
true
3
プレフィックス3
1971-01-22 03:15:33
0.1
false
NULL
プレフィックス3
1970-01-01 08:00:00
0.3
false
上記の入力テーブルでは、f0列はBIGINT型、f1列はSTRING型、f2列はDATETIME型、f3列はDOUBLE型、f4列はBOOLEAN型です。
テスト結果で次のモデルマッピングテーブルを取得します。
col_name
col_値
マッピング
_予約_
f3
0
f0
12
1
f0
3
2
f0
34
3
f0
null
4
f2
22222222222
5
f2
33333333333
6
f2
4
7
f4
0
8
f4
1
9
f4
null
10
モデルマッピングテーブルの一番上の行は予約行で、列名は予約に固定されています。 この行には、リザーブ情報が格納されます。 残りの行は、符号化のマッピング情報に対応する。
テーブル形式でエンコードされたテーブル
f0
f1
f3
f4
_reserve__f3_0
f0_12_1
f0_3_2
f0_34_3
f0_null_4
f2_22222222_5
f2_33333333_6
f2_4_7
f4_0_8
f4_1_9
f4_null_10
12
プレフィックス1
0.1
true
0.1
1.0
0.0
0.0
0.0
1.0
0.0
0.0
0.0
1.0
0.0
12
プレフィックス3
0.4
false
0.4
1.0
0.0
0.0
0.0
0.0
1.0
0.0
1.0
0.0
0.0
NULL
プレフィックス3
0.2
NULL
0.2
0.0
0.0
0.0
1.0
0.0
0.0
1.0
0.0
0.0
1.0
3
NULL
0.3
false
0.3
0.0
1.0
0.0
0.0
0.0
0.0
1.0
1.0
0.0
0.0
34
NULL
0.4
NULL
0.4
0.0
0.0
1.0
0.0
1.0
0.0
0.0
0.0
0.0
1.0
3
プレフィックス1
0.2
true
0.2
0.0
1.0
0.0
0.0
1.0
0.0
0.0
0.0
1.0
0.0
3
プレフィックス1
0.3
false
0.3
0.0
1.0
0.0
0.0
1.0
0.0
0.0
1.0
0.0
0.0
3
プレフィックス3
0.2
true
0.2
0.0
1.0
0.0
0.0
0.0
0.0
1.0
0.0
1.0
0.0
3
プレフィックス3
0.1
false
0.1
0.0
1.0
0.0
0.0
0.0
1.0
0.0
1.0
0.0
0.0
NULL
プレフィックス3
0.3
false
0.3
0.0
0.0
0.0
1.0
0.0
0.0
1.0
1.0
0.0
0.0
キーと値の形式でエンコードされたテーブル
f0
f1
f3
f4
kv
12
プレフィックス1
0.1
true
0:0.1,1:1,5:1,9:1
12
プレフィックス3
0.4
false
0:0.4,1:1,6:1,8:1
NULL
プレフィックス3
0.2
NULL
0:0.2,4:1,7:1,10:1
3
NULL
0.3
false
0:0.3,2:1,7:1,8:1
34
NULL
0.4
NULL
0:0.4,3:1,5:1,10:1
3
プレフィックス1
0.2
true
0:0.2,2:1,5:1,9:1
3
プレフィックス1
0.3
false
0:0.3,2:1,5:1,8:1
3
プレフィックス3
0.2
true
0:0.2,2:1,7:1,9:1
3
プレフィックス3
0.1
false
0:0.1,2:1,6:1,8:1
NULL
プレフィックス3
0.3
false
0:0.3,4:1,7:1,8:1
スケーラビリティテスト
テストデータ: サンプル数は200万、列挙子数は100,000です。 試験データを以下の表に示す。
f0 | f1 |
94 | プレフィックス3689 |
9664 | プレフィックス5682 |
2062 | prefix5530 |
9075 | プレフィックス9854 |
9836 | プレフィックス1764 |
5140 | prefix1149 |
3455 | プレフィックス7272 |
2508 | プレフィックス7139 |
7993 | prefix1551 |
5602 | プレフィックス4606 |
3132 | プレフィックス5767 |
テスト結果を次の表に示します。
コアnum | 電車の時間 | 予測時間 | 加速比 |
5 | 84s | 181s | 1/1 |
10 | 60s | 93s | 1.4/1.95 |
20 | 46s | 56s | 1.8/3.23 |
コンソールでテストを実行するときの使用状況のメモ:
One Hot Encodingコンポーネントを使用してデータをエンコードします。 次の図は、実験プロセスを示しています。
One Hot Encodingコンポーネントのトレーニング済みモデルを使用して、データをエンコードします。 次の図は、実験プロセスを示しています。