表形式の組み込みアルゴリズム用のデータの前処理

このページでは、AI Platform の組み込みアルゴリズムを使用してトレーニングを行う際にデータがどのように前処理されるかの概要を示します。さらに、入力データの要件と制限事項についても説明します。

表形式の組み込みアルゴリズム

表形式データ(数値およびカテゴリデータ)を受け取る組み込みアルゴリズムには、いくつかの前処理機能があります。

表形式の各組み込みアルゴリズムで前処理がどのように行われるかについて詳しくは、以下の対応するガイドをご覧ください。

XGBoost アルゴリズムの分散バージョンでは、自動前処理がサポートされていません。

入力データを整形する

入力データは UTF-8 でエンコードされた CSV ファイルでなければなりません。

入力 CSV ファイルを準備する際、以下の要件を守ってください。

  • ヘッダー行を削除する。ヘッダー行には各列のラベルが含まれています。ヘッダー行がトレーニング データの一部として残りのデータ インスタンスと一緒に送信されないようにするため、ヘッダー行を削除します。
  • 1 列目をターゲット列にする。ターゲット列に予測対象の値が含まれています。分類アルゴリズムの場合、ターゲット列の値はすべてクラスまたはカテゴリにします。回帰アルゴリズムの場合、ターゲット列の値はすべて数値にします。

前処理の仕組み

自動前処理は、カテゴリデータと数値データに対して機能します。前処理ルーチンでは、まずデータが分析され、その後変換されます。

分析

まず、AI Platform Training ではデータセットを 1 列ずつ分析します。列ごとにデータ型を自動的に検出し、その列をデータ変換の際にどのように扱うべきかを判断して、列のデータの統計情報を計算します。この分析の結果は metadata.json ファイルに取り込まれ、他のトレーニング成果物とともに Cloud Storage バケットに保存されます。

  • 型: 列は数値とカテゴリのどちらかになります。
  • 扱い方: アルゴリズムによって各列の扱い方が判断されます。列は「定数」または「行識別子」として扱うことができます。カテゴリ列には、カテゴリ値が整数と文字列のどちらであるかに基づいて、「アイデンティティ」または「語彙」のタグを付けることもできます。多数のカテゴリを持つ列は、扱いやすい少数のカテゴリを計算するための「ハッシング」として扱われます。
  • 統計情報: 各列の特徴の変換に使用するため、列の型と扱い方に基づいて統計情報が計算されます。

変換

データセットの初期分析が完了すると、データセットに適用された型、扱い方、統計情報に基づいてデータが変換されます。変換は以下の順に行われます。

  1. 分割の割合が指定されている場合は、トレーニング データセットを検証データセットとテスト データセットに分割します。
  2. 特徴の欠損が 10% を超える行を削除します。
  3. 欠損値を埋めます。数値列では平均が使用されます。XGBoost の場合、カテゴリ列にはゼロが使用されます。

変換の例

欠損値が 10% を超える行は削除されます。次の例では、行に 10 個の値があると仮定します。各サンプル行は、わかりやすくするために一部の値を省略しています。

行の問題 元の値 変換後の値 説明
欠損値のないサンプル行 [3, 0.45, ...,
'fruits', 0, 1]
[3, 0.45, ...,
1, 0, 0, 0, 1]
文字列「fruits」はワンホット エンコーディングで値「1, 0, 0」に変換されます。TensorFlow ベースのアルゴリズムの場合、これは TensorFlow グラフで行われます。XGBoost の場合は、AI Platform Training がこの変換を行います。
欠損値が多すぎる [3, 0.45, ...,
'fruits', __, __]
行が削除される 行の 10% を超える値が欠損しています。
数値が欠損している [3, 0.45, ...,
'fruits', 0, __]
[3, 0.45, ...,
1, 0, 0, 0, 0.54]
  • 欠損している数値は列の平均値に置き換えられます。この例では、平均は 0.54 です。
  • 文字列「fruits」はワンホット エンコーディングで値「1, 0, 0」に変換されます。TensorFlow ベースのアルゴリズムの場合、これは TensorFlow グラフで行われます。XGBoost の場合は、AI Platform Training がこの変換を行います。
カテゴリ値が欠損している [3, 0.45, ...,
__, 0, 1]
[3, 0.45, ...,
0, 0, 0, 0, 1]
  • 欠損しているカテゴリ値はワンホット エンコーディングで値「0, 0, 0」に変換されます。TensorFlow ベースのアルゴリズムの場合、これは TensorFlow グラフで行われます。XGBoost の場合は、AI Platform Training がこの変換を行います。

変換プロセスには、組み込みアルゴリズムがどの ML フレームワークに基づいているかに応じて、さらに違いがあります。TensorFlow ベースの組み込みアルゴリズム(線形学習者、ワイド&ディープ)の場合、列の扱い方は TensorFlow モデルで作成される特徴列に直接対応します。AI Platform Training では単に TensorFlow Estimator モデルの特徴列が割り当てられ、その後、データ変換は TensorFlow Estimator モデル内で発生する前処理の一部になります。

それ以外の場合は、XGBoost のように、AI Platform Training が列の扱い方に基づいてデータを直接変換します。

次のステップ