統計手法と可視化手法でデータを調べた後、モデルのトレーニングをより効果的に行うためにデータを変換する必要があります。正規化の目的は、特徴を変換して類似のスケールにすることです。たとえば、次の 2 つの機能について考えてみましょう。
- 特徴
X
の範囲は 154 ~ 24,917,482 です。 - 特徴
Y
の範囲は 5 ~ 22 です。
これらの 2 つの機能は、非常に異なる範囲にまたがっています。正規化では、X
と Y
を操作して、0 ~ 1 などの同様の範囲に収まるようにします。
正規化には次の利点があります。
- トレーニング中にモデルの収束を早めるのに役立ちます。異なる特徴の範囲が異なる場合、勾配降下法は「バウンス」し、収束が遅くなる可能性があります。とはいえ、Adagrad や Adam などのより高度なオプティマイザーは、時間の経過とともに効果的な学習率を変更することで、この問題から保護します。
- モデルがより良い予測を推論するのに役立ちます。異なる特徴量の範囲が異なる場合、生成されたモデルの予測の有用性が低下する可能性があります。
- 特徴値が非常に高い場合に「NaN トラップ」を回避できます。NaN は、数値ではないの略です。モデルの値が浮動小数点精度の上限を超えると、システムは値を数値ではなく
NaN
に設定します。モデル内の 1 つの数値が NaN になると、モデル内の他の数値も最終的に NaN になります。 - モデルが各特徴の適切な重みを学習するのに役立ちます。特徴量のスケーリングを行わないと、モデルは範囲の広い特徴量に過度に注意を払い、範囲の狭い特徴量に十分な注意を払いません。
明確に異なる範囲をカバーする数値特徴(年齢や収入など)は正規化することをおすすめします。また、city population.
など、幅広い範囲をカバーする単一の数値特徴を正規化することもおすすめします。
次の 2 つの機能について考えてみましょう。
- 特徴
A
の最小値は -0.5、最大値は +0.5 です。 - 特徴
B
の最小値は -5.0、最大値は +5.0 です。
特徴 A
と特徴 B
のスパンは比較的狭く、ただし、対象物 B
のスパンは対象物 A
のスパンの 10 倍です。そのため、次のようになります。
- トレーニングの開始時に、モデルは特徴
B
が特徴A
よりも 10 倍「重要」であると仮定します。 - トレーニングに時間がかかりすぎます。
- 作成されたモデルが最適でない可能性があります。
正規化を行わない場合の全体的な損害は比較的小さくなりますが、それでも、特徴 A と特徴 B を同じスケール(-1.0 ~+1.0 など)に正規化することをおすすめします。
次に、範囲の差が大きい 2 つの特徴について考えてみましょう。
- 特徴
C
の最小値は -1、最大値は +1 です。 - 特徴
D
の最小値は +5000、最大値は +1,000,000,000 です。
特徴 C
と特徴 D
を正規化しないと、モデルは最適でない可能性があります。さらに、トレーニングの収束に非常に長い時間がかかり、収束しなくなることもあります。
このセクションでは、一般的な 3 つの正規化方法について説明します。
- 線形スケーリング
- Z スコアのスケーリング
- 対数目盛
このセクションでは、クリッピングについても説明します。クリッピングは正確な正規化手法ではありませんが、扱いにくい数値特徴を範囲に収めて、より良いモデルを生成します。
均等目盛
線形スケーリング(通常は単にスケーリングと短縮されます)は、浮動小数点値を自然範囲から標準範囲(通常は 0 ~ 1 または -1 ~+1)に変換することを意味します。
リニア スケーリングは、次のすべての条件が満たされている場合に適しています。
- データの上限と下限が時間の経過とともにあまり変化しない。
- 特徴に外れ値がほとんどないか、まったくなく、外れ値が極端ではない。
- 特徴は範囲全体でほぼ均等に分散されます。つまり、ヒストグラムではほとんどの値でほぼ均等なバーが表示されます。
人間の age
が特徴であるとします。線形スケーリングは、age
に適した正規化手法です。理由は次のとおりです。
- 下限と上限は 0 ~ 100 です。
age
には、比較的少ない割合の外れ値が含まれます。100 歳以上の人口は、全体の約 0.3% に過ぎません。- 特定の年齢層が他の年齢層よりもやや多く含まれる場合もありますが、大規模なデータセットには、すべての年齢層の十分なサンプルが含まれている必要があります。
演習:理解度をチェックする
モデルに、さまざまな人の純資産を保持するnet_worth
という特徴があるとします。線形スケーリングは net_worth
の正規化手法として適していますか?その理由もお聞かせください。
Z スコア スケーリング
Z スコアは、値が平均からの標準偏差の数です。たとえば、平均より 2 標準偏差大きい値の Z スコアは +2.0 です。平均より標準偏差が 1.5 小さい値の Z スコアは -1.5 になります。
Z スコア スケーリングで特徴を表現すると、その特徴の Z スコアが特徴ベクトルに格納されます。たとえば、次の図は 2 つのヒストグラムを示しています。
- 左の図は古典正規分布です。
- 右側は、Z スコア スケーリングで正規化された同じ分布。
Z スコア スケーリングは、次の図に示すような、漠然とした正規分布のみを持つデータにも適しています。
Z スコアは、データが正規分布または正規分布に近い分布に従っている場合に適しています。
一部の分布は、その範囲内であれば正常であっても、極端な外れ値が含まれている場合があります。たとえば、net_worth
特徴のほとんどの点が 3 標準偏差に収まる可能性がありますが、この特徴のいくつかの例は平均から数百の標準偏差離れている可能性があります。このような状況では、Z スコア スケーリングと別の形式の正規化(通常はクリッピング)を組み合わせて、この状況に対処できます。
演習: 理解度を確認する
モデルが、1,000 万人の女性の大人の身長を保持するheight
という名前の特徴でトレーニングしているとします。Z スコア スケーリングは height
の正規化手法として適切ですか?その理由もお聞かせください。
対数目盛
対数スケーリングでは、未加工の値の対数を計算します。理論上、対数の基数は任意に設定できますが、実際にはログスケーリングでは通常、自然対数(ln)が計算されます。
ログスケーリングは、データがべき法則分布に従っている場合に便利です。簡単に言えば、べき乗分布は次のようになります。
X
の値が低い場合、Y
の値は非常に高くなります。X
の値が増加すると、Y
の値は急速に減少します。そのため、X
の値が高いと、Y
の値が非常に低くなります。
映画のレーティングは、べき乗法の分布の好例です。次の図に注目してください。
- 一部の映画には多くのユーザー評価が寄せられています。(
X
の値が小さいと、Y
の値が高くなります)。 - ほとんどの映画にはユーザー評価がほとんどありません。(
X
の値が大きいとY
の値は低くなります)。
ログスケーリングにより分布が変化し、より正確な予測を行うモデルをトレーニングできます。
2 つ目の例として、書籍販売はべき乗法の分布に準じます。その理由は次のとおりです。
- 出版される書籍のほとんどは、100 冊程度しか売れません。
- 書籍によっては、数千部程度の書籍が売れることもあります。
- 100 万部を超える売り上げを記録するのは、ごく一部のベストセラーに限られます。
たとえば、書籍カバーと書籍の売上の関係を調べるために線形モデルをトレーニングしているとします。元の値でトレーニングする線形モデルでは、100 万部売れた書籍の表紙について、100 部しか売れなかった書籍の表紙よりも 10,000 倍効果的な何かを見つける必要があります。ただし、すべての売上データをログスケーリングすると、タスクがはるかに実行可能になります。たとえば、100 のログは次のようになります。
~4.6 = ln(100)
1,000,000 のログは次のようになります。
~13.8 = ln(1,000,000)
したがって、1,000,000 というログは、100 の約 3 倍にすぎません。ベストセラーの書籍の表紙は、(なんらかの形で)小規模で販売される書籍の表紙よりも約 3 倍の影響力を持つことを想像できるかもしれません。
クリッピング
クリッピングは、極端な外れ値の影響を最小限に抑える手法です。簡単に言うと、クリップでは通常、外れ値の値が特定の最大値を超えないように制限されます。クリッピングは奇妙なアイデアですが、非常に効果的です。
たとえば、roomsPerPerson
という特徴を含むデータセットがあるとします。この特徴は、さまざまな住宅の部屋数(合計部屋数÷居住人数)を表します。次のグラフは、特徴値の 99% 以上が正規分布(平均 1.8、標準偏差 0.7)に従っていることを示しています。ただし、この特徴にはいくつかの外れ値が含まれており、その中には極端なものもあります。
このような極端な外れ値の影響を最小限に抑えるにはどうすればよいでしょうか。ヒストグラムは、均一分布、正規分布、べき乗分布ではありません。roomsPerPerson
の最大値を任意の値(4.0 など)に上限またはクリップするとどうなりますか?
特徴値を 4.0 でクリップしても、モデルが 4.0 より大きい値をすべて無視するわけではありません。4.0 より大きい値はすべて 4.0 になります。これが 4.0 の異常な山の原因です。丘があるにもかかわらず、スケーリングされた特徴セットは元のデータよりも有用です。
ちょっと待ってください。すべての外れ値を実際に任意の上限しきい値まで減らすことができるか。モデルをトレーニングする場合には、そのとおりです。
また、他の形式の正規化を適用した後に値をクリップすることもできます。たとえば、Z スコア スケーリングを使用しているものの、いくつかの外れ値の絶対値が 3 をはるかに超えている場合、この場合は、次のことができます。
- 3 より大きい Z スコアは、3 に切り捨てられます。
- -3 未満の Z スコアをクリップして、正確に -3 にします。
クリッピングにより、モデルが重要でないデータに過剰にインデックスを付けるのを防ぐことができます。ただし、一部の外れ値は実際には重要であるため、値を慎重にクリップしてください。
正規化手法の概要
正規化手法 | 数式 | 使用場面 |
---|---|---|
均等目盛 | $$ x' = \frac{x - x_{min}}{x_{max} - x_{min}} $$ | 特徴が固定範囲にわたって均一に分布している場合。 |
Z スコア スケーリング | $$ x' = \frac{x - μ}{σ}$$ | 特徴分布に極端な外れ値が含まれていない場合。 |
対数目盛 | $$ x' = log(x)$$ | 特徴量がべき乗則に従っている場合。 |
クリッピング | $x > max$ の場合、$x' = max$に設定 $x < min$ の場合、$x' = min$ に設定 |
特徴に極端な外れ値が含まれている場合。 |
演習: 理解度をテストする
データセンター内で測定された温度に基づいてデータセンターの生産性を予測するモデルを開発しているとします。データセット内の temperature
値のほとんどは 15 ~ 30(摂氏)の範囲内にあります(次の例外を除く)。
- 1 年に 1 ~ 2 回、非常に暑い日に、31 ~ 45 の値が
temperature
に記録されます。 temperature
の 1,000 番目のポイントは、実際の温度ではなく 1,000 に設定されます。
temperature
の正規化手法として適切なのはどれですか。
1,000 という値は誤りであり、クリップではなく削除する必要があります。
31 ~ 45 の値は正当なデータポイントです。適切な予測を行うためにモデルをトレーニングするためにこの温度範囲に十分な例がデータセットに含まれていないことを前提として、これらの値はクリップすることをおすすめします。ただし推論の際には、クリップされたモデルでは、気温が 45 の場合と気温 35 の場合と同じ予測が行われます。