AIや機械学習のモデルを作成する際、データの「単位」や「大きさ」がバラバラであると、正しい分析結果が得られないことがある。
例えば、「身長(cm)」と「体重(kg)」、あるいは「年収(万円)」と「年齢(歳)」といった異なる種類のデータをそのまま比較しようとすると、数字が大きいデータの方を「重要だ」とAIが勘違いしてしまうからである。
この問題を解決するために、データを特定の範囲(例えば0から1の間)に収めたり、平均を基準にした分布に変換したりする作業が必要となる。これを「スケーリング(特長量のスケーリング)」と呼ぶ。人間で言えば、異なる科目のテストの点数を「偏差値」に変換して、得意・不得意を公平に判断する作業に似ている。これにより、AIは迷うことなくデータの特徴を捉えられるようになる。
スケーリングの仕組み
スケーリングには主に「正規化(Normalization)」と「標準化(Standardization)」の2つの手法がある。どちらも「データを揃える」という目的は同じだが、計算のアプローチが異なる。あるクラスの5人のテストの点数 { 10点, 20点, 30点, 40点, 100点 } を例に説明する。
1. 正規化(Normalization)
- データを「0」から「1」の範囲に収める方法である。
- データの最小値を「0」、最大値を「1」とし、その間の値を比率で表す。
- データの分布がはっきりしている場合や、画像データのピクセル処理に多く使われる。
計算式
例の場合、「30点」の人は(30−10)÷90=0.22、「100点」の人は(100−10)÷90=1.0となる。
2. 標準化(Standardization)
- データの平均を「0」、ばらつき(標準偏差)を「1」に揃える方法である。
- 平均値に近いデータは0付近に、平均から離れたデータは大きなプラス・マイナスの値になる。
- 外れ値(極端な値)があっても影響を受けにくく、多くの統計分析や機械学習で標準的に使われる。
計算式
- 意味: (自分のデータ - 平均値) ÷ 標準偏差(ばらつき具合:このケースの場合は約31.6)
- やっていること: 「自分が平均点からどれくらい離れているか」を計算し、それを「みんなの点数のばらつき具合」で割ることで、単位を消して公平な「ズレ具合」を出している。いわゆる「偏差値」の計算とほぼ同じ考え方である。
例の場合、「30点」の人は(30−40)÷31.6=−0.31、「100点」の人は(100−40)÷31.6=1.89となる。
※標準偏差は、各データと平均値の差分を2乗したものを合計し、データ数で割って平方根を取る。詳細は正規分布の記事を参照。
正規化と標準化の使い分け
どちらを使うかは、データの性質や利用するAIモデルによって変わる。
| 状況 | 推奨手法 | 理由・特徴 |
|---|---|---|
| 範囲を明確に決めたい場合 | 正規化(Normalization) | 最大値・最小値が決まっているデータや画像データに適する。分布が偏っていても使える。 |
| 外れ値がある場合や回帰分析をする場合 | 標準化(Standardization) | 外れ値の影響を受けにくく、正規分布のように平均付近にデータが集まる場合に効果的。多くの機械学習アルゴリズムが前提としている。 |
逆に「使ってはいけない」ダメな例
それぞれの計算方法には弱点があり、使う場面を間違えるとAIの精度が落ちてしまう。
1. 正規化を使うと「ダメな例」
ケース:とてつもない「外れ値」がある場合
例えば、年収データの中に「年収100億円」の人が1人だけ混ざっている場合である。 正規化は最大値を基準にするため、100億円が「1.0」になり、一般的な年収(300万〜1000万円)の人たちは全員「0.0003」〜「0.001」のような極小の数字になってしまう。 これでは、一般の人々の間の「年収の差」がほとんど消えてしまい、AIは一般人の違いを区別できなくなる。
→ この場合は、外れ値に強い「標準化」を使うべきである。
2. 標準化を使うと「ダメな例」
ケース:データの上限・下限が決まっている場合
例えば、画像データ(RGBが必ず0〜255の範囲)や、テストの点数(必ず0〜100点)のように、範囲が明確に決まっている場合である。 標準化を行うと、計算結果に「マイナスの値」や「範囲外の値」が出てきてしまう。画像処理のAIなどは、入力データが「0から1の間」であることを前提に設計されていることが多く、マイナスの値が入ってくると正しく動かないことがある。
→ この場合は、範囲をきっちり守れる「正規化」を使うべきである。
迷ったらテストデータを使って両方試し、精度の高い方を採用すると良い。
特徴
公平な評価が可能になる
例えば「年収1000万円」と「年齢30歳」のように桁が異なるデータでも、スケーリングをすることで同じ重要度で扱える。
AIの学習速度が上がる
- データが整うことで計算が効率化し、学習時間が短縮される。
データの可視化が容易になる
異なる指標を同じグラフに重ねて表示しやすく、直感的に理解できる。
提唱・開発の歴史
特徴量のスケーリングという概念自体は、特定の個人の発明というよりも、19世紀後半から20世紀初頭にかけての統計学の発展とともに確立されたものである。
特に重要なのが「標準化」の基礎となる「標準偏差」や「相関」の概念である。これを体系化したのが、近代統計学の父と呼ばれるイギリスの数学者、
カール・ピアソン氏
https://ja.wikipedia.org/wiki/カール・ピアソンより引用
デザイン上での利用方法
UXデザインの観点では、スケーリングは「ユーザーに納得感のあるレコメンドやスコア」を提示するために不可欠な裏方処理である。ユーザーの目には直接「数式」は見えないが、スケーリングの良し悪しは「このアプリ、私の好みを分かってる!」という体験の質に直結する。
複合的な要素のスコア化
ユーザーの閲覧時間・クリック数・購入金額など異なる単位のデータを揃えて合算し、「おすすめ度」や「会員ランク」を公平に評価する。
直感的なデータビジュアライゼーション
売上や顧客満足度など複数指標を同じグラフで比較しやすくする。
「この場面に使える」シーンと具体例
シーン1:マッチングアプリの相性度表示
課題: 趣味の数(0〜50個)、ログイン頻度(0〜1回/日)、居住地の距離(0〜1000km)など単位が異なるデータを使い、相性度スコアを出したい。
解決策: それぞれを正規化し、0〜1の範囲に変換する。例えば趣味数25個は0.5、距離10kmは0.99(近いほど1)に変換し、合算して納得感のあるスコアを算出する。
シーン2:ヘルスケアアプリの「健康スコア」
課題: 歩数、睡眠時間、摂取カロリーなど異なる単位のデータを統合し、健康状態を100点満点で伝えたい。
解決策: 各データを標準化し、平均からのズレを評価する。バランスの取れた点数で的確な健康アドバイスを提供する。
シーン3:ECサイトの商品検索・並び替え
課題:価格、レビュー評価、発売日を考慮して「おすすめ順」を作りたい。
解決策: 価格と評価をスケーリングして重み付けする。価格の影響が強すぎるのを防ぎ、ユーザーにとって本当に魅力的な商品を上位に表示する。