データ前処理は、機械学習パイプラインにおいて、生のノイズの多いデータを、分析やモデル学習に適したクリーンで構造化された形式に変換する段階である。これには、クリーニング、変換、削減、特徴量エンジニアリングなど、欠損値、不整合な形式、外れ値、冗長な情報といった問題に対処するための幅広い技術が含まれる。その目標は、データ品質を向上させ、その結果として、古典的なアルゴリズムであれ深層学習ネットワークであれ、下流のモデルの精度と信頼性を高めることである。しばしば地味なステップと見なされるが、前処理はデータサイエンティストの時間のかなりの部分を消費し、偏った予測や誤った予測を避けるために重要である。
前処理の必要性は、実世界のデータが直接消費できる状態になることは稀であるという事実に由来する。センサー、ユーザー入力、ウェブログなどのソースは、ノイズが多く、不完全で、異種混在のレコードを生成する。例えば、データセットには重複エントリ、異なる形式の日付フィールド、タイプミスを含むカテゴリ変数が含まれる可能性がある。前処理なしでは、モデルは収束に失敗したり、歪んだ結果を生み出したり、無関係なパターンに過適合したりする可能性がある。人工知能システムの文脈では、前処理は、勾配ベースの最適化のためのスケーリングやニューラルネットワークアーキテクチャのためのエンコーディングなど、アルゴリズムの特定の要件にデータを合わせるのにも役立つ。
データクリーニング
データクリーニングは、最初で最も基本的な前処理ステップである。これには、エラーの特定と修正、欠損値の処理、重複の削除が含まれる。欠損データは、削除(欠損率の高い行や列を削除する)または補完(平均値、中央値、最頻値などの統計的尺度や、k近傍法などのより高度な方法でギャップを埋める)によって対処できる。外れ値は、標準正規分布から大きく逸脱する極端な値であり、zスコアや四分位範囲を用いて検出されることが多く、文脈に応じて上限を設定したり、変換したり、削除したりすることができる。データマージエラーから生じることが多い重複レコードは、通常、キーフィールドに基づいて識別され、過剰表現を防ぐために削除される。
データ変換
変換は、データを一貫したスケールまたは分布に変換する。一般的な技術には、正規化(特徴を0から1などの範囲にスケーリングする)と標準化(平均を0に中心化し、分散を1にスケーリングする)が含まれる。これらは、k近傍法などの距離尺度に依存するアルゴリズムや、AdamオプティマイザーやSGDの変種などの勾配ベースのオプティマイザーにとって不可欠である。歪んだ分布の場合、対数変換やべき乗変換によって歪度を減らし、パターンをより明確にすることができる。カテゴリ変数のエンコーディングももう一つの重要な変換である。ラベルエンコーディングはカテゴリに整数を割り当て、ワンホットエンコーディングは各カテゴリにバイナリ列を作成する。これは、順序関係を仮定しないモデルでしばしば好まれる。日付と時刻のフィールドは、年、月、曜日などの構成要素に分解されることがある。
データ削減と特徴量エンジニアリング
データ削減は、本質的な情報を保持しながらデータ量を減らすことを目的とする。主成分分析(PCA)やt-SNEなどの次元削減技術は、高次元データを低次元空間に射影し、計算コストを削減し、次元の呪いを軽減する。フィルター法、ラッパー法、埋め込み法などの特徴量選択手法は、最も関連性の高い変数を特定し、冗長な変数を破棄する。一方、特徴量エンジニアリングは、既存の特徴から新しい特徴を作成し、基礎となるパターンをよりよく捉える。例えば、タイムスタンプから「時刻」や「週末かどうか」を導出したり、購入履歴から「平均取引額」を計算したりする。画像やテキストタスクで一般的な前処理の一形態であるデータ拡張では、データセットサイズを増やし、汎化を向上させるために、合成バリエーションが生成される。
深層学習のための前処理
深層学習モデル、特にトランスフォーマーベースのアーキテクチャ(大規模言語モデルなど)には、特定の前処理要件がある。テキストデータはトークン化(単語、サブワード、または文字に分割)され、多くの場合、学習中に構築された語彙を使用して数値IDに変換される必要がある。シーケンスは、バッチ処理を可能にするために固定長にパディングまたはトランケーションされる。画像データの場合、前処理にはリサイズ、クロッピング、色の正規化が含まれることがある。さらに、バッチ正規化やレイヤー正規化などの技術がネットワーク内で適用され、学習を安定させるが、これらは前処理ではなくモデルアーキテクチャの一部と見なされることもある。シーケンス間タスクでは、計算を最適化するためにシーケンスを長さでソートする前処理が含まれる場合がある。前処理ステップの選択は、残差ネットワークやU-Netなどのモデルのパフォーマンスに大きな影響を与える可能性があり、パイプライン全体の一部として調整されることが多い。
ツールとベストプラクティス
実際には、データ前処理は、Pythonのpandasやscikit-learnなどのプログラミングライブラリ、またはAmazon Web Services、Azure、Google Cloudなどのクラウドプラットフォーム内の専門ツールを使用して実行される。ベストプラクティスには、すべての変換の文書化、再現可能なパイプラインの作成、データ漏洩を避けるために前処理の前にデータを学習、検証、テストセットに分割することが含まれる。スケーリングパラメータは学習セットのみに適合させ、テストデータに適用する必要がある。2020年代半ばの時点で、自動機械学習(AutoML)ツールはますます前処理ステップを組み込んでいるが、変換がドメイン知識と整合し、バイアスを導入しないことを保証するために、人間の監視は依然として不可欠である。
結論
データ前処理は、あらゆる機械学習またはAIプロジェクトの基礎となるステップである。これは、生データとモデルの準備状態の間のギャップを埋め、予測の品質に直接影響を与える。モデルアーキテクチャや学習アルゴリズムの華やかさには欠けるが、その重要性はいくら強調してもし過ぎることはない。適切に前処理されたデータセットは、失敗するモデルと本番環境で確実に動作するモデルの違いを生み出すことができる。データ量が増加し、ソースがより多様になるにつれて、前処理の役割はますます重要になり、自動化された適応的な方法への継続的な研究が行われている。