変更要約: MLS-C01 第2章を深掘り(相関種別Pearson/Spearman・VIF/対数変換・可視化のAWS手段(Data Wrangler/QuickSight)と落とし穴/t-SNE・リーク2種/前処理順序/Glue DataBrew/時系列分割+比較表・シナリオ・FAQ・ひっかけ、図ja化)
2.3前処理とデータ品質
モデルに渡す準備——欠損値補完、外れ値処理、エンコード/スケーリング、クラス不均衡対策(SMOTE)、データリーク回避——を理解します。
EDA で掴んだ課題を前処理で解消します。欠損・外れ値・スケール・不均衡を整え、データリークを避けてモデルに渡します。
2.3.1前処理の流れ
- 欠損値補完:平均/中央値/最頻値などで補完するか、欠損が多い列は削除を検討する。
- エンコード/スケーリング:カテゴリはワンホット/ラベル、数値は正規化/標準化。歪みは対数変換。
- クラス不均衡: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. カテゴリ変数(例:色=赤/青/緑)を機械学習モデルが扱える形にしたい。一般的な手法は?

