統計手法と可視化手法でデータを調べた後、モデルのトレーニングをより効果的に行うためにデータを変換する必要があります。正規化の目的は、特徴を変換して類似のスケールにすることです。たとえば、次の 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 ~ 2 回、非常に暑い日に、31 ~ 45 の値が
temperature
に記録されます。 temperature
の 1,000 番目のポイントは、実際の温度ではなく 1,000 に設定されます。
temperature
の正規化手法として適切なのはどれですか。
1,000 という値は誤りであり、クリップするのではなく削除する必要があります。
31 ~ 45 の値は正当なデータポイントです。データセットに、適切な予測を行うためにモデルをトレーニングするのに十分な数のこの温度範囲のサンプルが含まれていない場合、これらの値はクリッピングすることをおすすめします。ただし、推論中、クリップされたモデルは、気温 45 度と気温 35 度に対して同じ予測を行うことに注意してください。