特徴量エンジニアリングは、モデルのトレーニングでどの特徴量が有用かを決定し、ログファイルやその他のソースにある元データを変換することでそれらの特徴を作成するプロセスです。このセクションでは、数値データとカテゴリデータをいつ、どのように変換するか、およびさまざまなアプローチのトレードオフに焦点を当てます。
データ変換の理由
特徴を変換する主な理由は、次のとおりです。
データの互換性のための必須変換。以下に例を示します。
- 数値以外の特徴を数値に変換する。文字列に行列乗算はできないため、文字列を数値表現に変換する必要があります。
- 入力を固定サイズにサイズ変更する。線形モデルとフィードフォワード ニューラル ネットワークの入力ノードの数は固定されているため、入力データのサイズは常に同じにする必要があります。たとえば、画像モデルは、データセット内の画像を固定サイズに変更する必要があります。
モデルのパフォーマンスの向上に役立つオプションの品質変換。以下に例を示します。
- テキスト特徴のトークン化または小文字。
- 正規化された数値特徴(ほとんどのモデルでは後でパフォーマンスが向上する)。
- 線形モデルが特徴空間に非線形性を導入することを可能にする。
厳密に言えば、高品質の変換は不要です。モデルがなくても変換を実行できます。ただし、これらの手法を使用すると、モデルでより良い結果が得られる場合があります。
どこで変換するか
ディスク上でのデータ生成時またはモデル内で、変換を適用できます。
トレーニング前の変換
このアプローチでは、トレーニングの前に変換を実行します。 このコードは機械学習モデルとは別のものです。
メリット
- 計算は 1 回だけ行われます。
- 計算では、データセット全体を調べて変換を判別できます。
短所
- 変換は予測時に再現する必要があります。スキューには注意
- 変換を変更すると、データ生成の再実行が必要となり、反復処理に時間がかかります。
スキューは、オンライン サービングを含むケースではより危険です。オフライン サービングでは、トレーニング データを生成するコードを再利用できる場合があります。オンライン サービングでは、データセットを作成するコードとライブ トラフィックの処理に使用するコードがほぼ異なるため、スキューが発生しやすくなります。
モデル内での変換
このアプローチでは、変換はモデルコードの一部です。モデルは、変換されていないデータを入力として取り、モデル内で変換します。
メリット
- 簡単なイテレーション変換を変更しても、同じデータファイルを使用できます。
- トレーニング時と予測時で同じ変換が保証されます。
短所
- 費用がかかる変換は、モデルのレイテンシを増加させる可能性がある。
- 変換はバッチごとに行われます。
バッチごとに変換する場合は多くの考慮事項があります。特徴を平均値で正規化するとします。つまり、特徴値を平均 0
および標準偏差 1
になるように変更します。モデル内で変換する場合、この正規化は、完全なデータセットではなく、1 つのデータバッチにのみアクセスできます。バッチ内の平均値で正規化するか(バッチの変動が激しい場合)、平均値を事前に計算してモデルの定数として修正します。正規化については、次のセクションで説明します。
データを探索、クリーニング、可視化する
変換を実行する前に、データを探索してクリーンアップします。データセットの収集と構築の際に、次のタスクのいずれかを行った可能性があります。
- 複数行のデータを調べます。
- 基本的な統計情報を確認します。
- 数値エントリの欠落を修正。
データを頻繁に可視化する。 グラフを使用すると、数値統計から明らかではない異常やパターンを見つけることができます。そのため、分析を過度に行う前に、散布図やヒストグラムを使用してデータを図示する必要があります。パイプラインのグラフだけでなく、変換の最中でもグラフを表示できます。可視化により、前提条件を継続的にチェックし、重要な変更の影響を確認できます。