Numerische Daten: Normalisierung

Nachdem Sie Ihre Daten mithilfe statistischer und Visualisierungstechniken untersucht haben, sollten Sie sie so transformieren, dass Ihr Modell effektiver trainiert werden kann. Ziel der Normalisierung ist es, die Funktionen auf eine ähnliche Skala zu transformieren. Betrachten Sie beispielsweise die folgenden beiden Merkmale:

  • Das Element X umfasst den Bereich von 154 bis 24.917.482.
  • Das Element Y umfasst den Bereich 5 bis 22.

Diese beiden Funktionen haben sehr unterschiedliche Bereiche. Bei der Normalisierung werden X und Y möglicherweise so manipuliert, dass sie einen ähnlichen Bereich abdecken, z. B. 0 bis 1.

Die Normalisierung bietet folgende Vorteile:

  • Hilft dabei, dass Modelle während des Trainings schneller konvergieren. Wenn verschiedene Funktionen unterschiedliche Bereiche haben, kann der Gradientenabstieg „abprallen“ und die Konvergenz verlangsamen. Fortgeschrittenere Optimierer wie Adagrad und Adam schützen jedoch vor diesem Problem, indem sie die effektive Lernrate im Laufe der Zeit ändern.
  • Hilft Modellen, bessere Vorhersagen zu treffen. Wenn verschiedene Features unterschiedliche Bereiche haben, kann das resultierende Modell etwas weniger nützliche Vorhersagen treffen.
  • Hilft, den „NaN-Trap“ zu vermeiden, wenn die Featurewerte sehr hoch sind. NaN ist eine Abkürzung für Not a Number (keine Zahl). Wenn ein Wert in einem Modell die Grenze der Gleitkommapräzision überschreitet, setzt das System den Wert auf NaN statt auf eine Zahl. Wenn eine Zahl im Modell zu einem NaN wird, werden auch andere Zahlen im Modell irgendwann zu einem NaN.
  • Hilft dem Modell, entsprechende Gewichtungen für jedes Merkmal zu lernen. Ohne Merkmalskalierung schenkt das Modell Merkmalen mit großen Bereichen zu viel Aufmerksamkeit und Merkmalen mit schmalen Bereichen zu wenig.

Wir empfehlen, numerische Features zu normalisieren, die deutlich unterschiedliche Bereiche abdecken (z. B. Alter und Einkommen). Wir empfehlen auch, ein einzelnes numerisches Merkmal zu normalisieren, das einen großen Bereich abdeckt, z. B. city population..

Betrachten Sie die folgenden beiden Funktionen:

  • Der niedrigste Wert für das Element A ist −0,5 und der höchste Wert ist +0,5.
  • Der niedrigste Wert für das Element B ist −5,0 und der höchste Wert ist +5,0.

Die Spannweite von Feature A und Feature B ist relativ gering. Die Spanne von Element B ist jedoch zehnmal so breit wie die von Element A. Beispiele:

  • Zu Beginn des Trainings geht das Modell davon aus, dass das Feature B zehnmal wichtiger als das Feature A ist.
  • Das Training dauert länger als es sollte.
  • Das resultierende Modell ist möglicherweise nicht optimal.

Die Gesamtauswirkungen der fehlenden Normalisierung sind relativ gering. Wir empfehlen jedoch, Merkmal A und Merkmal B auf dieselbe Skala zu normalisieren, z. B. -1,0 bis +1,0.

Betrachten Sie nun zwei Merkmale mit größeren Unterschieden bei den Bereichen:

  • Der niedrigste Wert für das Element C ist −1 und der höchste Wert ist +1.
  • Der niedrigste Wert für das Element D ist +5.000 und der höchste Wert ist +1.000.000.000.

Wenn Sie das Attribut C und das Attribut D nicht normalisieren, ist Ihr Modell wahrscheinlich nicht optimal. Außerdem dauert es viel länger, bis das Training konvergiert, oder es konvergiert gar nicht.

In diesem Abschnitt werden drei gängige Normalisierungsmethoden behandelt:

  • lineare Skalierung
  • Z-Score-Skalierung
  • Log-Skalierung

In diesem Abschnitt wird zusätzlich das Clipping behandelt. Obwohl dies kein echtes Normalisierungsverfahren ist, werden durch das Zuschneiden unruhige numerische Merkmale in Bereiche eingegrenzt, die bessere Modelle ergeben.

Lineare Skalierung

Bei der linearen Skalierung (häufig auch nur Skalierung genannt) werden Gleitkommawerte aus ihrem natürlichen Bereich in einen Standardbereich umgewandelt, in der Regel 0 bis 1 oder −1 bis +1.

Die lineare Skalierung ist eine gute Wahl, wenn alle der folgenden Bedingungen erfüllt sind:

  • Die Unter- und Obergrenzen Ihrer Daten ändern sich im Zeitverlauf kaum.
  • Das Merkmal enthält nur wenige oder gar keine Ausreißer und diese Ausreißer sind nicht extrem.
  • Die Merkmale sind im gesamten Bereich ungefähr gleichmäßig verteilt. Das heißt, ein Histogramm würde für die meisten Werte ungefähr gleich breite Balken zeigen.

Angenommen, age ist eine Funktion. Die lineare Skalierung ist ein gutes Normalisierungsverfahren für age, weil:

  • Die ungefähren Unter- und Obergrenzen sind 0 bis 100.
  • age enthält einen relativ geringen Prozentsatz von Ausreißern. Nur etwa 0,3% der Bevölkerung sind älter als 100 Jahre.
  • Bestimmte Altersgruppen sind zwar etwas besser vertreten als andere, ein großer Datensatz sollte jedoch genügend Beispiele für alle Altersgruppen enthalten.

Übung: Wissen testen

Angenommen, Ihr Modell hat ein Feature namens net_worth, das das Nettovermögen verschiedener Personen enthält. Wäre die lineare Skalierung eine gute Normalisierungstechnik für net_worth? Warum bzw. warum nicht?

Z-Score-Skalierung

Ein Z-Wert ist die Anzahl der Standardabweichungen eines Werts vom Mittelwert. Ein Wert, der beispielsweise 2 Standardabweichungen über dem Mittelwert liegt, hat einen Z-Wert von +2,0. Ein Wert, der 1,5 Standardabweichungen unter dem Mittelwert liegt, hat einen Z-Wert von −1,5.

Wenn ein Element mit der Z-Wert-Skalierung dargestellt wird, wird der Z-Wert dieses Elements im Featurevektor gespeichert. Die folgende Abbildung zeigt beispielsweise zwei Histogramme:

  • Links eine klassische Normalverteilung.
  • Rechts ist dieselbe Verteilung zu sehen, die durch Z-Wert-Skalierung normalisiert wurde.
Abbildung 4: Zwei Histogramme: Beide zeigen Normalverteilungen mit derselben Verteilung. Das erste Histogramm, das Rohdaten enthält, hat einen Mittelwert von 200 und eine Standardabweichung von 30. Das zweite Histogramm, das eine Z-Score-Version der ersten Verteilung enthält, hat einen Mittelwert von 0 und eine Standardabweichung von 1.
Abbildung 4: Rohdaten (links) im Vergleich zum Z-Wert (rechts) für eine normale Verteilung.

Die Z-Score-Skalierung eignet sich auch für Daten wie in der folgenden Abbildung, die nur eine ungenau normale Verteilung haben.

Abbildung 5: Zwei Histogramme mit identischer Form, die jeweils einen steilen Anstieg bis zu einem Plateau und dann einen relativ schnellen Abstieg gefolgt von einem allmählichen Abfall zeigen. Ein Histogramm zeigt die Verteilung der Rohdaten, das andere die Verteilung der Rohdaten nach Normalisierung durch Z-Score-Skalierung.
            Die Werte auf der X-Achse der beiden Histogramme unterscheiden sich stark.
            Das Histogramm der Rohdaten umfasst den Bereich von 0 bis 29.000,während das Histogramm mit Z-Score von −1 bis etwa +4, 8 reicht.
Abbildung 5: Rohdaten (links) im Vergleich zur Z-Wert-Skalierung (rechts) für eine nicht klassische Normalverteilung.

Der Z-Wert eignet sich gut, wenn die Daten einer Normalverteilung oder einer Verteilung folgen, die einer Normalverteilung ähnelt.

Einige Verteilungen können im Großteil ihres Bereichs normal sein, aber dennoch extreme Ausreißer enthalten. So passen beispielsweise fast alle Punkte eines net_worth-Features genau in drei Standardabweichungen, aber einige Beispiele für dieses Feature können sich hunderte von Standardabweichungen vom Mittelwert entfernen. In diesen Situationen können Sie die Z-Score-Skalierung mit einer anderen Form der Normalisierung (normalerweise Clipping) kombinieren, um diese Situation zu bewältigen.

Übung: Wissen testen

Angenommen, Ihr Modell wird mit einem Feature namens height trainiert, das die Erwachsenengrößen von zehn Millionen Frauen enthält. Wäre die Z-Score-Skalierung eine gute Normalisierungstechnik für height? Warum bzw. warum nicht?

Logarithmische Skalierung

Bei der Logarithmusskala wird der Logarithmus des Rohwerts berechnet. Theoretisch kann der Logarithmus jede beliebige Basis haben. In der Praxis wird bei der Logarithmusskala in der Regel der natürliche Logarithmus (ln) berechnet.

Die Logarithmusskala ist hilfreich, wenn die Daten einer Potenzgesetzverteilung folgen. Einfach ausgedrückt sieht eine Potenzgesetzverteilung so aus:

  • Niedrige Werte von X haben sehr hohe Werte von Y.
  • Wenn die Werte von X steigen, sinken die Werte von Y schnell. Hohe Werte von X haben daher sehr niedrige Werte von Y.

Filmbewertungen sind ein gutes Beispiel für eine Potenzgesetzverteilung. Beachten Sie in der folgenden Abbildung Folgendes:

  • Einige Filme haben viele Nutzerbewertungen. Niedrige Werte für X haben hohe Werte für Y.
  • Die meisten Filme haben nur sehr wenige Nutzerbewertungen. Hohe Werte für X haben niedrige Werte für Y.

Durch die Logarithmustransformation wird die Verteilung geändert, was dazu beiträgt, ein Modell zu trainieren, das bessere Vorhersagen trifft.

Abbildung 6. Zwei Diagramme, in denen Rohdaten mit dem Log der Rohdaten verglichen werden.
            Das Diagramm mit den Rohdaten zeigt viele Nutzerbewertungen im Head, gefolgt von einem langen Tail. Das Logdiagramm hat eine gleichmäßigere Verteilung.
Abbildung 6: Eine Rohverteilung mit dem zugehörigen Protokoll vergleichen

Als zweites Beispiel: Buchverkäufe folgen einer Potenzverteilung, weil:

  • Die meisten veröffentlichten Bücher werden nur in sehr geringer Stückzahl verkauft, vielleicht ein bis zweihundert.
  • Einige Bücher werden in moderater Auflage verkauft, in Tausenden.
  • Nur wenige Bestseller werden mehr als eine Million Exemplare verkaufen.

Angenommen, Sie trainieren ein lineares Modell, um beispielsweise die Beziehung zwischen Buchcovern und Buchverkäufen zu ermitteln. Bei der datengetriebenen Modellierung mit Rohdaten müsste ein lineares Modell etwas über Buchcover von Büchern finden, die eine Million Mal verkauft werden, das 10.000-mal leistungsfähiger ist als Buchcover von Büchern, die nur 100 Mal verkauft werden. Durch die Logarithmenskala aller Verkaufszahlen wird die Aufgabe jedoch wesentlich einfacher. Beispiel: Der Logarithmus von 100 ist:

  ~4.6 = ln(100)

während das Log von 1.000.000 so aussieht:

  ~13.8 = ln(1,000,000)

Das Logarithmus von 1.000.000 ist also nur etwa dreimal größer als das Logarithmus von 100. Sie können sich wahrscheinlich vorstellen, dass das Cover eines Bestsellers in gewisser Weise etwa dreimal wirkungsvoller ist als das Cover eines Buches, das nur wenige Verkäufe erzielt.

Clipping

Ausbrüche sind eine Methode, um den Einfluss extremer Ausreißer zu minimieren. Kurz gesagt, wird der Wert von Ausreißern in der Regel auf einen bestimmten Maximalwert begrenzt (reduziert). Das Zuschneiden ist eine merkwürdige Idee, kann aber sehr effektiv sein.

Angenommen, ein Dataset enthält ein Merkmal namens roomsPerPerson, das die Anzahl der Zimmer (Gesamtzahl der Zimmer geteilt durch die Anzahl der Personen) für verschiedene Häuser darstellt. Das folgende Diagramm zeigt, dass über 99% der Featurewerte einer Normalverteilung entsprechen (ungefähr ein Mittelwert von 1,8 und eine Standardabweichung von 0,7). Die Funktion enthält jedoch einige Ausreißer, von denen einige extrem sind:

Abbildung 7. Ein Diagramm für „Zimmer pro Person“, in dem fast alle Werte zwischen 0 und 4 liegen, aber ein sehr langer Schwanz bis zu 17 Zimmern pro Person reicht
Abbildung 7: Hauptsächlich normal, aber nicht ganz normal.

Wie können Sie den Einfluss dieser extremen Ausreißer minimieren? Das Histogramm ist keine gleichmäßige Verteilung, keine Normalverteilung und keine Potenzverteilung. Was, wenn Sie den Maximalwert von roomsPerPerson einfach auf einen beliebigen Wert, z. B. 4,0, begrenzen oder kürzen?

Ein Diagramm für „roomsPerPerson“, in dem alle Werte zwischen 0 und 4,0 liegen. Der Plot ist glockenförmig, aber bei 4,0 gibt es einen anomalen Anstieg.
Abbildung 8: Featurewerte werden bei 4,0 abgeschnitten.

Wenn Sie den Featurewert auf 4.0 begrenzen, bedeutet das nicht, dass Ihr Modell alle Werte größer als 4.0 ignoriert. Vielmehr bedeutet es, dass alle Werte, die über 4,0 lagen, jetzt auf 4,0 gesetzt werden. Das erklärt den merkwürdigen Hügel bei 4,0. Trotz dieses Hügels ist der skalierte Funktionssatz jetzt nützlicher als die ursprünglichen Daten.

Einen Moment! Können Sie wirklich jeden Ausreißerwert auf einen beliebigen oberen Grenzwert reduzieren? Ja, beim Trainieren eines Modells.

Sie können Werte auch zuschneiden, nachdem Sie andere Formen der Normalisierung angewendet haben. Angenommen, Sie verwenden die Z-Score-Skalierung, aber einige Ausreißer haben absolute Werte, die weit über 3 liegen. In diesem Fall haben Sie folgende Möglichkeiten:

  • Z-Werte des Clips, die größer als 3 sind, werden zu exakt 3.
  • Z-Werte unter -3 werden auf -3 gekürzt.

Clipping verhindert, dass Ihr Modell bei unwichtigen Daten überindexiert wird. Einige Ausreißer sind jedoch tatsächlich wichtig. Achten Sie also darauf, Werte mit Bedacht zu kürzen.

Zusammenfassung der Normalisierungstechniken

NormalisierungstechnikFormelAnwendung
Lineare Skalierung $$ x' = \frac{x - x_{min}}{x_{max} - x_{min}} $$ Wenn das Element gleichmäßig über einen festen Bereich verteilt ist.
Z-Score-Skalierung $$ x' = \frac{x - μ}{σ}$$ Wenn die Featureverteilung keine extremen Ausreißer enthält.
Logskalierung $$ x' = log(x)$$ Wenn die Funktion den geltenden Energiegesetzen entspricht.
Clipping Wenn $x > max$, setzen Sie $x' = max$.
Wenn $x < min$, setzen Sie $x' = min$.
Wenn das Feature extreme Ausreißer enthält.

Übung: Wissen testen

Welche Technik eignet sich am besten für die Normalisierung eines Features mit der folgenden Verteilung?

Ein Histogramm mit einem Datencluster mit Werten im Bereich von 0 bis 200.000 Die Anzahl der Datenpunkte steigt im Bereich von 0 bis 100.000 schrittweise an und nimmt dann von 100.000 auf 200.000 schrittweise ab.

Z-Score-Skalierung
Die Datenpunkte folgen im Allgemeinen einer Normalverteilung. Bei der Z-Score-Skalierung werden sie daher in den Bereich von −3 bis +3 gezwungen.
Lineare Skalierung
Lesen Sie die Informationen zu den Normalisierungstechniken auf dieser Seite und versuchen Sie es noch einmal.
Logarithmische Skalierung
Lesen Sie die Informationen zu den Normalisierungstechniken auf dieser Seite und versuchen Sie es noch einmal.
Clipping
Lesen Sie die Informationen zu den Normalisierungstechniken auf dieser Seite und versuchen Sie es noch einmal.

Angenommen, Sie entwickeln ein Modell, das die Produktivität eines Rechenzentrums anhand der im Rechenzentrum gemessenen Temperatur vorhersagt. Fast alle temperature-Werte in Ihrem Datensatz liegen zwischen 15 und 30 °C, mit folgenden Ausnahmen:

  • Ein- oder zweimal im Jahr werden an extrem heißen Tagen einige Werte zwischen 31 und 45 in temperature aufgezeichnet.
  • Jeder 1.000. Punkt in temperature ist auf 1.000 anstelle der tatsächlichen Temperatur festgelegt.

Welche Normalisierungstechnik wäre für temperature geeignet?

Ausreißerwerte zwischen 31 und 45 zuschneiden, aber Ausreißer mit dem Wert 1.000 löschen

Die Werte „1.000“ sind Fehler und sollten gelöscht und nicht gekürzt werden.

Die Werte zwischen 31 und 45 sind legitime Datenpunkte. Für diese Werte wäre Clipping wahrscheinlich eine gute Idee, sofern der Datensatz nicht genügend Beispiele in diesem Temperaturbereich enthält, um das Modell für gute Vorhersagen zu trainieren. Beachten Sie jedoch, dass das gekippte Modell bei der Inferenz für eine Temperatur von 45 °C dieselbe Vorhersage wie für eine Temperatur von 35 °C trifft.

Schneide alle Ausreißer zu
Lesen Sie die Informationen zu den Normalisierungstechniken auf dieser Seite und versuchen Sie es noch einmal.
Alle Ausreißer löschen
Lesen Sie die Informationen zu den Normalisierungstechniken auf dieser Seite und versuchen Sie es noch einmal.
Löschen Sie die Ausreißerwerte zwischen 31 und 45, aber beschneiden Sie die Ausreißer mit einem Wert von 1.000.
Lesen Sie die Informationen zu den Normalisierungstechniken auf dieser Seite und versuchen Sie es noch einmal.