Nachdem Sie Ihre Daten mithilfe statistischer und Visualisierungstechniken untersucht haben, sollten Sie Ihre Daten so transformieren, dass Ihr Modell besser trainiert wird. effektiv einsetzen. Das Ziel der Normalisierung besteht darin, ähnlich gewichtet sein. Betrachten Sie zum Beispiel die folgenden beiden Funktionen:
- Das Element
X
umfasst den Bereich von 154 bis 24.917.482. - Das Element
Y
umfasst den Bereich von 5 bis 22.
Diese beiden Funktionen erstrecken sich über sehr unterschiedliche Bereiche. Die Normalisierung könnte
X
und Y
, sodass sie sich in einem ähnlichen Bereich befinden, vielleicht 0 bis 1.
Die Normalisierung bietet folgende Vorteile:
- Sorgt dafür, dass Modelle während des Trainings schneller konvergieren. Wenn verschiedene Elemente unterschiedliche Bereiche haben, kann das Gradientenverfahren "Bounce" und langsame Konvergenz. Erweiterte Optimierer wie Adagrad und Adam schützen Änderung der effektiven Lernrate im Laufe der Zeit.
- Unterstützt Modelle, bessere Vorhersagen abzuleiten. Wenn verschiedene Elemente unterschiedliche Bereiche haben, wird die resultierende weniger nützliche Vorhersagen treffen.
- Hilft, den „NaN-Trap“ zu vermeiden, wenn die Featurewerte sehr hoch sind.
NaN ist eine Abkürzung für
keine Zahl. Wenn ein Wert in einem Modell den Wert
Gleitkommazahl ist, setzt das System den Wert stattdessen auf
NaN
. einer Zahl. Wird eine Zahl im Modell zu einer NaN, werden andere Zahlen in wird das Modell schließlich zu einem NaN. - Hilft dem Modell, angemessene Gewichtungen für jedes Feature zu erkennen. Ohne Feature-Skalierung lenkt das Modell zu viel Aufmerksamkeit mit großen Bereichen und zu wenig Aufmerksamkeit auf Funktionen eng gefasste Bereiche.
Wir empfehlen, numerische Features zu normalisieren,
verschiedenen Bereichen (z. B. Alter und Einkommen)
Wir empfehlen auch die Normalisierung eines einzelnen numerischen Features,
das einen großen Bereich abdeckt,
z. B. city population.
Betrachten Sie die folgenden beiden Funktionen:
- Der niedrigste Wert des Elements
A
ist -0,5 und der höchste Wert +0,5. - Der niedrigste Wert des Elements
B
ist -5,0 und der höchste Wert +5,0.
Feature A
und Feature B
haben eine relativ enge Spanne. Feature B
Span ist 10-mal größer als die Span von Feature A
. Beispiele:
- Zu Beginn des Trainings geht das Modell davon aus, dass das Feature
A
zehnmal ist „wichtiger“ als FeatureB
. - Das Training dauert länger als erwartet.
- Das resultierende Modell ist möglicherweise nicht optimal.
Der Gesamtschaden durch die Nicht-Normalisierung ist relativ gering. Allerdings empfehlen wir dennoch, Feature A und Feature B auf den gleichen Maßstab zu normalisieren, etwa -1,0 bis +1,0.
Betrachten Sie nun zwei Merkmale mit größeren Unterschieden bei den Bereichen:
- Der niedrigste Wert von Feature „C“ ist -1, der höchste Wert +1.
- Der niedrigste Wert des Elements
D
ist +5.000 und der höchste Wert +1.000.000.000.
Wenn Sie Merkmal C
und Merkmal D
nicht normalisieren, wird Ihr Modell wahrscheinlich
suboptimal sein könnte. Außerdem dauert das Training wesentlich länger,
konvergieren oder gar nicht konvergieren.
In diesem Abschnitt werden drei beliebte Normalisierungsmethoden behandelt:
- lineare Skalierung
- Z-Faktor-Skalierung
- Log-Skalierung
In diesem Abschnitt werden zudem clipping Obwohl kein wahrer Normalisierungstechnik werden durch das Abschneiden unbändige numerische Merkmale die bessere Modelle liefern.
Lineare Skalierung
Lineare Skalierung (gewöhnlich auf Skalieren abgekürzt) bedeutet, dass Gleitkommawerte aus liegen normalerweise in einem Standardbereich – normalerweise 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 Laufe der Zeit nicht viel.
- Das Feature enthält nur wenige oder keine Ausreißer, die nicht extrem sind.
- Das Feature ist annähernd gleichmäßig über seinen Bereich verteilt. Das heißt, ein Histogramm würde für die meisten Altersgruppen etwa gleichmäßige Balken zeigen.
Angenommen, age
ist ein Element. Die lineare Skalierung eignet sich gut
für age
aus folgenden Gründen verwendet:
- Die ungefähre Unter- und Obergrenze liegt zwischen 0 und 100.
age
enthält einen relativ kleinen Prozentsatz an Ausreißern. Nur etwa 0,3 % die Bevölkerung über 100 umfasst.- Obwohl bestimmte Altersgruppen etwas besser vertreten sind als andere, ist eine sollte das Dataset ausreichende Beispiele für alle Altersgruppen enthalten.
Wissen testen
Angenommen, Ihr Modell verfügt über ein Merkmal namensnet_worth
, das das Netz
für verschiedene Personen. Wäre die lineare Skalierung eine gute Normalisierung?
für „net_worth
“? Warum bzw. warum nicht?
Z-Faktor-Skalierung
Ein Z-Wert ist die Anzahl der Standardabweichungen, die ein Wert vom Mittelwert ist. Beispiel: Ein Wert mit zwei Standardabweichungen und größer als der Mittelwert einen Z-Score von +2,0 aufweist. Ein Wert, der 1,5 Standardabweichungen kleiner ist als hat der Mittelwert einen Z-Wert von -1,5.
Bei der Darstellung eines Elements mit der Z-Wert-Skalierung wird der Wert des Elements Z-Wert im Featurevektor. Die folgende Abbildung zeigt beispielsweise zwei Histogramme:
- Links eine klassische Normalverteilung.
- Auf der rechten Seite die gleiche Verteilung normalisiert durch die Z-Wert-Skalierung.
![Abbildung 4: Zwei Histogramme, die Normalverteilungen mit
identischer Verteilung. Das erste Histogramm, das die Rohdaten
hat einen Mittelwert von 200 und eine Standardabweichung von 30. Die zweite
Histogramm, das die Z-Score-Version des ersten
hat einen Mittelwert von 0 und eine Standardabweichung von 1.](https://developers.google.cn/static/machine-learning/crash-course/images/z-scaling_classic.png?authuser=7&hl=de)
Die Skalierung anhand des Z-Scores ist auch eine gute Wahl für Daten wie die in die folgende Abbildung zeigt, die nur eine vage Normalverteilung aufweist.
![Abbildung 5: Zwei Histogramme mit identischer Form, die jeweils einen steilen
auf einem Plateau aufsteigen und dann ein relativ schneller Abstieg, gefolgt von
allmählich ab. Ein Histogramm zeigt,
die Verteilung der Rohdaten, das andere Histogramm,
Verteilung der Rohdaten bei Normalisierung durch die Z-Score-Skalierung.
Die Werte auf der X-Achse der beiden Histogramme sind sehr unterschiedlich.
Das Rohdaten-Histogramm erstreckt sich über den Bereich
0 bis 29.000, während
Das skalierte Histogramm für den Z-Wert reicht von -1 bis ungefähr +4,8.](https://developers.google.cn/static/machine-learning/crash-course/images/z-scaling-non-classic-normal-distribution.png?authuser=7&hl=de)
Der Z-Score ist eine gute Wahl, wenn die Daten einer Normalverteilung oder ähnlich einer Normalverteilung.
Beachten Sie, dass einige Verteilungen innerhalb der
aber extreme Ausreißer enthalten. Fast alle
Punkte in einem net_worth
-Element lassen sich gut in drei Standardabweichungen
aber Hunderte Standardabweichungen können
vom Mittelwert entfernt. In diesen Situationen können Sie die Z-Wert-Skalierung mit
eine andere Form der Normalisierung (normalerweise Clipping) zur Bewältigung dieser Situation.
Übung: Wissenstest
Angenommen, Ihr Modell wird mit einem Feature namensheight
trainiert, das die erwachsene
Höhen von zehn Millionen Frauen. Wäre die Skalierung mit dem Z-Wert eine gute Normalisierung?
für „height
“? Warum bzw. warum nicht?
Logskalierung
Bei der logarithmischen Skalierung wird der Logarithmus des Rohwerts berechnet. Theoretisch Logarithmus kann eine beliebige Basis sein; In der Praxis berechnet die logarithmische Skalierung in der Regel den natürlichen Logarithmus (ln).
Die Log-Skalierung ist hilfreich, wenn die Daten einer Potenzgesetz-Verteilung entsprechen. Einfach ausgedrückt sieht eine Potenzgesetzverteilung so aus:
- Niedrige Werte von
X
haben sehr hohe Werte vonY
. - Wenn die Werte von
X
steigen, nehmen die Werte vonY
schnell ab. Daher haben hohe Werte fürX
sehr niedrige Werte vonY
.
Altersfreigaben für Filme sind ein gutes Beispiel für die Verteilung des Stromgesetzes. Im Folgenden Abbildung, Hinweis:
- Einige Filme haben viele Nutzerbewertungen. (Niedrige Werte für
X
haben hoheY
-Werten) - Die meisten Filme haben nur sehr wenige Nutzerbewertungen. (Hohe Werte von
X
haben niedrige Werte)Y
-Werten)
Durch die Log-Skalierung wird die Verteilung geändert. Dadurch wird ein Modell trainiert, bessere Vorhersagen zu treffen.
Ein zweites Beispiel: Buchverkäufe entsprechen der Verteilung des Stromgesetzes aus folgenden Gründen:
- Die meisten veröffentlichten Bücher verkaufen nur eine sehr kleine Anzahl von Exemplaren, vielleicht ein oder zweihundert.
- Von einigen Büchern werden durchschnittlich bis zu Tausenden Exemplare verkauft.
- Nur wenige Bestseller werden mehr als eine Million Exemplare verkaufen.
Angenommen, Sie trainieren ein lineares Modell, um die Beziehung zu ermitteln. von Buchcovern bis zu Buchverkäufen. Ein lineares Modell, das mit Rohwerten trainiert wird, müssen etwas über Buchcover bei Büchern finden, die sich in Millionenhöhe befinden Das ist 10.000 leistungsfähiger als Buchcover,die nur 100 Exemplare verkaufen. Die logarithmische Skalierung aller Verkaufszahlen macht die Aufgabe jedoch weitaus einfacher. Das Log von 100 lautet beispielsweise:
~4.6 = ln(100)
während das Log von 1.000.000 so aussieht:
~13.8 = ln(1,000,000)
Der Logarithmus von 1.000.000 ist also nur etwa dreimal größer als der Logarithmus von 100. Wahrscheinlich könnten Sie sich vorstellen, dass ein Buchcover des Bestsellers etwa dreimal so groß ist wie (in irgendeiner Weise) viel stärker als das Cover eines Buchcovers, das nur sehr klein verkauft wird.
Abschneiden
Mit dem Zuschneiden den Einfluss extremer Ausreißer minimieren. Kurz gesagt: Die Beschneidung von Großbuchstaben (verringert) den Wert von Ausreißern auf einen bestimmten Maximalwert. Clipping ist ein und trotzdem sehr effektiv ist.
Stellen Sie sich beispielsweise ein Dataset vor, das ein Feature mit dem Namen roomsPerPerson
,
die die Anzahl der Räume darstellt (Gesamtzahl der Räume geteilt durch
nach Anzahl der Bewohner) für verschiedene Häuser. Das folgende Diagramm zeigt,
99% der Featurewerte entsprechen einer Normalverteilung (ungefähr ein Mittelwert von
1,8 und eine Standardabweichung von 0,7). Die Funktion enthält jedoch
einige Ausreißer, einige davon extreme:
![Abbildung 7. Ein Diagramm mit Zimmern pro Person, in dem fast alle Werte
Cluster zwischen 0 und 4, aber es gibt einen verrrry langen Schwanz
bis zu 17 Räume pro Person](https://developers.google.cn/static/machine-learning/crash-course/images/PreClipping.png?authuser=7&hl=de)
Wie können Sie den Einfluss dieser extremen Ausreißer minimieren? Nun, die
Ein Histogramm ist keine gleichmäßige Verteilung, keine Normalverteilung oder ein Potenzgesetz.
Verteilung. Was wäre, wenn Sie den Maximalwert eines
roomsPerPerson
bei einem beliebigen Wert, z. B. 4,0?
![Ein Diagramm mit ZimmernProPerson, in dem alle Werte zwischen 0 und
4.0 Das Diagramm ist glockenförmig, aber es gibt einen ungewöhnlichen Hügel bei 4,0](https://developers.google.cn/static/machine-learning/crash-course/images/Clipping.png?authuser=7&hl=de)
Das Abschneiden des Featurewerts auf 4.0 bedeutet nicht, dass Ihr Modell alle Werte größer als 4,0. Es bedeutet vielmehr, dass alle Werte, als 4.0 ist jetzt 4.0. Das erklärt die seltsame Steigung von 4,0. Trotz ist der skalierte Feature-Satz nun nützlicher als die Originaldaten.
Einen Moment! Können Sie jeden Ausreißerwert wirklich auf einen beliebigen Grenzwert? Ja.
Sie können Werte auch nach Anwendung anderer Normalisierungsformen abschneiden. Angenommen, Sie verwenden die Z-Faktor-Skalierung, aber bei einigen Ausreißern absolute Werte 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.
- Die Z-Werte des Clips müssen kleiner als -3 sein, um exakt -3 zu erhalten.
Clipping verhindert, dass Ihr Modell bei unwichtigen Daten überindexiert wird. Sie können jedoch Einige Ausreißer sind tatsächlich wichtig, beschneiden Sie die Werte daher sorgfältig.
Zusammenfassung der Normalisierungstechniken
Normalisierungstechnik | Formel | Anwendung |
---|---|---|
Lineare Skalierung | $$ x' = \frac{x - x_{min}}{x_{max} - x_{min}} $$ | Wenn das Feature gleichmäßig über einem festen Bereich. |
Z-Faktor-Skalierung | $$ x' = \frac{x - μ}{σ}$$ | Wenn die Featureverteilung keine extremen Ausreißer enthält. |
Logskalierung | $$ x' = log(x)$$ | Wenn die Funktion den geltenden Energiegesetzen entspricht. |
Abschneiden | Wenn x € > max$, $x festlegen = max$ Wenn $x < min$, $x' einstellen = Min.$ |
Wenn das Feature extreme Ausreißer enthält. |
Übung: Testen Sie Ihr Wissen
Angenommen, Sie entwickeln ein Modell,
basierend auf der im Rechenzentrum gemessenen Temperatur.
Fast alle temperature
-Werte in Ihrem Dataset fallen
zwischen 15 und 30 (Celsius), mit folgenden Ausnahmen:
- Ein- oder zweimal im Jahr, an extrem heißen Tagen, liegen einige Werte zwischen
31 und 45 wurden in
temperature
aufgezeichnet. - Jeder 1.000. Punkt in
temperature
ist auf 1.000 festgelegt und nicht auf die tatsächliche Temperatur.
Was wäre eine sinnvolle Normalisierungstechnik für
temperature
?
Die Werte von 1.000 sind Fehler und sollten lieber gelöscht werden, abgeschnitten.
Die Werte zwischen 31 und 45 sind legitime Datenpunkte. Für diese Werte wäre Clipping wahrscheinlich eine gute Idee, vorausgesetzt, dass das Dataset nicht genügend Beispiele in diesem Temperaturbereich enthält, das Modell trainieren, um gute Vorhersagen zu treffen. Während der Inferenz dass das beschnittene Modell daher die gleiche Vorhersage für bei einer Temperatur von 35.