データの変換の概要

特徴量エンジニアリングは、モデルのトレーニングでどの特徴量が有用かを決定し、ログファイルやその他のソースにある元データを変換することでそれらの特徴を作成するプロセスです。このセクションでは、数値データとカテゴリデータをいつ、どのように変換するか、およびさまざまなアプローチのトレードオフに焦点を当てます。

データ変換の理由

特徴を変換する主な理由は、次のとおりです。

  1. データの互換性のための必須変換。以下に例を示します。

    • 数値以外の特徴を数値に変換する。文字列に行列乗算はできないため、文字列を数値表現に変換する必要があります。
    • 入力を固定サイズにサイズ変更する。線形モデルとフィードフォワード ニューラル ネットワークの入力ノードの数は固定されているため、入力データのサイズは常に同じにする必要があります。たとえば、画像モデルは、データセット内の画像を固定サイズに変更する必要があります。
  2. モデルのパフォーマンスの向上に役立つオプションの品質変換。以下に例を示します。

    • テキスト特徴のトークン化または小文字。
    • 正規化された数値特徴(ほとんどのモデルでは後でパフォーマンスが向上する)。
    • 線形モデルが特徴空間に非線形性を導入することを可能にする。

厳密に言えば、高品質の変換は不要です。モデルがなくても変換を実行できます。ただし、これらの手法を使用すると、モデルでより良い結果が得られる場合があります。

どこで変換するか

ディスク上でのデータ生成時またはモデル内で、変換を適用できます。

トレーニング前の変換

このアプローチでは、トレーニングの前に変換を実行します。 このコードは機械学習モデルとは別のものです。

メリット

  • 計算は 1 回だけ行われます。
  • 計算では、データセット全体を調べて変換を判別できます。

短所

  • 変換は予測時に再現する必要があります。スキューには注意
  • 変換を変更すると、データ生成の再実行が必要となり、反復処理に時間がかかります。

スキューは、オンライン サービングを含むケースではより危険です。オフライン サービングでは、トレーニング データを生成するコードを再利用できる場合があります。オンライン サービングでは、データセットを作成するコードとライブ トラフィックの処理に使用するコードがほぼ異なるため、スキューが発生しやすくなります。

モデル内での変換

このアプローチでは、変換はモデルコードの一部です。モデルは、変換されていないデータを入力として取り、モデル内で変換します。

メリット

  • 簡単なイテレーション変換を変更しても、同じデータファイルを使用できます。
  • トレーニング時と予測時で同じ変換が保証されます。

短所

  • 費用がかかる変換は、モデルのレイテンシを増加させる可能性がある。
  • 変換はバッチごとに行われます。

バッチごとに変換する場合は多くの考慮事項があります。特徴を平均値で正規化するとします。つまり、特徴値を平均 0 および標準偏差 1 になるように変更します。モデル内で変換する場合、この正規化は、完全なデータセットではなく、1 つのデータバッチにのみアクセスできます。バッチ内の平均値で正規化するか(バッチの変動が激しい場合)、平均値を事前に計算してモデルの定数として修正します。正規化については、次のセクションで説明します。

データを探索、クリーニング、可視化する

変換を実行する前に、データを探索してクリーンアップします。データセットの収集と構築の際に、次のタスクのいずれかを行った可能性があります。

  • 複数行のデータを調べます。
  • 基本的な統計情報を確認します。
  • 数値エントリの欠落を修正。

データを頻繁に可視化する。 グラフを使用すると、数値統計から明らかではない異常やパターンを見つけることができます。そのため、分析を過度に行う前に、散布図やヒストグラムを使用してデータを図示する必要があります。パイプラインのグラフだけでなく、変換の最中でもグラフを表示できます。可視化により、前提条件を継続的にチェックし、重要な変更の影響を確認できます。