Der Begriff Dimension ist ein Synonym für die Anzahl der Elemente in einer Featurevektor: Einige kategoriale Merkmale sind niedrigdimensional. Beispiel:
Name der Funktion | Anzahl der Kategorien | Beispielkategorien |
---|---|---|
snowed_today | 2 | Wahr, falsch |
skill_level | 3 | Anfänger, Profi, Experte |
season | 4 | Winter, Frühling, Sommer, Herbst |
day_of_week | 7 | Montag, Dienstag, Mittwoch |
Planet | 8 | Merkur, Venus, Erde |
Wenn ein kategoriales Merkmal nur wenige mögliche Kategorien hat, können Sie codieren Sie es als Vokabular. Mit einer Vokabularcodierung behandelt das Modell alle Möglicher kategorialer Wert als separates Feature. Während der Schulung unterschiedliche Gewichtungen für jede Kategorie lernt.
Angenommen, Sie erstellen ein Modell,
um den Preis eines Autos vorherzusagen,
die teilweise auf ein kategoriales Feature mit dem Namen car_color
angewendet wurden.
Vielleicht sind rote Autos mehr wert als grüne Autos.
Da die Hersteller nur eine begrenzte Anzahl von Außenfarben anbieten, ist car_color
ein niedrigdimensionales kategoriales Merkmal.
In der folgenden Abbildung wird ein Vokabular (mögliche Werte) für
car_color
:
Übung: Teste deine Intuition
"Red"
ist keine Gleitkommazahl. Ich
muss Strings wie "Red"
in Gleitkommazahlen konvertieren.
Indexnummern
Modelle für maschinelles Lernen können nur Gleitkommazahlen bearbeiten. Daher müssen Sie jeden String wie in die folgende Abbildung:
Teste deine Intuition
"Black"
(Indexnummer 5) in 5 Mal aussagekräftiger
als "Orange"
(Indexnummer 1).
"Black"
(Indexnummer 5) als
5-mal aussagekräftiger als "Orange"
(Indexnummer 1).
One-Hot-Codierung
Der nächste Schritt beim Erstellen eines Vokabulars besteht darin, jede Indexnummer in One-Hot-Codierung. In einer One-Hot-Codierung:
- Jede Kategorie wird durch einen Vektor (Array) von N Elementen dargestellt, wobei N
ist die Anzahl der Kategorien. Beispiel: Wenn für
car_color
acht mögliche Werte vorhanden sind Kategorien enthalten, hat der One-Hot-Vektor, der diese darstellt, acht Elemente. - Genau eines der Elemente in einem One-Hot-Vektor hat den Wert 1,0; haben alle übrigen Elemente den Wert 0,0.
Die folgende Tabelle zeigt beispielsweise die One-Hot-Codierung für jede in
car_color
:
Funktion | Rot | Orange | Blau | Gelb | Grün | Schwarz | Lila | Braun |
---|---|---|---|---|---|---|---|---|
„Rot“ | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
„Orange“ | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 |
„Blau“ | 0 | 0 | 1 | 0 | 0 | 0 | 0 | 0 |
„Gelb“ | 0 | 0 | 0 | 1 | 0 | 0 | 0 | 0 |
„Grün“ | 0 | 0 | 0 | 0 | 1 | 0 | 0 | 0 |
„Schwarz“ | 0 | 0 | 0 | 0 | 0 | 1 | 0 | 0 |
"Lila" | 0 | 0 | 0 | 0 | 0 | 0 | 1 | 0 |
„Braun“ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
Es ist der One-Hot-Vektor, nicht der String oder die Indexnummer, der übergeben wird. zum Featurevektor hinzu. Das Modell lernt eine eigene Gewichtung für jedes Element Featurevektor verwenden.
In der folgenden Abbildung sind die verschiedenen Transformationen in der Vokabulardarstellung:
Dünnbesetzte Darstellung
Ein Feature, dessen Werte überwiegend null (oder leer) sind, wird als ein
dünn besetztes Feature. Viele
Kategoriale Features wie car_color
sind in der Regel dünnbesetzte Features.
Sparse-Darstellung
bedeutet das Speichern der position von 1,0
in einem dünnbesetzten Vektor. Der One-Hot-Vektor für "Blue"
ist beispielsweise:
[0, 0, 1, 0, 0, 0, 0, 0]
Da sich 1
an Position 2 befindet (beim Start der Zählung mit 0), gilt Folgendes:
dünnbesetzte Darstellung für den vorherigen One-Hot-Vektor ist:
2
Beachten Sie, dass die dünnbesetzte Darstellung viel weniger Arbeitsspeicher verbraucht als die One-Hot-Vektor mit acht Elementen. Wichtig ist, dass das Modell auf dem Training und nicht die dünnbesetzte Darstellung.
Ausreißer in kategorialen Daten
Wie numerische Daten enthalten auch kategorische Daten Ausreißer. Angenommen,
car_color
enthält nicht nur die beliebten Farben, sondern auch einige selten verwendete
Ausreißerfarben, z. B. "Mauve"
oder "Avocado"
.
Anstatt jede dieser Ausreißerfarben einer separaten Kategorie zuzuordnen,
sie zu einem einzigen „Catch-All“ zusammenfassen, Kategorie namens nicht im Vokabular
(Aus dem Off). Mit anderen Worten, alle Ausreißerfarben werden in einer einzigen
Ausreißer-Bucket. Das System lernt eine einzelne Gewichtung für diesen Ausreißer-Bucket.
Hochdimensionale kategoriale Merkmale codieren
Einige kategoriale Merkmale haben eine hohe Anzahl von Dimensionen, z. B. in der folgenden Tabelle:
Name der Funktion | Anzahl der Kategorien | Beispielkategorien |
---|---|---|
words_in_english | ~ 500.000 | "glücklich", "gehend" |
US_postal_codes | ~ 42.000 | „02114“, „90301“ |
last_names_in_Germany | ~850.000 | „Schmidt“, „Schneider“ |
Bei einer hohen Anzahl von Kategorien ist die One-Hot-Codierung in der Regel keine gute Wahl. Einbettungen, die in einem separaten Modul für Einbettungen, werden in der Regel eine viel bessere Entscheidung. Durch Einbettungen wird die Anzahl der Dimensionen, die Modelle in zweierlei Hinsicht nutzen:
- Das Modell wird in der Regel schneller trainiert.
- Das integrierte Modell leitet Vorhersagen normalerweise schneller ab. Das heißt, der Parameter Modell eine niedrigere Latenz hat.
Hash-Technologie (auch als Hash-Technologie bezeichnet) ) ist eine weniger gebräuchliche Methode, um die Anzahl der Dimensionen zu reduzieren.