データ準備

このページでは、データを準備するために必要な手順の概要を簡単に説明します。

データ準備の段階

データの準備には、通常、反復的な手順が必要です。このドキュメントでは、教師あり機械学習のためにデータを準備する手順は、次のように特定します。

  1. データを収集する。
  2. データをクリーニングにする。
  3. データを分割する。
  4. 特徴を設計する。
  5. 特徴を前処理する。

データを収集する

データ、特に必要とするラベルを持つデータを見つけることが難しい場合があります。ソースが機械学習プロジェクトごとに大きく異なることがあります。異なるソースからのデータをマージする場合や、複数の場所からのデータエントリを取得する場合は、次の手順で特に注意する必要があります。

データをクリーニングする

データのクリーニングは、整合性をチェックするプロセスです。この段階では、データ全体のパターンを調べる必要はありません。代わりに、列(属性)ごとにデータをクリーニングし、次のような異常を探します。

  • 特徴が不足しているインスタンス。

  • 特徴を表す複数の方法。たとえば、インスタンスによって長さの測定値をインチで示していたり、センチメートルで示していたりすることがあります。特定の特徴のすべてのインスタンスが同じスケールを使用し、同じ形式に従うことが重要です。

  • 典型的な範囲からはるかに離れた値(外れ値)を持つ特徴。データ入力の異常やその他の無効なデータなどがあります。

  • 時間、地理的位置、またはその他の認識可能な特性の間隔でのデータの大幅な変化。

  • ラベルが正しくないか、ラベル付け基準が正しく定義されていない。

データを分割する

教師あり学習シナリオでは、トレーニング データ、評価データ、テストデータの少なくとも 3 つのデータのサブセットが必要です。

トレーニング データは、これからよく理解することになるデータです。それを使用して、モデルをトレーニングしますが、初めてモデルを開発するときにはその分析も行います。

評価データは、定期的なトレーニング サイクル中にモデルのパフォーマンスをチェックするために使用します。モデルをトレーニング セット以外のデータに一般化できるようにする主なツールです。

テストデータは、通常、トレーニングの複数回の反復後に完成に近いモデルをテストするために使用します。テストデータは分析や精査することはなく、モデルのテストに必要になるまで未使用のままに保つ必要があります。そうすることで、トレーニング結果を汚染する可能性のあるデータの慣れに基づいた思い込みを避けることができます。

データを分割するときに覚えておくべき重要な事項を以下に示します。

  • 2 つの異なる日付範囲やデータ収集システムから取得したインスタンスなど、事前に分割されたいくらかのデータを使用するよりも、1 つの大きなデータセットからのサブセットをランダムにサンプリングする方が適切です。前者のアプローチでは、過剰適合につながる可能性のある不均一性のリスクが高まります。

  • 理想的には、データセットにインスタンスを割り当て、それらの関連付けをプロセス全体を通じて維持する必要があります。

  • 異なるデータセットの適正な比率については、専門家の意見が異なります。ただし、特定の比率に関係なく、トレーニング データを評価データよりも多く、評価データをテストデータよりも多くする必要があります。

特徴を設計する

モデルを作成する前に、トレーニング データをよく理解する必要があります。データのパターンを探し、どんな値がターゲット属性に影響するかを考えます。モデルに重要なデータを決定するこのプロセスは、特徴エンジニアリングと呼ばれます。

特徴エンジニアリングは、元データでモデルに必要な属性を決定するだけではありません。より困難でより重要なこともある作業は、特定のデータから一般化が可能な直説的な特徴を抽出することです。つまり、所有しているデータと、問題空間に関する知識を組み合わせて、本当に必要なデータを取得することを意味します。それは複雑なプロセスになる可能性があり、それを正しく行えるかどうかは、問題の主題と目標の理解にかかってきます。ここにいくつかの例を示します。

データ例: 住所

人に関するデータには住所が含まれることがありますが、これは一貫性を持たせることが難しい複雑な文字列であり、そのままでは多くのアプリケーションにとって特に有用ではありません。通常は、そこから意味のある特徴を抽出する必要があります。住所から抽出できる項目の例を次に示します。

  • 経度と緯度
  • 周辺
  • 最も近い小学校
  • 選挙区
  • ランドマークとの相対的な位置

データ例: タイムスタンプ

データのもう 1 つの共通項目は、タイムスタンプです。通常は、共通の参照ポイントからの経過時間を示す大きな数値です。正確なタイムスタンプから抽出できる項目の例を以下に示します。

  • 時間
  • 別のイベントからの経過時間
  • 時刻(午前、午後、夕方、夜)
  • その時間になんらかの施設が開いていたか閉まっていたか
  • イベントの頻度(他のインスタンスと組み合わせて)
  • 太陽の位置(緯度と経度の組み合わせで)

上記の例について注意すべき重要な点をいくつか挙げます。

  • 複数の属性を組み合わせて、一般化が可能な 1 つの特徴を作成できます。たとえば、住所とタイムスタンプで太陽の位置を知ることができます。

  • 特徴エンジニアリングを使用してデータを簡素化できます。たとえば、時刻のタイムスタンプは、見かけ上無数の値を持つ属性をとりますが、それを 4 つのカテゴリまで減らします。

  • インスタンス間のエンジニアリングによって、有益な特徴を取得したり、データセット内のインスタンス数を減らしたりすることができます。たとえば、複数のインスタンスを使用して何かの頻度を計算します。

完了すると、モデルをトレーニングするときに含める特徴のリストが得られます。

プロセスの最も難しい部分の 1 つは、正しい特徴セットが得られたタイミングの判断です。予測の精度に影響を与えそうな特徴を知ることが難しい場合があります。機械学習の専門家は、よく柔軟性と実験が必要な分野であることを強調しています。最初の試行で完璧になることはないため、最良の推測を行い、結果を利用して、次の反復に情報を与えます。

データの前処理

これまで、このページでは、モデルをトレーニングするためのデータを準備する際に一般に適用できる手順について説明しました。この時点まで、データがどのように表現され、フォーマットされているかは重要ではありません。前処理は次のステップです。準備したデータを、モデルをトレーニングするために使用するツールとテクニックで動作する形式にします。

データ形式と Cloud ML Engine

Cloud ML Engine はデータ形式に関与しません。トレーニング アプリケーションに便利な入力形式を何でも使えます。つまり、TensorFlow が読み取れる形式で入力データを用意する必要があります。また、Cloud ML Engine プロジェクトがでアクセスできる場所にデータを格納する必要もあります。最も簡単なソリューションは、Google Cloud Platform プロジェクトがアクセスできる Google Cloud Storage バケット内の CSV ファイルを使用することです。一部のデータのタイプ(疎ベクトルやバイナリデータなど)は、TFRecords ファイルにシリアル化された TensorFlow の tf.train.Example 形式を使用すると、より適切に表現できます。

データを変換する

未加工の特徴データに実行すると役立ちそうな多くの変換があります。一般的なものをいくつか次に示します。

  • 一定のスケール(通常は -1 と 1 の間、または 0 と 1 の間の範囲)で表されるように数値を正規化する。
  • カテゴリ特徴をインデックス値やワンホット ベクトルに変更するなど、数値以外のデータを数値で表現する。
  • 未加工のテキスト文字列を、bag of words などのより簡潔な表現に変更する。

データの準備と前処理の概要

Cloud ML Engine は、入力データに特定の要件を課すことがないため、トレーニング アプリケーションで機能するどのような形式でも使用できます。TensorFlow のデータ読み取り手順に従います。

  • 必要なデータを取得するために必要な元データを使用します。
  • データセットをトレーニング、検証、テスト サブセットに分割します。
  • Cloud ML Engine プロジェクトでアクセスできる場所にデータを保存します。Cloud Storage バケットは、多くの場合に最も簡単なアプローチです。
  • 特徴をそれに対して実行するオペレーションに合わせて変換します。

次のステップ

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

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

Cloud Machine Learning Engine(Cloud ML Engine)