トレーニング データの準備

このページでは、トレーニング データを AutoML Tables へのインポート前に準備する方法を説明します。

はじめに

トレーニング データの品質は作成するモデルの有効性を大きく左右し、ひいてはそのモデルから返される予測の品質にも大きく影響します。トレーニング データはアップロードした後に変更できないため、インポート後にデータに変更を加える必要が生じた場合は、ソースデータに変更を行ってから再インポートしなければなりません。

データが AutoML Tables でどのように解釈され、使用されるかを理解することで、クリーンで有効性の高いデータをアップロードできます。

問題の把握

有効性の高いトレーニング データを作成するには、まず、問題を明確に定義して、必要な予測結果が得られるようにする必要があります。機械学習に初めて取り組む場合は、AutoML Tables で対応する問題のタイプを検討し、作成するモデルのタイプを決定します。AutoML Tables でサポートされている問題のタイプの詳細については、問題のタイプをご覧ください。

データセットに含めるデータの決定

次に、トレーニング データに含めるデータを決定します。対象となるデータは、ビジネスデータにすでに存在するテーブルだけの場合があります。また、さまざまなソースから得たデータを組み合わせて必要に応じてデータ変換を行ったり、有効性の高いトレーニング データを作成するために一部の列を除去したりすることが必要な場合もあります。

トレーニング データの要件

トレーニング データは、最低でも次の要件を満たしていなければなりません。

  • 予測する値(ターゲット列)が含まれている必要があります。

    これは厳格に守るべき要件です。データにこの列が存在しない場合、AutoML Tables ではトレーニング データを目的の結果に関連付けることができません。この列のデータ型によってモデルのタイプも決まります。詳細についてはこちらをご覧ください。

  • 列は少なくとも 2 列必要です。

    1 つはターゲット列で、それ以外に、モデルのトレーニングに使用できる特徴が 1 つ以上必要です。ただし、トレーニング データには 2 列に限らず、さらに多くの列があるのが理想的です。

  • 行数は少なくとも 1,000 行が必要です。

    データセットに含まれる特徴の数によっては、この最低限の数では高品質のモデルをトレーニングするために十分でない場合があります。詳細についてはこちらをご覧ください。

  • 分類の問題の場合は、クラスごとに少なくとも 50 行が必要です。

    50 というのは最低要件であるため、モデルの品質を高めるにはクラスごとに少なくとも 100 行は必要です。

トレーニング データに基づく追加の機能

このほか、AutoML Tables の一部の機能では、特定のデータをトレーニング データに含める必要があります。

データに関する推奨事項については、トレーニング データを作成するためのベスト プラクティスをご覧ください。

インポートのソースの準備

モデルのトレーニング データを AutoML Tables に渡す方法は 2 つあります。

  • BigQuery テーブル
  • カンマ区切り値(CSV)ファイル

どちらのソースを使用するかは、データの現在の保存方法、データのサイズと複雑性によって決まります。データセットのサイズが小さく、複雑なデータ型が必要ない場合は、CSV を使用するのが簡単です。配列や構造体を含むサイズの大きいデータセットの場合は、BigQuery を使用する必要があります。

インポートするソースがどちらの場合でも、データは次の要件を満たす必要があります。

  • 行数は 1,000~100,000,000 行。
  • 列数は 2~1,000 列。

BigQuery テーブル

BigQuery テーブルでは、US のロケーションでマルチリージョンの BigQuery データセットを使用する必要があります。BigQuery テーブルにはスキーマを指定する必要はありません。データをインポートすると、AutoML Tables によって自動的にそのテーブルのスキーマが推測されます。

BigQuery テーブルの作成については、テーブルの作成と使用をご覧ください。BigQuery のデータ型と、そのデータ型の AutoML Tables へのマッピング方法については、BigQuery テーブルをご覧ください。

CSV ファイル

CSV ファイルを使用してトレーニング データをインポートするには、CSV ファイルを Cloud Storage に保存します。このデータは次の要件を満たしている必要があります。

  • 各ファイルの最初の行には列の名前を含めます。
  • 各ファイルのサイズは 10 GB を超えてはなりません。

    最大サイズの 100 GB に達するまで、複数のファイルを含められます。

このほか、Cloud Storage バケットはリージョン バケットでなければなりません。また、必ず us-central1 リージョンに配置します。

CSV データのスキーマは指定する必要はありません。AutoML Tables によって、データのインポート時に自動的にそのテーブルのスキーマが推測され、列名にヘッダー行が使用されます。

CSV ファイルのファイル形式とデータ型の詳細については、CSV ファイルをご覧ください。

データの分割の制御について

データセットを使用してモデルをトレーニングする場合、そのデータは 3 つのデータセット、つまり、トレーニング データセット、検証データセット、テスト データセットに分割されます。

トレーニング データセットは、前処理、アーキテクチャ、ハイパーパラメータのオプションの組み合わせの数が膨大にある場合に、それらの組み合わせを試すのに使用されます。こうした試行を経てトレーニング済みモデルが得られます。このモデルはその後、検証データセットに基づいて品質が評価され、さらに別のオプションの組み合わせの探索につながります。

さらに試行を重ねてもそれ以上品質は改善しないという段階までくると、そのバージョンのモデルは最終的な最高品質のトレーニング済みモデルとみなされます。この最終モデルは次に、テスト データセットを使用してテストされます。プロセスのこの段階でテスト データセットが初めて使用され、最終的なトレーニング済みモデルが本番環境にデプロイされたときにどの程度的確な結果を出せるかを、最終的な評価指標が偏りなく反映しているかが確認されます。

デフォルトでは、AutoML テーブルはデータ行の 80% をトレーニング用、10% を検証用、10% をテスト用としてランダムに選択します。データセットが、時間とともに変化しない、相対的にバランスがとれている、本番環境で予測に使用されるデータの分布を反映している場合、通常はランダム選択アルゴリズムで十分です。最も重要な目標は、テスト データセットが、モデルを適用する本番環境のデータを正確に表しているかを確認することです。この目標が達成されると、評価指標は、モデルが実際の環境でどのような結果を出せるかを正確に示すようになります。

分割されたそれぞれのデータでどの行を使用するかを自分で選択する必要があるのは、次のような場合です。

  • データが時間に依存している。

    この場合、時間列または手動分割を使用します。これにより、最新のデータがテスト データセットとして使用されます。

  • テストデータに、本番環境を代表していない集団のデータが含まれている。

    たとえば、多数の店舗の購入データでモデルをトレーニングするとします。しかし、そのモデルは本来、トレーニング データに含まれない店舗についての予測を行うために使用されます。データにない店舗にも対応する汎用性を持つようにモデルをトレーニングし、それが可能であることを評価指標に反映するには、テスト データセットには評価セットとは異なる店舗だけを含め、評価セットにはトレーニング セットとは異なる店舗だけを含めることを、明確に確認する必要があります。

  • クラスの数が不均衡である。

    トレーニング データで特定のクラスの数が別のクラスの数より多い場合、テストデータに少数派の方のクラスのサンプルを手動で増やす必要があります。AutoML Tables では層化サンプリングは行われないため、テスト データセットに含まれている少数派のクラスのサンプル数がわずか数個、場合によってゼロということもあります。

どのデータセットに対してどの行を選択するかを制御するには、次の 2 つの方法のいずれかを使用します。

  • 機械学習の使用
  • 時間

機械学習の使用

機械学習の使用列を使用すると、トレーニング、検証、テストのそれぞれに使用する行を選択できます。トレーニング データを作成する場合、列を追加して、そこに次のいずれかの値(大文字小文字の区別あり)を含めることができます。

  • TRAIN
  • VALIDATE
  • TEST

例:

TRAIN,"John","Doe","555-55-5555"
TEST,"Jane","Doe","444-44-4444"
TRAIN","Roger","Rogers","123-45-6789"
VALIDATE,"Sarah","Smith","333-33-3333"

すべての行に機械学習の使用列を指定しない場合、AutoML Tables では自動的に、未割り当て行の 80% をトレーニング用に、10% を検証用に、10% をテスト用に使用します。

後でスキーマを確認するときに、カスタマイズしたデータ分割を選択し、この列を指定します(mlUseColumnSpecId フィールドを使用することもできます)。

時間

時間列を使用すると、そのデータでは時間が重要であり、時間の経過とともにランダムに配分されないことが AutoML Tables に示されます。時間列を指定すると、AutoML Tables では最も時間の古い 80% の行がトレーニング用に、その後の 10% が検証用に、最も時間の新しい 10% がテスト用に使用されます。

時間列の値はデータセット内のすべての行に含める必要があり、そのデータ型には Timestamp を使用します。

後でスキーマを確認するときに、この列を時間列として選択します(API では timeColumnSpecId フィールドを使用します)。この選択は、機械学習の使用列を指定していない場合にのみ有効です。

トレーニング データでの重み付けの使用について

デフォルトの場合、AutoML Tables ではトレーニング データの各行に均等に重み付けします。トレーニングでは、他の行より重要と見なされる行は存在しません。

ただし、トレーニングで特定の行を他より重視したい場合もあります。たとえば、支出のデータを使用している場合、支出の多い項目に関連するデータがモデルに与える影響を、他より大きくなるよう設定できます。特定の結果が欠けることを特に避けたい場合、その結果を含む行の重み付けをより重く設定できます。

データセットに重み列を追加すると、行に相対的な重みを設定できます。重み列は数値型の列でなければなりません。重み列を使用して 0~10000 までの値を指定します。この値が高い場合、モデルのトレーニング時におけるその行の重要度もそれに応じて高くなることが AutoML Tables に示されます。重み 0 の行は無視されます。重み列の値が空の場合、デフォルトの重みである 1 が適用されます。

後でスキーマを確認するときに、この列を重み列として指定します(weightColumnSpecId フィールドも使用できます)。

カスタマイズした重み付けスキーマは、モデルのトレーニングのみに使用され、モデルの評価には影響しません。

次のステップ

このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

AutoML Tables のドキュメント