Referenz zur Datentransformation - Amazon Machine Learning

Wir aktualisieren den Amazon Machine Learning Learning-Service nicht mehr und akzeptieren keine neuen Benutzer mehr dafür. Diese Dokumentation ist für bestehende Benutzer verfügbar, wir aktualisieren sie jedoch nicht mehr. Weitere Informationen finden Sie unterWas Amazon Machine Learning.

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

Referenz zur Datentransformation

N-Gramm-Transformation

Bei einer N-Gramm-Transformation wird eine Textvariable als Eingabe erfasst und Zeichenfolgen erzeugt, die einem Fenster mit "n" Wörtern (benutzerdefiniert) entsprechen. Dabei werden Ausgaben generiert. Im folgenden Beispiel wird die Textzeichenfolge "Ich las dieses Buch wirklich gern".

Durch Angabe der N-Gramm-Transformation mit Fenstergröße = 1 erhalten Sie alle einzelnen Wörter in dieser Zeichenfolge:

{"I", "really", "enjoyed", "reading", "this", "book"}

Wird für eine N-Gramm-Transformation die Fenstergröße = 2 angegeben, erhalten Sie alle Kombinationen aus zwei Wörtern sowie alle Einzelwortkombinationen:

{"I really", "really enjoyed", "enjoyed reading", "reading this", "this book", "I", "really", "enjoyed", "reading", "this", "book"}

Durch Angabe der N-Gramm-Transformation mit Fenstergröße = 3 werden der Liste Kombinationen aus drei Wörtern hinzugefügt. Dies führt zu folgendem Ergebnis:

{"I really enjoyed", "really enjoyed reading", "enjoyed reading this", "reading this book", "I really", "really enjoyed", "enjoyed reading", "reading this", "this book", "I", "really", "enjoyed", "reading", "this", "book"}

Sie können N-Gramme mit einer Größe von 2-10 Wörtern anfordern. N-Gramme mit der Größe 1 werden implizit für alle Eingaben generiert, deren Typ als Text im Datenschema markiert ist, sodass Sie dies nicht extra angeben müssen. Außerdem sollten Sie bedenken, dass N-Gramme generiert werden, indem die Eingabedaten durch Leerzeichen unterbrochen werden. Das bedeutet, dass beispielsweise Interpunktionszeichen werden als Teil des Worttokens betrachtet werden: Generieren eines N-Gramms mit einem Fenster von 2 für die Zeichenfolge "Rot, Grün, Blau" ergibt {"Rot,", "Grün,", "Blau,", "Rot, Grün", "Grün, Blau"}. Sie können den Satzzeichenentfernungs-Prozessor (siehe weiter unten in diesem Dokument) verwenden, um die Satzzeichen zu entfernen, wenn Sie dies nicht wünschen.

So berechnen Sie N-Gramme mit der Fenstergröße 3 für Variable var1:

"ngram(var1, 3)"

Orthogonal Sparse Bigram (OSB)-Transformation

Das OSB-Transformation soll die Textzeichenfolgenanalyse unterstützen und ist eine Alternative zur Bi-Gramm-Transformation (N-Gramm mit Fenstergröße 2). Bei der Generierung von OSBs wird ein Fenster der Größe N über den Text geschoben, und es werden alle Wortpaare ausgegeben, die das erste Wort im Fenster enthalten.

Zum Erstellen von OSB werden die enthaltenen Wörter mit einem Unterstrich "_" verbunden und alle übersprungenen Token durch Angabe eines weiteren Unterstrichs im OSB angegeben. Daher codiert die OSB-Transformation nicht nur die Token in einem Fenster, sondern auch die Anzahl der übersprungenen Token in diesem Fenster.

Nehmen Sie beispielsweise die Zeichenfolge "Franz jagt im komplett verwahrlosten Taxi quer durch Bayern" und OSBs der Größe 4. Die sechs Vier-Wort-Fenster und die letzten beiden kleineren Fenster vom Ende der Zeichenfolge werden im folgenden Beispiel angezeigt, zusammen mit den jeweils generierten OSBs:

Fenster, {generierte OSBs}

"The quick brown fox", {The_quick, The__brown, The___fox} "quick brown fox jumps", {quick_brown, quick__fox, quick___jumps} "brown fox jumps over", {brown_fox, brown__jumps, brown___over} "fox jumps over the", {fox_jumps, fox__over, fox___the} "jumps over the lazy", {jumps_over, jumps__the, jumps___lazy} "over the lazy dog", {over_the, over__lazy, over___dog} "the lazy dog", {the_lazy, the__dog} "lazy dog", {lazy_dog}

OSBs sind eine Alternative für N-Gramme, die ggf. in einigen Fällen besser funktionieren. Wenn Ihre Daten große Textfelder (10 oder mehr Wörter) haben, experimentieren Sie damit, um zu sehen, welche Option besser geeignet ist. Bitte beachten Sie: Was ein „großes Textfeld“ ist, kann je nach Situation unterschiedlich sein. Bei großen Textfeldern hat sich jedoch empirisch erwiesen, dass OSBs den Text aufgrund des speziellen Überspringen-Symbols (dem Unterstrich) eindeutig darstellen.

Sie können eine Fenstergröße von 2 bis 10 für OSB-Transformationen von Eingabetextvariablen angeben.

So berechnen Sie OSBs mit der Fenstergröße 5 für Variable var1:

"osb(var1, 5)"

Umwandlung in Kleinbuchstaben

Der Kleinbuchstaben-Transformationsprozessor wandelt Texteingaben in Kleinbuchstaben um. Die Eingabe "Franz jagt im komplett verwahrlosten Taxi quer durch Bayern" wird vom Prozessor beispielsweise in die Ausgabe "franz jagt im komplett verwahrlosten taxi quer durch bayern" umgewandelt.

So wenden Sie Kleinbuchstaben-Transformation auf die Variable var1 an:

"lowercase(var1)"

Transformation zum Entfernen von Satzzeichen

Amazon ML unterteilt als Text markierte Eingaben im Datenschema implizit bei Leerzeichen. Satzzeichen in der Zeichenfolge ergeben entweder angrenzende Wort-Token oder vollständig separate Token, abhängig von den umgebenden Leerzeichen. Wenn Sie dies verhindern möchten, können Sie die Transformation zum Entfernen der Satzzeichen verwenden, um Satzzeichen aus generierten Funktionen zu entfernen. Beispielsweise werden für die Zeichenfolge "Willkommen bei AML – bitte verwenden Sie Sicherheitsgurte!" implizit die folgenden Token generiert:

{"Welcome", "to", "Amazon", "ML", "-", "please", "fasten", "your", "seat-belts!"}

Die Anwendung des Satzzeichenentfernungs-Prozessors auf diese Zeichenfolge ergibt folgenden Satz:

{"Welcome", "to", "Amazon", "ML", "please", "fasten", "your", "seat-belts"}

Beachten Sie, dass nur vorangestellte und nachfolgende Satzzeichen entfernt werden. Satzzeichen, die mitten in einem Token stehen, z. B. ein Bindestrich in "Sicherheits-Gurt", werden nicht entfernt.

So wenden Sie Satzzeichenentfernung auf die Variable var1 an:

"no_punct(var1)"

Quartile-Binning-Transformation

Der Quartile-Binning-Prozessor verwendet zwei Eingaben, nämlich eine numerische Variable und ein als Bin-Nummer bezeichneter Parameter. Die Ausgabe besteht aus einer kategorischen Variable. Der Zweck ist das Erkennen von Nicht-Linearität in der Variablenverteilung durch Gruppierung der beobachteten Werte.

In vielen Fällen ist die Beziehung zwischen einer numerischen Variablen und dem Ziel nicht linear (der numerische Variablenwert wird nicht gleichmäßig mit dem Ziel erhöht oder verringert). In solchen Fällen kann es nützlich sein, die numerische Funktion in eine kategorische Funktion zu packen, um verschiedene Bereiche der numerischen Funktion darzustellen. Jeder kategorische Funktionswert (Bin) kann dann mit einer eigenen linearen Beziehung zum Ziel im Modell dargestellt werden. Nehmen wir an, Sie wissen, dass die kontinuierliche numerische Funktion Kontodauer nicht linear mit der Wahrscheinlichkeit verläuft, ein Buch zu kaufen. Sie können die Dauer also in kategorische Funktionen packen, die in der Lage sind, die Beziehung zum Ziel genauer zu erfassen.

Der Quartile-Binning-Prozessor kann verwendet werden, um Amazon ML anzuweisen, n Pakete gleicher Größe basierend auf der Verteilung aller Eingabewerte der Dauer-Variable zu erstellen und dann jede Zahl durch ein Text-Token mit dem darin enthaltenen Paket zu ersetzen. Die optimale Anzahl von Paketen für eine numerische Variable hängt von den Eigenschaften der Variablen und ihrer Beziehung mit dem Ziel ab und wird am besten durch Experimente bestimmt. Amazon ML schlägt die optimale Paketanzahl für eine numerische Funktion basierend auf den Datenstatistiken im vorgeschlagenen Rezept vor.

Sie können zwischen 5 und 1000 Quantil-Pakete für jede numerische Eingabevariable berechnet lassen.

Im folgenden Beispiel wird gezeigt, wie 50 Pakete anstelle der numerischen Variablen var1 berechnet und verwendet werden:

"quantile_bin(var1, 50)"

Normierungstransformation

Die Normierungstransformation normalisiert numerische Variablen auf einen Mittelwert von 0 und die Varianz 1. Die Normierung von numerischen Variablen kann den Lernprozess unterstützen, wenn es sehr große Bereichsunterschiede zwischen numerischen Variablen gibt, da Variablen mit der höchsten Größenordnung das ML-Modell dominieren könnten, unabhängig davon, ob die Funktion in Bezug auf das Ziel informativ ist oder nicht.

Um diese Transformation auf die numerische Variable var1 anzuwenden, fügen Sie Folgendes zum Rezept hinzu:

normalize(var1)

Diese Transformation kann auch eine benutzerdefinierte Gruppe von numerischen Variablen oder die voreingestellte Gruppe für alle numerischen Variablen (ALL_NUMERIC) als Eingabe verwenden:

normalize(ALL_NUMERIC)

Hinweis

Es ist nicht erforderlich, den Normierungsprozessor für numerische Variablen zu verwenden.

Kartesische Produkt-Transformation

Die kartesische Transformation generiert Permutationen von zwei oder mehr Text- oder kategorischen Eingabevariablen. Diese Transformation wird verwendet, wenn eine Interaktion zwischen Variablen vermutet wird. Nehmen Sie zum Beispiel den Bank-Marketing-Datensatz im Tutorial: Verwenden von Amazon ML zum Voraussagen der Reaktionen auf ein Marketingangebot. Mit diesem Datensatz möchten wir voraussagen, ob eine Person positiv auf ein Bankangebot reagiert, basierend auf wirtschaftlichen und demografischen Informationen. Wir könnten vermuten, dass die Person einen wichtigen Job hat (vielleicht gibt es einen Zusammenhang zwischen einer Anstellung in bestimmten Bereichen und verfügbarem Geld), und auch der höchste erreichte Bildungsabschluss ist ebenfalls wichtig. Wir könnten auch eine tiefergehende Intuition haben, dass es eine klare Botschaft in der Interaktion dieser beiden Variablen gibt, z. B., dass die Werbeaktion besonders für Kunden geeignet ist, die Unternehmer mit Hochschulabschluss sind.

Die kartesische Produkt-Transformation nimmt kategorische Variablen oder Text als Eingabe und erzeugt neue Funktionen, um die Interaktion zwischen diesen Eingabevariablen zu erfassen. Insbesondere für jedes Schulungsbeispiel erstellt es eine Kombination aus Funktionen und fügt sie dann als eigenständige Funktion hinzu. Angenommen, unsere vereinfachten Eingabezeilen sehen so aus:

Ziel, Bildung, Job

0, Universität.Abschluss, Techniker

0, Fach.Hochschule, Service

1, Universität.Abschluss, Admin

Wenn wir angeben, dass die kartesischen Transformation auf die kategorischen Variablen "Bildung" und "Job" angewendet wird, sieht die resultierende Funktion Bildung_Job_Interaktion wie folgt aus:

Ziel, Bildung_Job_Interaktion

0, Universität.Abschluss_Techniker

0, Fach.Hochschule_Service

1, Universität.Abschluss_Admin

Die kartesische Transformation ist sogar noch leistungsfähiger, wenn es um die Bearbeitung von Token-Sequenzen geht. Dies ist der Fall, wenn es sich bei einem der Argumente um eine Textvariable handelt, die implizit oder explizit in Token aufgeteilt ist. Nehmen Sie beispielsweise die Klassifizierungsaufgabe, ob ein Buch als Lehrbuch eingesetzt wird oder nicht. Intuitiv denken wir, dass etwas im Buchtitel uns verrät, ob es sich um ein Lehrbuch handelt (bestimmte Wörter können häufiger in Lehrbuchtiteln auftauchen), und wir vermuten auch den Bucheinband (Fachbücher sind mit höherer Wahrscheinlichkeit gebunden), aber es ist in ‏Wirklichkeit die Kombination von einigen Wörtern im Titel und der Einband, die die beste Voraussage ergeben. Für ein praktisches Beispiel finden Sie in der folgenden Tabelle die Ergebnisse der Anwendung des kartesischen Prozessors auf die Eingabevariablen für Einband und Titel:

Lehrbuch Titel Einband Kartesisches Produkt aus no_punct(Titel) und Einband
1 Wirtschaft: Prinzipien, Probleme, Richtlinien Hardcover {"Wirtschaft_Hardcover", "Prinzipien_Hardcover", "Probleme_Hardcover", "Richtlinien_Hardcover"}
0 Das unsichtbare Herz: Eine Wirtschaftromanze Taschenbuch {"Das_Taschenbuch", "unsichtbare_Taschenbuch", "Herz_Taschenbuch", "Eine_Taschenbuch", "Wirtschaftromanze_Taschenbuch"}
0 Spaß mit Problemen Taschenbuch {"Spaß_Taschenbuch", "mit_Taschenbuch", "Problemen_Taschenbuch"}

Das folgende Beispiel zeigt, wie Sie die kartesische Transformation auf var1 und var2 anwenden:

cartesian(var1, var2)