機械学習のデータの前処理について

AI実装検定のご案内

データ前処理(Data Preprocessing)は、機械学習プロジェクトの品質を大きく左右する基盤的な工程です。

現実のデータはしばしば欠損・外れ値・ノイズを含み、またモデルが直接扱えない形式になっているため、前処理によって 「モデルが学習しやすい形に整える」 必要があります。

ここでは、機械学習における主要な前処理工程を深掘りし、なぜそれが必要なのか、どのような手法があるのかを詳細に整理します。

目次

欠損値処理(Missing Value Handling)

なぜ欠損は問題になるのか?

  • 多くのアルゴリズムは欠損をそのまま扱えない
  • 欠損の偏りがあると統計的にバイアスが生じる
  • 欠損の要因自体が意味を持つ場合がある

欠損の発生メカニズムは

  • MCAR(完全にランダム)
  • MAR(観測された要因に依存)
  • MNAR(観測されていない要因に依存)
    に分類され、これにより解決策が変わります。

主な処理方法

削除

  • 行削除:欠損がわずかな場合に有効
  • 列削除:欠損が多すぎる特徴量を落とすケース

補完(Imputation)

  • 平均値・中央値・最頻値補完
  • 近傍法(kNN
  • 回帰による補完
  • 多重代入法(MICE):統計的により厳密で再現性も高い

どの方法を選ぶかは、欠損の種類と、データの性質に依存します。

外れ値処理(Outlier Handling)

なぜ外れ値が重要なのか?

外れ値は、特に線形モデルや距離ベースの手法で学習結果を大きく歪めます。

ただし、タスクによっては外れ値自体が重要な意味を持つ(例:異常検知)場合もあるため、外れ値の扱いは文脈依存です。

外れ値の検出方法

  • Zスコア(標準スコア)
  • IQR(四分位範囲)法
  • 箱ひげ図による可視化
  • Isolation Forest や LOF などの異常検知アルゴリズム

外れ値の処理方法

  • 削除
  • 別値への丸め(Winsorizing)
  • ログ変換や平方根変換で分布を正規化
  • モデルで外れ値耐性のあるロバスト手法を使う

スケーリング(Scaling)

特徴量間でスケールが大きく異なると、モデルが特定の変数に過度に引きずられることがあります。

代表的なスケーリング手法

標準化(Standardization)

平均0・分散1の正規化
→ SVM / 線形モデルで効果的

正規化(Min-Max Scaling)

0〜1の範囲にスケーリング
→ ニューラルネットワークなどで多用

Robust Scaler

中央値とIQRを使用
→ 外れ値が多いデータに強い

カテゴリ変数のエンコーディング

機械学習モデルは数値データしか扱えないため、カテゴリ変数をエンコードする必要があります。

主な手法

One-Hot Encoding

カテゴリを0/1の複数列に展開
→ シンプルで汎用性が高い
→ 次元増加に注意

Label Encoding

整数に変換
→ 木系モデル(XGBoost, LightGBMなど)とは相性が良い
→ 非順序カテゴリには注意

Target Encoding

目的変数の平均値などでカテゴリを置換
→ 高精度モデルで強力
→ 過学習を避けるためには

  • クロスバリデーション内での計算
  • スムージング
    が推奨される

テキストデータの前処理

テキストは構造化されていないため、機械学習向けに加工する必要があります。

基本的な前処理

  • 記号・数字・HTMLタグなどの除去
  • Tokenization(単語分割)
  • ストップワード除去
  • ステミング・レンマ化

特徴量化の方法

  • Bag-of-Words
  • TF-IDF
  • Word2Vec / GloVe などの分散表現
  • BERTなどのコンテキスト埋め込み(前処理がシンプルな傾向にある)

タスクやモデルに応じて適切な方法を選択します。

日付・時系列データの前処理

時系列データでは、時刻情報とその周期性・連続性が重要になります。

主な処理

  • 日付型への変換
  • 年、月、曜日、時間帯などの特徴量抽出
  • ラグ特徴量(例:1日前、7日前の値)
  • 移動平均などのローリング特徴量
  • トレンド・季節性の抽出

注意点

未来データを誤って学習に取り込まないよう、情報リークの防止が重要です。

特徴量エンジニアリング(Feature Engineering)

前処理と密接に関連する工程で、モデル性能向上の鍵となります。

よく行われる処理

  • 複数の変数の比率を計算
  • 累積値の生成
  • 過去◯期間の統計量(平均・分散など)
  • 対数変換・平方根変換
  • PCAなどによる次元削減

優れた特徴量エンジニアリングは、モデルそのものの変更以上に精度向上に寄与します。

データの分割(Train / Validation / Test)

前処理の前に、データ分割の方法が前処理手順に影響します。

分割の役割

  • 訓練(Train):モデル学習
  • 検証(Validation):ハイパーパラメータ調整
  • テスト(Test):最終評価

時系列ではランダム分割を避ける

時系列データでは、時間順に分割することが必須です。

データリークを避ける前処理ルール

  • スケーラー・エンコーダーの fit は訓練データのみで行い
  • 検証・テストは transform のみ適用

前処理パイプライン(scikit-learn Pipeline)

パイプラインは、前処理とモデル学習を連結して管理する仕組みです。

利点

  • データリーク防止
  • 手続きの自動化
  • 再現性の向上
  • 本番運用での安定化

前処理を体系的に扱う上で非常に重要な機能です。

まとめ:前処理は機械学習の品質を決める最重要工程

前処理は、

  • 欠損値
  • 外れ値
  • スケーリング
  • エンコーディング
  • テキスト処理
  • 時系列加工
  • 特徴量エンジニアリング
  • データリーク対策
  • パイプライン化
    といった多くの工程から成り立っています。

そして本質は、「データをモデルが理解しやすい形に整えること」に尽きます。

前処理が正しければ、シンプルなモデルでも十分に高い性能を引き出すことができます。

以上、機械学習のデータの前処理についてでした。

最後までお読みいただき、ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!
目次