Instiq
第2章 · 探索的データ分析·v2.0.0·更新 2026/6/3·読了目安 約11分

変更要約: MLS-C01 第2章を深掘り(相関種別Pearson/Spearman・VIF/対数変換・可視化のAWS手段(Data Wrangler/QuickSight)と落とし穴/t-SNE・リーク2種/前処理順序/Glue DataBrew/時系列分割+比較表・シナリオ・FAQ・ひっかけ、図ja化)

2.3前処理とデータ品質

この節の要点

モデルに渡す準備——欠損値補完外れ値処理エンコード/スケーリングクラス不均衡対策(SMOTE)データリーク回避——を理解します。

EDA で掴んだ課題を前処理で解消します。欠損・外れ値・スケール・不均衡を整え、データリークを避けてモデルに渡します。

2.3.1前処理の流れ

モデリングのための前処理を示した図。欠損と外れ値(平均/中央値で補完、外れ値を削除/上限処理、重複処理)→ エンコードとスケーリング(ワンホット/ラベルエンコード、正規化/標準化、歪みは対数変換、スケーラは学習データだけで fit)→ クラス不均衡(SMOTE でオーバーサンプリング、多数派のアンダーサンプリング、クラス重み)の順で行い、スケーラを学習データだけで fit してデータリークを避けることを示した図。
モデリングのための前処理
  • 欠損値補完:平均/中央値/最頻値などで補完するか、欠損が多い列は削除を検討する。
  • エンコード/スケーリング:カテゴリはワンホット/ラベル、数値は正規化/標準化。歪みは対数変換。
  • クラス不均衡SMOTE(オーバーサンプリング)/アンダーサンプリング/クラス重みで対処する。
  • データリーク回避:スケーラやエンコーダは学習データだけで fit し、検証/テストに適用する。
試験ポイント

「クラス不均衡=SMOTE/アンダーサンプリング/クラス重み」「スケーラは学習データだけで fit(テストで fit しない=リーク回避)」「カテゴリ=ワンホット/ラベルエンコード」「歪んだ分布=対数変換」 は MLS-C01 で頻出です。前処理を全データで fit するとデータリークが起き、評価が楽観的になります。

MLS-C01 では「データリークの種類」と「前処理の順序・分割との関係」が頻出の難所です。リークには大きく 2 種類あり、
ターゲットリーク=目的変数の情報(または本番では推論時に得られない未来の値)が特徴量に混入しているケース(例:解約予測に「解約後に発生する解約手数料」を入れる)、
train-test 汚染=前処理(スケーリング・補完・エンコード・特徴量選択・SMOTE)を分割前の全データで fit してしまい、テスト情報が学習に漏れるケース。正しい順序は「先に分割 → 学習データだけで fit → 同じ変換を検証/テストに transform」で、これを自動化するのが scikit-learn の Pipeline や SageMaker の前処理ステップ(Processing Job→Pipelines)です。SMOTE などのリサンプリングは必ず学習フォールド内だけで行い、検証/テストには適用しません(テストは本番の不均衡を反映すべき)。データ品質は完全性(欠損)・一意性(重複)・整合性(型・範囲・矛盾)・正確性・適時性の観点で点検し、AWS では Glue DataBrew(ノーコードのクレンジング・250+ 変換・プロファイル)、SageMaker Data Wrangler(品質インサイト+変換のエクスポート)、大規模分散処理なら Glue(Spark)/EMR を使い分けます。時系列分割では未来→過去のリークを避けるため通常のランダム分割でなく時間順分割(前方を学習・後方を検証)にします。欠損補完も、グループ別中央値や KNN 補完など分布を保つ方法を選び、補完によってばらつきを過小評価しないよう注意します。

リーク/品質の論点問題対策
ターゲットリーク未来/目的変数が特徴量に混入推論時に得られる情報だけ使う
train-test 汚染全データで fit してテスト漏れ分割後に学習だけで fit
SMOTE の誤用テストにも適用し評価が楽観的学習フォールド内だけで適用
時系列分割ランダム分割で未来→過去時間順分割
補足

シナリオ:解約予測モデルの検証精度が異常に高いのに本番でまったく当たらない。→ ターゲットリークを疑う。「解約後に確定する違約金」や「解約日以降に更新されるステータス」など、推論時点では存在しない情報が特徴量に入っていないか点検する。併せて、スケーリングや補完を分割前の全データで fit していないか(train-test 汚染)も確認する。

補足

FAQ:Q. SMOTE は検証データにも適用する? A. しない。学習フォールド内だけ。検証/テストは本番の不均衡を反映させる。Q. ノーコードでクレンジングしたい? A. Glue DataBrew(プロファイル+250+変換)。変換を ML パイプラインに繋ぐなら Data Wrangler。Q. 時系列をランダム分割していい? A. ダメ。未来情報が学習に漏れる。時間順に分割する。

注意

ひっかけ:「クラス不均衡対策として SMOTE を全データに適用してから分割する」は誤り。テスト/検証に合成サンプルが混じり評価が楽観的になる。リサンプリングは分割後・学習データのみ。また「欠損は常に平均で埋めればよい」も誤りで、外れ値に弱い平均より中央値や群別補完が適する場面が多く、欠損自体が情報なら欠損フラグを残す。

2.3.2この節のまとめ

  • 前処理=補完→エンコード/スケール→不均衡対策
  • 不均衡=SMOTE 等、リーク回避=学習データだけで fit

進捗の記録にはログインが必要です。

理解度チェック

(軽い確認用)

Q1. 分類でターゲットのクラスが 95:5 と大きく偏っている。対処として適切なものはどれですか?

Q2. 標準化(スケーリング)を行うとき、データリークを避けるために正しい手順はどれですか?

Q3. カテゴリ変数(例:色=赤/青/緑)を機械学習モデルが扱える形にしたい。一般的な手法は?

理解度を確認第2章「探索的データ分析」の問題を解く