概要
ここでいう「正規化」は、バラバラなスケールの数値を、
0〜1 の範囲にきれいに並べ直すことを指します。
その代表的な式が、次の形です。
=(値 - 最小値) / (最大値 - 最小値)
一番小さい値が 0、一番大きい値が 1 になり、その間の値は 0〜1 の間に比例して並びます。
グラフ用のスコア作りや、複数指標をまとめて評価したいときに、とてもよく使うパターンです。
正規化の考え方
0〜1 に押し込めるイメージ
元の値が「50〜90 点」のように、ある範囲に散らばっているとします。
このとき、最小値を 0、最大値を 1 に対応させて、間の値を 0〜1 に線形に並べ直すのが正規化です。
数式としては、こうなります。
正規化値 = (元の値 - 最小値) / (最大値 - 最小値)
元の値が最小値なら 0、最大値なら 1、真ん中あたりなら 0.5 付近、という具合に、
「どのくらいの位置にいるか」を 0〜1 のスケールで表現できます。
なぜ「値−最小」を「最大−最小」で割るのか
まず「値−最小」で、最小値を 0 にそろえます。
次に「最大−最小」で割ることで、「全体の幅」を 1 に縮めます。
たとえば、最小 50、最大 90 のとき、幅は 40 です。
元の値 70 なら、70−50=20、20÷40=0.5 となり、ちょうど真ん中(0.5)という位置づけになります。
Excel での書き方
範囲から最小値・最大値を取って正規化する
たとえば、A2:A10 に元データが入っているとします。
このとき、B2 に「A2 の正規化値」を計算する式は、次のように書けます。
=(A2 - MIN($A$2:$A$10)) / (MAX($A$2:$A$10) - MIN($A$2:$A$10))
ポイントは、MIN と MAX で「最小値」「最大値」を求め、それを使って 0〜1 に変換していることです。
$ を付けて絶対参照にしておけば、B2 の式を下にコピーするだけで、A 列の全データを一括で正規化できます。
最小値・最大値を別セルに置くパターン
最小値と最大値をあらかじめセルに計算しておくと、式が読みやすくなります。
たとえば、
D1 に最小値、D2 に最大値を入れるとします。
D1: =MIN(A2:A10)
D2: =MAX(A2:A10)
このとき、B2 の正規化式はこう書けます。
=(A2 - $D$1) / ($D$2 - $D$1)
こうしておくと、「どの範囲を基準に正規化しているか」が一目でわかり、あとから範囲を変えたいときも D1・D2 の式を直すだけで済みます。
応用:スコア化や複数指標の比較
正規化した値を「スコア」として使う
0〜1 に正規化した値は、そのままでも使えますが、
「0〜100 点」にしたい場合は、100 を掛ければ OK です。
= (A2 - 最小値) / (最大値 - 最小値) * 100
たとえば、B2 に 0〜1 の正規化値が入っているなら、C2 にこう書けます。
=B2*100
これで、「一番低い人が 0 点、一番高い人が 100 点」というスコアになります。
複数の指標を足し合わせる前の“足並みそろえ”
売上、利益率、満足度など、単位もスケールも違う指標をまとめて評価したいとき、
それぞれを 0〜1 に正規化してから足し合わせる、というやり方がよく使われます。
たとえば、
売上の正規化値を B 列、利益率の正規化値を C 列に入れておき、
総合スコアを D 列でこう計算します。
=B2 + C2
あるいは重み付けしたければ、
=B2*0.6 + C2*0.4
のようにして、「売上 6 割・利益率 4 割」の総合評価にすることもできます。
例題
問題1
A2:A6 にテストの点数が入っています(例:65, 70, 80, 90, 75)。
この範囲の最小値と最大値を使って、A2 の値を 0〜1 に正規化した結果を B2 に表示したいとします。
B2 に書くべき式を、MIN と MAX を使って答えてください。
問題2
A2:A10 のデータを正規化するにあたり、最小値を D1、最大値を D2 に計算しておくことにしました。
D1 と D2 にそれぞれどのような式を書けばよいか、また、そのうえで B2 に「A2 の正規化値」を計算する式をどう書けばよいか答えてください。
問題3
A2:A10 のデータを 0〜1 に正規化したうえで、「0〜100 点のスコア」に変換したいとします。
B 列に 0〜1 の正規化値が入っている前提で、C2 に「0〜100 点スコア」を計算する式を書いてください。
また、B2 が 0、0.5、1 のとき、それぞれ C2 がいくつになるかも答えてください。
問題4
売上(A 列)と満足度(B 列)という 2 つの指標を、どちらも 0〜1 に正規化したうえで、
「売上 60%・満足度 40%」の重みで総合スコアを出したいとします。
売上の正規化値が C 列、満足度の正規化値が D 列に入っているとき、
E2 に総合スコアを計算する式を書いてください。
問題5
正規化の式
=(値 - 最小値) / (最大値 - 最小値)
を使うとき、「最大値と最小値が同じ(全データが同じ値)」だとどのような問題が起こるでしょうか。
その場合にエラーを避けるための工夫(たとえば IF を使った分岐)を、自分なりの式で提案してみてください。
