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

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

最終更新日:Dec 19, 2024

1つのホットエンコーディングは、m個の可能な値を持つ特徴をm個のバイナリ特徴に変換します。 任意の時点でアクティブなフィーチャは1つだけであり、その結果、スパースデータセットのポストエンコーディングが行われます。 出力はスパースキー値構造です。

概要

One Hot Encodingコンポーネントは、トレーニングと予測の機能を提供します。

  • トレーニング:

    • 入力ノード: 左側の入力ノード (入力テーブル名) はトレーニングデータ用です。 トレーニング中、右の入力ノードは必要ありません。

      image

    • 出力ノード: コンポーネントは2つの出力ノードを提供します。 左のノードはエンコードされた結果テーブルであり、右のノードは同じタイプの新しいデータをエンコードするために使用されるモデルテーブルです。

  • 予測:

    右側の入力ノード (入力モデルテーブル) はモデル入力用です。 既存の1つのホットモデルを使用して、新しいデータをエンコードできます。

コンポーネントの設定

次のいずれかの方法を使用して、one Hot Encodingコンポーネントを設定できます。

方法1: パイプラインページでコンポーネントを設定する

パイプラインページで次のパラメーターを設定します。

タブ

パラメーター

説明

フィールド設定

バイナリ列の選択

必須。 バイナリ化が必要なフィールド。

その他の予約済み機能

キーと値の形式で予約およびエクスポートされる機能。 選択したフィールドは、キーと値の形式でフィーチャとしてエクスポートされます。 フィールドはDOUBLE型でなければなりません。 それらはワンホット符号化の対象ではなく、0から符号化される。

追加された列

必要に応じて、 出力テーブルに追加される列。

パラメーター設定

ライフサイクル

出力テーブルのライフサイクル。 デフォルト値 : 7

出力テーブルタイプ

出力テーブルのタイプ。 有効な値: KVおよびTable。 離散化が必要なフィーチャの数が多い場合は、このパラメーターをKVに設定することを推奨します。 このパラメーターをTableに設定すると、出力テーブルに最大1,024個の列を含めることができます。

コア

コアの数。

ノードあたりのメモリサイズ

各コアのメモリサイズ。 単位:MB。

最後の列挙のエンコーディングの削除

trueに設定すると、エンコードされたデータの線形独立性が保証されます。

空の要素を無視

trueに設定した場合、空の要素はエンコードされません。

方法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

不可

エンコードに使用されるモデルテーブル。

説明

inputModelTableoutputModelTableのいずれかが空でない文字列である必要があります。 inputModelTableが空でない場合、対応するテーブルは空でないモデルテーブルである必要があります。

Empty string

outputModelTable

不可

出力モデルテーブル。

説明

inputModelTableoutputModelTableのいずれかが空でない文字列である必要があります。

Empty string

ライフサイクル

不可

出力テーブルのライフサイクル。

7

dropLast

最後の列挙子のエンコード結果を削除するかどうかを指定します。 このパラメータがtrueに設定されている場合、エンコードされたデータの線形独立性が保証されます。

false

outputTableType

出力テーブルのタイプ。 有効な値: kv (疎テーブル) およびtable (密テーブル) 。 離散化が必要なフィーチャの数が多い場合は、このパラメーターをkvに設定することを推奨します。 このパラメーターをtableに設定すると、出力テーブルに最大1,024個の列を含めることができます。 エクスポートされた列の数が値を超えると、エラーが報告されます。

kv

ignoreNull

エンコーディングが必要なデータの空の要素を無視するかどうかを指定します。 このパラメーターをtrueに設定すると、空の要素はエンコードされません。

false

coreNum

不可

コアの数。

システムによって決定される

memSizePerCore

不可

各コアのメモリサイズ。 単位:MB。 有効値: [2048,64 × 1024] 。

システムによって決定される

説明
  • エンコーディングフィールド列は、最大数千万の離散値をサポートできます。

  • 後続のエンコーディングにトレーニング済みモデルを使用する場合、パラメーターdropLastignoreNull、およびreserveColsはモデル内で固定され、変更できません。 これらのパラメータを変更するには、再度トレーニングする必要があります。

  • デフォルトでは、One Hot Encodingによって生成されるkvテーブルはゼロベースの番号付けを使用します。

  • モデルを使用して新しいデータをエンコードするとき、データがモデルのマッピングテーブルに存在しない離散値を含む場合、これらの値は無視され、エンコードされません。 これらの値をエンコードするには、モデルマッピングテーブルを再トレーニングする必要があります。

例:

  1. サンプル入力データ。

    f0(BIGINT)

    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

  2. SQLスクリプトコンポーネントでOne Hot Encodingパラメーターを次のように設定します。

    PAI -project algo_public -name one_hot --Default component parameters, no modification needed
      -DinputTable=one_hot
      -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;
  3. 実行が成功したら、出力結果を表示します。

    • One Hot Encodingからの出力モデルテーブルは次のとおりです。

      col_name

      col_値

      マッピング

      _予約_

      f3

      0

      f0

      12

      1

      f0

      3

      2

      f0

      34

      3

      f0

      null

      4

      f2

      0

      5

      f2

      22222222000

      6

      f2

      33333333000

      7

      f4

      0

      8

      f4

      1

      9

      f4

      null

      10

      モデルマッピングテーブルの一番上の行は予約行で、列名は予約に固定されています。 この行には、リザーブ情報が格納されます。 残りの行は、符号化のマッピング情報に対応する。

    • エンコードされた結果テーブル

      テーブル

      f0

      f2

      f4

      _reserve__f3_0

      f0_12_1

      f0_3_2

      f0_34_3

      f0_null_4

      f2_0_5

      f2_22222222_6

      f2_33333333_7

      f4_0_8

      f4_1_9

      f4_null_10

      12

      1970-09-15 12:50:22

      true

      0.1

      1.0

      0.0

      0.0

      0.0

      0.0

      1.0

      0.0

      0.0

      1.0

      0.0

      12

      1971-01-22 03:15:33

      false

      0.4

      1.0

      0.0

      0.0

      0.0

      0.0

      0.0

      1.0

      1.0

      0.0

      0.0

      NULL

      1970-01-01 08:00:00

      NULL

      0.2

      0.0

      0.0

      0.0

      1.0

      1.0

      0.0

      0.0

      0.0

      0.0

      1.0

      3

      1970-01-01 08:00:00

      false

      0.3

      0.0

      1.0

      0.0

      0.0

      1.0

      0.0

      0.0

      1.0

      0.0

      0.0

      34

      1970-09-15 12:50:22

      NULL

      0.4

      0.0

      0.0

      1.0

      0.0

      0.0

      1.0

      0.0

      0.0

      0.0

      1.0

      3

      1970-09-15 12:50:22

      true

      0.2

      0.0

      1.0

      0.0

      0.0

      0.0

      1.0

      0.0

      0.0

      1.0

      0.0

      3

      1970-09-15 12:50:22

      false

      0.3

      0.0

      1.0

      0.0

      0.0

      0.0

      1.0

      0.0

      1.0

      0.0

      0.0

      3

      1970-01-01 08:00:00

      true

      0.2

      0.0

      1.0

      0.0

      0.0

      1.0

      0.0

      0.0

      0.0

      1.0

      0.0

      3

      1971-01-22 03:15:33

      false

      0.1

      0.0

      1.0

      0.0

      0.0

      0.0

      0.0

      1.0

      1.0

      0.0

      0.0

      NULL

      1970-01-01 08:00:00

      false

      0.3

      0.0

      0.0

      0.0

      1.0

      1.0

      0.0

      0.0

      1.0

      0.0

      0.0

      KV

      f0

      f2

      f4

      kv

      12

      1970-09-15 12:50:22

      true

      0:0.1,1:1,6:1,9:1

      12

      1971-01-22 03:15:33

      false

      0:0.4,1:1,7:1,8:1

      NULL

      1970-01-01 08:00:00

      NULL

      0:0.2,4:1,5:1,10:1

      3

      1970-01-01 08:00:00

      false

      0:0.3,2:1,5:1,8:1

      34

      1970-09-15 12:50:22

      NULL

      0:0.4,3:1,6:1,10:1

      3

      1970-09-15 12:50:22

      true

      0:0.2,2:1,6:1,9:1

      3

      1970-09-15 12:50:22

      false

      0:0.3,2:1,6:1,8:1

      3

      1970-01-01 08:00:00

      true

      0:0.2,2:1,5:1,9:1

      3

      1971-01-22 03:15:33

      false

      0:0.1,2:1,7:1,8:1

      NULL

      1970-01-01 08:00:00

      false

      0:0.3,4:1,5: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

コンソールのメモを使用する

  • エンコードにコンポーネントを直接使用します。 流程

  • コンポーネントを使用してモデルをトレーニングします。 次に、モデルを使用してデータをエンコードします。实验