すべてのプロダクト
Search
ドキュメントセンター

Platform For AI:1つのホットエンコード

最終更新日:Jul 22, 2024

ワンホットエンコーディングは、特徴の複数の値を複数のバイナリ特徴に変換することができる。 バイナリ機能は相互に排他的であり、一度に有効にできる機能は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パラメーターの値が空でない文字列の場合、パラメーターで指定されたテーブルは空でないモデルテーブルです。

  • オンホットエンコーディングが必要な列では、離散化のために数千万の値を指定できます。

  • トレーニング済みモデルを次回エンコード用のモデルとして使用する場合、dropLastignoreNull、およびreserveColsパラメーターの値を変更することはできません。 これは、これらのパラメータの設定に基づいて生成された出力結果がモデルに統合されるためです。 3つのパラメータを変更する場合は、モデルを再度トレーニングする必要があります。

  • 出力テーブルをkey-value形式でエクスポートすることを推奨します。 テーブル形式を使用する場合、最大1,024列をエクスポートできます。 エクスポートされた列の数が値を超えると、エラーが報告され、エンコードは失敗します。

  • デフォルトでは、ワンホットエンコード後に生成されるkey-value形式の出力テーブルは0からエンコードされます。

  • トレーニング済みモデルを使用して新しいデータをエンコードし、モデルマッピングテーブルでデータの離散マグニチュードが見つからない場合、離散マグニチュードは無視されます。 これは、離散振幅が符号化されないことを示す。 離散マグニチュードをエンコードする必要がある場合は、モデルマッピングテーブルを再度トレーニングする必要があります。

例:

  1. 次の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;
  2. 次の表に示すデータをテスト用にインポートします。

    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型です。

  3. テスト結果で次のモデルマッピングテーブルを取得します。

    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コンポーネントを使用してデータをエンコードします。 次の図は、実験プロセスを示しています。 Process

  • One Hot Encodingコンポーネントのトレーニング済みモデルを使用して、データをエンコードします。 次の図は、実験プロセスを示しています。 Experiment