
4. データ前処理
4.2 正規化・標準化
観測したデータは、そのままでは単位や桁がばらばらで、比較や学習に不利なことが多い。そこで、値のスケール(大きさの尺度)を整える処理が必要になる。代表的なのが「正規化」と「標準化」である。ここでは、名前に惑わされないように、まず直感から説明し、その後で数式の形と使い分け、実務上の注意点をわかりやすく整理する。
正規化は、各項目の値を決めた範囲におさめる操作で、もっとも基本的なのは最小値を0、最大値を1に合わせる方法である。これは0–1スケーリングとも呼ばれ、データの最小値と最大値を基準に全体をぎゅっと縮めて並べ直すイメージだ。たとえば温度が0〜100の範囲、回転数が0〜3,000の範囲というように項目ごとに桁が違っていても、正規化すればどちらも0〜1の同じ土俵に乗るため、距離計算などで一方だけが不当に支配的になるのを防げる。一方、正規化は最小値と最大値に強く依存するため、外れ値(極端に大きい・小さい値)が混ざると全体が押しつぶされ、ほとんどのデータが0付近に密集してしまうことがある点に注意がいる。[1][2][3]
標準化は、各項目の平均を0、ばらつきの尺度である標準偏差を1にそろえる操作で、Zスコア変換とも呼ばれる。イメージとしては「平均からどれだけ離れているか」を単位の違いを取り除いて表現することだ。標準化すると、どの項目も“平均からの距離”の共通物差しで比べられるようになり、重み付けや最適化で扱いやすくなる。平均0・標準偏差1に揃えるという定義は各種の教科書的解説と一致しており、実務でも広く使われている。標準化は最小値・最大値に引っ張られにくい分、外れ値の影響が相対的に小さいという利点もあるが、外れ値が非常に強いと平均・標準偏差自体が歪むため、後述の「ロバストスケーリング」を検討する余地がある。[4][5][3][1]
ここで、よくある混乱を解いておく。「正規化」という言葉は文脈によって広く使われるが、多くの実務記事では“0–1に収める”意味で使われることが多い。一方で、標準化はZスコア変換(平均0・標準偏差1)を指し、英語圏ではZ-score normalizationと呼ばれることもあるため、用語上は標準化が「正規化の一種」と説明される場合もある。要は、どの変換を行うかを数式で確認しておくことが重要だ。[6][1]
次に、外れ値への耐性に配慮した方法として「ロバストスケーリング」を紹介する。これは平均の代わりに中央値、標準偏差の代わりに四分位範囲(IQR:第3四分位−第1四分位)を使ってスケールする手法で、極端な値に影響されにくいのが特徴である。たとえばセンサーが時々スパイクを出すようなデータでは、ロバストスケーリングで中心的な分布を保ったままスケールできる。[7][8][9][10]
では、どの場面で何を使うべきか。距離に基づく手法(近い・遠いを数直線の長さで決めるアルゴリズム)や、入力の値域をあらかじめそろえたいニューラルネットワークでは、0–1の正規化が有効なことが多い。一方、線形回帰やロジスティック回帰、サポートベクターマシンなど、平均・分散のスケールに敏感なモデルでは標準化がよく用いられる、という解説が一般的である。決定木やランダムフォレストのように、スケールの大小にあまり依存しないアルゴリズムでは前処理としてのスケーリングは必須ではない、という指摘も覚えておくとよい。[2][3][6]
実務手順のポイントを整理する。まず、学習用のデータでスケーラーを学習し(平均・標準偏差や最小・最大などを計算し)、その同じパラメータで検証・本番データにも変換を適用する。学習と評価で別々に算出すると、分布の差が紛れ込んで性能評価が甘くなる「情報漏れ」になる。次に、スケーリングは説明変数に対して行い、予測したい目的変数は変換しない(解釈を保つため)という運用が基本だ。外れ値が多い、もしくは最大・最小が理論的に定まらないときは、安易な0–1正規化ではなく標準化かロバストスケーリングを検討する。これらは多くの基礎解説で強調されている実務の要点である。[3][4][7]
もう一歩踏み込んで、用途別の判断軸を挙げる。範囲の意味が大きい場合(たとえば各チャンネルを0–1に正規化してネットワークに入れる)や、複数センサーの相対的な比率を保ちたい場合には最小–最大の正規化が便利だ。一方、平均からの偏差を共通の物差しで測りたい、分布がおおむね山形で真ん中にデータが集中している、といった場面では標準化が扱いやすい。外れ値によってスケールが歪む懸念があるなら、中央値とIQRを基準にするロバストスケーリングを選ぶことで安定性を得られる。[11][8][10][4][1][6]
注意しておきたい落とし穴もいくつかある。正規化は新しいデータの値域が学習時の最小・最大をはみ出すと、0未満や1超の値が出る。実装上は想定内だが、モデルや後段処理の前提と食い違わないかを確認しておく。標準化は平均・標準偏差の推定にサンプル数が効くため、極端に少ないデータで算出すると不安定になりやすい。分布が大きく偏っている場合は、標準化前に対数変換や分位点変換を併用して歪みを緩和する設計も候補になる。さらに、時系列の監視では、季節性や運転条件の違いで分布が変わる。条件ごとにスケーラーを持つか、移動窓でパラメータを更新するか、運用のルールを先に決めておくと破綻しにくい。[12]
最後に、実装の具体例をイメージでまとめる。標準化は平均0・標準偏差1へ変換するZスコアで、各種ライブラリでは一括処理の関数が提供されている。正規化は最小・最大を基準に0–1へ写す関数があり、画像やセンサーの比率を保つ前処理として広く使われる。ロバストスケーリングは中央値とIQRで中心と尺度を決めるため、スパイクや外れ値が混在するデータで安定性が高い。どれを選ぶにしても、「学習データで基準を学び、未知データに同じ変換を適用する」「外れ値や分布の形を先に点検する」という二点を守れば、スケールの違いに起因する見落としや誤検知を大きく減らせる。[8][9][4][1][7][3] [1] https://atmarkit.itmedia.co.jp/ait/articles/2110/07/news027.html
[2] https://qiita.com/oki_kosuke/items/02ec7bee92c85cf10ac2 [3] https://qiita.com/suzuki0430/items/59b411aefb66703bcd6b [4] https://aiacademy.jp/media/?p=1147 [5] https://alivevulnerable.com/gis/feature-scaling/ [6] https://www.salesanalytics.co.jp/column/no00365/ [7] https://qiita.com/POKARI0450/items/b05901d7f91e79e06b71 [8] https://ninthcode.net/250211-robust-scaling/ [9] https://www.math-joy-life.com/scikit-learn-feature-scaling [10] https://www.salesanalytics.co.jp/column/no00393/ [11] https://note.com/hirokatsu267/n/n3372dfce9f6a [12] https://shrimp-crab.com/zscore-normalization/1386/ [13] https://note.com/taichi_endoh/n/n1aa92fab842a [14] https://esu-ko.hatenablog.com/entry/2020/07/06/%E5%A4%96%E3%82%8C%E5%80%A4%E3%81%AB%E5%BC%B7%E3%81%84%E6%A8%99%E6%BA%96%E5%8C%96%E3%82%92%E3%81%97%E3%81%9F%E3%81%84(RobustScaler%E3%82%92%E4%BD%BF%E3%81%86) [15] https://qiita.com/ttskng/items/2a33c1ca925e4501e609 [16] https://data-analysis-stats.jp/%E3%83%87%E3%83%BC%E3%82%BF%E5%89%8D%E5%87%A6%E7%90%86/%E6%AD%A3%E8%A6%8F%E5%8C%96%E3%81%A8%E6%A8%99%E6%BA%96%E5%8C%96%E3%81%AA%E3%81%A9%E3%81%AE%E7%89%B9%E5%BE%B4%E9%87%8F%E3%81%AE%E3%82%B9%E3%82%B1%E3%83%BC%E3%83%AA%E3%83%B3%E3%82%B0%EF%BC%88feature-sca/ [17] https://note.com/united_code/n/n2802327c486b [18] https://www.codexa.net/normalization-python/ [19] https://datascience-lab.sakura.ne.jp/scaling/[20] https://machine-learning-skill-up.com/knowledge/%E3%80%90python%E3%80%91%E5%88%97%E6%8C%87%E5%AE%9A%E3%81%A7%E6%AD%A3%E8%A6%8F%E5%8C%96%E3%82%92%E3%83%9E%E3%82%B9%E3%82%BF%E3%83%BC%EF%BC%81pandas%E3%82%92%E4%BD%BF%E3%81%A3%E3%81%9F%E3%83%87※本ページは、AIの活用や研究に関連する原理・機器・デバイスについて学ぶために、個人的に整理・記述しているものです。内容には誤りや見落としが含まれている可能性もありますので、もしお気づきの点やご助言等ございましたら、ご連絡いただけますと幸いです。
※本ページの内容は、個人的な学習および情報整理を目的として提供しているものであり、その正確性、完全性、有用性等についていかなる保証も行いません。本ページの情報を利用したこと、または利用できなかったことによって発生した損害(直接的・間接的・特別・偶発的・結果的損害を含みますが、これらに限りません)について、当方は一切責任を負いません。ご利用は利用者ご自身の責任でお願いいたします。