ML と AI のためのデータの準備
Data Preparation for ML and AI
学習目標
- S3・EFS・FSx・RDS・DynamoDB などのデータソースと、Kinesis・Flink・Kafka のストリーミングから、目的に合う形式(Parquet・ORC・CSV・JSON)でデータを取り込める
- Glue・DataBrew・EMR の Spark・Data Wrangler・Feature Store で変換と特徴量を作り、スケーリング・ビニング・対数変換・エンコーディングを使い分けられる
- 埋め込み・チャンキング・メタデータの抽出で RAG の文書を準備し、OpenSearch・pgvector・S3 Vectors などのベクトルストアを選べる
- Glue Data Quality・DataBrew で品質を検証し、Ground Truth でラベルを付け、Clarify のバイアスの指標とリサンプリングでクラスの不均衡に対処できる
要点
- 形式:分析で一部の列だけを読むなら列指向の Parquet・ORC(圧縮が効き、読み取る量が減る)。行単位の追記やログは JSON・CSV。SageMaker AI の一部の組み込みアルゴリズムは RecordIO-protobuf のパイプモードで速く読める。
- ストレージ:学習データの置き場は基本 S3。大量の小さなファイルを高速に読む学習には FSx for Lustre(S3 と連携)、複数のインスタンスでの共有には EFS。遠隔地からの大量のアップロードは S3 Transfer Acceleration。
- ストリーミング:Kinesis Data Streams で取り込み、Managed Service for Apache Flink や Lambda で変換、Data Firehose で S3 などへ配送。Kafka の既存の資産は MSK。
- 変換のツール:コードを書かずに可視化と変換なら Data Wrangler や DataBrew、大規模な ETL は Glue(Spark)や EMR。作った特徴量は Feature Store(オンラインとオフライン)で学習と推論の両方に同じ定義で使う。
- 特徴量エンジニアリング:標準化(平均 0・分散 1)と正規化(0〜1)、偏った分布の対数変換、数値の区間分け(ビニング)、カテゴリのワンホットエンコーディング(順序のないカテゴリ)とラベルエンコーディング(順序のあるカテゴリ)。欠損値の補完・外れ値の処理・重複の除去。
- 生成 AI のデータ:埋め込みモデルで文章や画像をベクトルに変換。RAG の文書はチャンキング(固定長・階層・意味の区切り)とメタデータの付与で検索の精度が変わる。ファインチューニングや継続的な事前学習・蒸留の学習データも、形式と品質をそろえて準備する。
- 個人情報:学習やRAGに使う前にマスキング・編集・匿名化する。Macie で S3 の機密データを見つけ、PII・PHI・データの所在の要件に合わせる。
- 品質とバイアス:Glue Data Quality や DataBrew のルールで欠損・範囲・一意性を検証。Ground Truth でラベル付け(人と自動ラベルの併用)。Clarify の学習前の指標(クラスの不均衡 CI、ラベルの比率の差 DPL など)で偏りを測り、オーバーサンプリング・アンダーサンプリング・合成データ(SMOTE など)・層化した分割で対処する。
業務での使いどころ
- 営業CRM の商談データと Web のアクセスログを Glue で結合し、Feature Store に「直近 30 日の訪問回数」などの特徴量を登録。受注予測の学習と、営業画面のリアルタイムの推論で同じ特徴量を使う。
- 総務社内規程の PDF を見出しごとにチャンキングし、部署や改定日をメタデータとして付けてベクトルストアに保存。古い版の規程が検索に出ないようにする。
- 経理不正な経費の検知で、不正の例が全体の 0.5% しかない。Clarify でクラスの不均衡を確認し、学習データだけをオーバーサンプリングして、評価は元の比率のテストデータで行う。
公式のタスクステートメント(英語)
- 1.1 データを収集して保存する。
- 1.2 データ変換、特徴量エンジニアリング、前処理を実行する。
- 1.3 データ品質を検証し、バイアスを管理する。