Feature-Kodierung in Neptune ML - Amazon Neptune

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.

Feature-Kodierung in Neptune ML

Eigenschaftswerte haben verschiedene Formate und Datentypen. Um eine gute Machine-Learning-Leistung zu erzielen, müssen diese Werte in numerische Kodierungen konvertiert werden, so genannte features.

Neptune ML extrahiert und kodiert Features im Rahmen der Schritte data-export und data-processing mit den hier beschrieben Feature-Kodierungs-Techniken.

Anmerkung

Wenn Sie eine eigene Feature-Kodierung in einer benutzerdefinierten Modellimplementierung implementieren möchten, können Sie die automatische Feature-Kodierung in der Datenvorverarbeitungsphase deaktivieren, indem Sie als Feature-Kodierungstyp none auswählen. In diesem Fall findet für diese Knoten- oder Kanteneigenschaft keine Feature-Kodierung statt. Stattdessen werden die rohen Eigenschaftswerte analysiert und in einem Verzeichnis gespeichert. Während der Datenvorverarbeitung wird weiter das DGL-Diagramm aus dem exportierten Datensatz erstellt, aber das konstruierte DGL-Diagramm verfügt nicht über keine vorverarbeiteten Features für das Training.

Sie sollten diese Option nur verwenden, wenn Sie eine benutzerdefinierte Feature-Kodierung als Teil eines benutzerdefinierten Modelltrainings ausführen möchten. Details dazu finden Sie unter Benutzerdefinierte Modelle in Neptune ML.

Kategorische Features in Neptune ML

Eine Eigenschaft, die einen oder mehrere unterschiedliche Werte aus einer festen Liste möglicher Werte annehmen kann, ist ein kategorisches Feature. In Neptune ML werden kategorische Features mit One-Hot-Kodierung kodiert. Das folgende Beispiel zeigt, wie die Eigenschaftsnamen verschiedener Lebensmittel entsprechend ihrer Kategorie mit One-Hot-Kodierung kodiert werden:

Food Veg. Meat Fruit Encoding --------- ---- ---- ----- -------- Apple 0 0 1 001 Chicken 0 1 0 010 Broccoli 1 0 0 100
Anmerkung

Die maximale Anzahl von Kategorien in einem kategorischen Feature ist 100. Wenn eine Eigenschaft mehr als 100 Wertkategorien besitzt, werden nur die 99 häufigsten Kategorien in verschiedenen Kategorien platziert. Der Rest wird in einer speziellen Kategorie mit dem Namen OTHER platziert.

Numerische Features in Neptune ML

Eine Eigenschaft, deren Werte reale Zahlen sind, kann in Neptune ML als numerisches Feature kodiert werden. Numerische Features werden mit Gleitkommazahlen kodiert.

Sie können eine Methode für die Datennormalisierung angeben, die beim Kodieren numerischer Features verwendet werden soll, z. B.: "norm": "normalization technique". Die folgenden Normalisierungstechniken werden unterstützt:

  • "none"   –   Normalisiert die numerischen Werte während der Kodierung nicht.

  • "min-max"   –   Normalisiert jeden Wert, indem der Mindestwert subtrahiert wird und der Wert dann durch die Differenz zwischen Maximalwert und Mindestwert dividiert wird.

  • "standard"   –   Normalisiert jeden Wert, indem er durch die Summe aller Werte dividiert wird.

Bucket-numerische Features in Neptune ML

Anstatt eine numerische Eigenschaft mit rohen Zahlen darzustellen, können Sie numerische Werte zu Kategorien kondensieren. Sie könnten beispielsweise das Alter von Personen in Kategorien wie Kinder (0–20), junge Erwachsene (20–40), Personen mittleren Alters (40–60) und ältere Menschen (ab 60) unterteilen. Mithilfe dieser numerischen Buckets würden Sie eine numerische Eigenschaft in eine Art kategorisches Feature transformieren.

In Neptune ML können Sie die Kodierung einer numerischen Eigenschaft als Bucket-numerisches Feature veranlassen. Sie müssen zwei Dinge angeben:

  • Ein numerischer Bereich im Format "range": [a, b] , wobei a und b Ganzzahlen sind.

  • Eine Bucket-Zahl im Format "bucket_cnt": c , wobei c die Anzahl der Buckets ist, ebenfalls eine Ganzzahl.

Neptune ML berechnet dann die Größe jedes Buckets als  ( b - a ) / c und kodiert jeden numerischen Wert als Nummer des Buckets, zu dem er gehört. Jeder Wert kleiner als a wird als zum ersten Bucket gehörend betrachtet. Jeder Wert größer als b wird als zum letzten Bucket gehörend betrachtet.

Sie können optional auch festlegen, dass numerische Werte zu mehr als einem Bucket gehören, indem Sie eine Größe für das Gleitfenster angeben, z. B.: "slide_window_size": s . Dabei ist s eine Zahl. Neptune ML transformiert anschließend jeden numerischen Wert v der Eigenschaft in einen Bereich von v - s/2 bis v + s/2 und weist den Wert v jedem Bucket zu, den der Bereich abdeckt.

Schließlich können Sie optional auch eine Möglichkeit zum Ausfüllen fehlender Werte für numerische Features und Bucket-numerische Features bereitstellen. Hierzu verwenden Sie "imputer": "imputation technique ", wobei die Imputationstechnik entweder "mean", "median" oder "most-frequent" ist. Wenn Sie keinen Imputer angeben, kann ein fehlender Wert dazu führen, dass die Verarbeitung angehalten wird.

Text-Feature-Kodierung in Neptune ML

Für Freiformtext kann Neptune ML mehrere verschiedene Modelle verwenden, um die Sequenz von Token in einer Eigenschaftswert-Zeichenfolge in einen Realwertvektor fester Größe zu konvertieren:

  • text_fasttext   –   Verwendet fastText-Kodierung. Dies ist die empfohlene Kodierung für Features, die eine und nur eine der fünf Sprachen verwenden, die fastText unterstützt.

  • text_sbert   –   Verwendet die Kodierungsmodelle Sentence BERT (SBERT). Dies ist die empfohlene Kodierung für Text, den text_fasttext nicht unterstützt.

  • text_word2vec   –   Verwendet die Word2Vec-Algorithmen (ursprünglich von Google veröffentlicht), um Text zu kodieren. Word2Vec unterstützt nur Englisch.

  • text_tfidf   –   Verwendet den Vektorisierer term frequency–inverse document frequency (TF-IDF) für die Textkodierung. Die TF-IDF-Kodierung unterstützt statistische Features, die von den anderen Kodierungen nicht unterstützt werden.

fastText-Kodierung von Texteigenschaftswerten in Neptune ML

Neptune ML kann die fastText-Modelle verwenden, um Texteigenschaftswerte in Realwertvektoren fester Größe zu konvertieren. Dies ist die empfohlene Kodierungsmethode für Texteigenschaftswerte in einer der fünf Sprachen, die fastText unterstützt:

  • en   (Englisch)

  • zh   (Chinesisch)

  • hi   (Hindi)

  • es   (Spanisch)

  • fr   (Französisch)

Beachten Sie, dass fastText keine Sätze verarbeiten kann, die Wörter in mehr als einer Sprache enthalten.

Die Methode text_fasttext kann optional das Feld max_length verwenden, das die maximale Anzahl von Token in einem Texteigenschaftswert angibt, die kodiert werden sollen. Anschließend wird die Zeichenfolge abgeschnitten. Dies kann die Leistung verbessern, wenn Texteigenschaftswerte lange Zeichenfolgen enthalten, da fastText alle Token unabhängig von der Zeichenfolgenlänge kodiert, wenn max_length nicht angegeben ist.

Dieses Beispiel gibt an, dass französische Filmtitel mit fastText kodiert werden:

{ "file_name" : "nodes/movie.csv", "separator" : ",", "node" : ["~id", "movie"], "features" : [ { "feature": ["title", "title", "text_fasttext"], "language": "fr", "max_length": 1024 } ] }

Sentence BERT (SBERT)-Satzkodierung von Text-Features in Neptune ML

Neptune ML kann die Sequenz von Token in einem Zeichenfolgen-Eigenschaftswert mithilfe von Sentence BERT (SBERT)-Modellen in einen Realwertvektor fester Größe konvertieren. Neptune unterstützt zwei SBERT-Methoden: text_sbert128 (die Standardmethode, wenn Sie nur text_sbert angeben) und text_sbert512. Der Unterschied zwischen den beiden Methoden ist die maximale Länge einer kodierten Texteigenschaftswert-Zeichenfolge. Bei der text_sbert128-Kodierung werden Textzeichenfolgen nach der Kodierung von 128 Token abgeschnitten, während text_sbert512 Textzeichenfolgen nach der Kodierung von 512 Token abschneidet. Daher erfordert text_sbert512 mehr Verarbeitungszeit als text_sbert128. Beide Methoden sind langsamer als text_fasttext.

Die SBERT-Kodierung ist mehrsprachig. Daher müssen Sie keine Sprache für den Eigenschaftswerttext angeben, den Sie kodieren. SBERT unterstützt zahlreiche Sprachen und kann einen Satz kodieren, der mehr als eine Sprache enthält. Wenn Sie Eigenschaftswerte kodieren, die Text in einer oder mehreren Sprachen enthalten, die fastText nicht unterstützt, ist SBERT die empfohlene Kodierungsmethode.

Das folgende Beispiel gibt an, dass Filmtitel bis maximal 128 Token als SBERT kodiert werden:

{ "file_name" : "nodes/movie.csv", "separator" : ",", "node" : ["~id", "movie"], "features" : [ { "feature": ["title", "title", "text_sbert128"] } ] }

Word2Vec-Kodierung von Text-Features in Neptune ML

Neptune ML kann Zeichenfolgen-Eigenschaftswerte als Word2Vec-Feature kodieren. (Die Word2Vec-Algorithmen wurden ursprünglich von Google veröffentlicht.) Die Methode text_word2vec kodiert die Token in einer Zeichenfolge als dichten Vektor unter Verwendung eines von SpaCy trainierten Modells. Sie unterstützt nur die englische Sprache (unter Verwendung des Modells en_core_web_lg).

Das folgende Beispiel gibt an, dass Filmtitel mit Word2Vec kodiert werden:

{ "file_name" : "nodes/movie.csv", "separator" : ",", "node" : ["~id", "movie"], "features" : [ { "feature": ["title", "title", "text_word2vec"], "language": "en_core_web_lg" } ] }

Beachten Sie, dass das Sprachfeld optional ist, da das englische en_core_web_lg-Modell das einzige Modell ist, das Neptune unterstützt.

TF-IDF-Kodierung von Text-Features in Neptune ML

Neptune ML kann Texteigenschaftswerte als text_tfidf-Features kodieren. Diese Kodierung konvertiert die Reihenfolge der Wörter im Text mittels des Vektorisierers term frequency–inverse document frequency (TF-IDF) in einen numerischen Vektor, gefolgt von einer Operation zur Reduzierung der Dimensionalität.

TF-IDF (term frequency – inverse document frequency) ist ein numerischer Wert, der misst, wie wichtig ein Wort in einem Dokumentensatz ist. Er wird berechnet, indem die Häufigkeit, mit der ein Wort in einem bestimmten Eigenschaftswert vorkommt, durch die Gesamtzahl der Eigenschaftswerte dividiert wird, in denen es vorkommt.

Wenn beispielsweise das Wort „Kiss“ zweimal in einem bestimmten Filmtitel vorkommt (z. B. „Kiss Kiss Bang Bang“) und „Kiss“ im Titel von insgesamt 4 Filmen vorkommt, dann wäre der TF-IDF-Wert für „Kiss“ im Titel „Kiss Kiss Bang Bang“ 2 / 4 .

Der Vektor, der ursprünglich erstellt wird, hat d Dimensionen, wobei d die Anzahl der eindeutigen Begriffe in allen Eigenschaftswerten dieses Typs ist. Die Operation zur Reduzierung der Dimensionalität verwendet eine randomisierte Projektion mit geringer Dichte, um diese Zahl auf maximal 100 zu reduzieren. Anschließend wird das Vokabular eines Diagramms generiert, indem alle enthaltenen text_tfidf-Features zusammengeführt werden.

Sie können den TF-IDF-Vektorisierer auf verschiedene Arten steuern:

  • max_features   –   Mithilfe des Parameters max_features können Sie die Anzahl der Begriffe in text_tfidf-Features auf die häufigsten einschränken. Wenn Sie beispielsweise max_features auf 100 festlegen, sind nur die 100 am häufigsten verwendeten Begriffe enthalten. Wenn Sie max_features nicht explizit festlegen, ist der Standardwert 5 000.

  • min_df   –   Mithilfe des Parameters min_df können Sie die Anzahl der Begriffe in text_tfidf-Features auf Features einschränken, die mindestens mit einer angegebenen Häufigkeit im Dokumentsatz vorkommen. Wenn Sie beispielsweise min_df auf 5 festlegen, werden nur Begriffe verwendet, die in mindestens 5 verschiedenen Eigenschaftswerten vorkommen. Wenn Sie min_df nicht explizit festlegen, ist der Standardwert 2.

  • ngram_range   –   Der Parameter ngram_range bestimmt, welche Wortkombinationen als Begriffe behandelt werden. Wenn Sie beispielsweise ngram_range auf [2, 4] festlegen, würden die folgenden 6 Begriffe im Titel „Kiss Kiss Bang Bang“ vorkommen:

    • Begriffe mit 2 Wörtern:  „Kiss Kiss“, „Kiss Bang“ und „Bang Bang“.

    • Begriffe mit 3 Wörtern:  „Kiss Kiss Bang“ und „Kiss Bang Bang“.

    • Begriffe mit 4 Wörtern:  „Kiss Kiss Bang Bang“.

    Die Standardeinstellung für ngram_range ist [1, 1].

Datetime-Features in Neptune ML

Neptune ML kann Teile von datetime-Eigenschaftswerten in kategorische Features konvertieren, indem sie als One-Hot-Arrays kodiert werden. Verwenden Sie den Parameter datetime_parts, um einen oder mehrere der folgenden Teile für die Kodierung anzugeben: ["year", "month", "weekday", "hour"]. Wenn Sie datetime_parts nicht festlegen, werden standardmäßig alle vier Teile kodiert.

Wenn der Bereich der datetime-Werte beispielsweise die Jahre 2010 bis 2012 umfasst, sind die vier Teile des datetime-Eintrags 2011-04-22 01:16:34 wie folgt:

  • year   –   [0, 1, 0].

    Da der Zeitraum nur 3 Jahre umfasst (2010, 2011 und 2012), hat das One-Hot-Array drei Einträge, einen für jedes Jahr.

  • month   –   [0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0].

    Hier enthält das One-Hot-Array einen Eintrag für jeden Monat des Jahres.

  • weekday   –   [0, 0, 0, 0, 1, 0, 0].

    Nach dem ISO-8601-Standard ist Montag der erste Tag der Woche. Da der 22. April 2011 ein Freitag war, ist das entsprechende One-Hot-Wochentag-Array an der fünften Position aktiviert.

  • hour   –   [0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0].

    Die Stunde 01:00 Uhr ist in einem One-Hot-Array mit 24 Elementen festgelegt.

Tag des Monats, Minute und Sekunde sind nicht kategorisch kodiert.

Wenn der betreffende datetime-Bereich nur Daten innerhalb eines einzigen Jahres umfasst, wird kein year-Array kodiert.

Sie können eine Imputationsstrategie angeben, um fehlende datetime-Werte aufzufüllen, indem Sie den Parameter imputer und eine der für numerische Features verfügbaren Strategien verwenden.

Auto-Feature-Kodierung in Neptune ML

Anstatt die Feature-Kodierungsmethoden manuell anzugeben, die für die Eigenschaften im Diagramm verwendet werden sollen, können Sie auto als Feature-Kodierungsmethode festlegen. Neptune ML versucht dann, anhand des zugrunde liegenden Datentyps die beste Feature-Kodierung für jede Eigenschaft zu inferieren.

Dies sind einige der Heuristiken, die Neptune ML bei der Auswahl der geeigneten Feature-Kodierungen verwendet:

  • Wenn die Eigenschaft nur numerische Werte besitzt und in numerische Datentypen konvertiert werden kann, kodiert Neptune ML sie im Allgemeinen als numerischen Wert. Wenn jedoch die Anzahl der eindeutigen Werte für die Eigenschaft weniger als 10 % der Gesamtzahl der Werte ist und die Kardinalität dieser eindeutigen Werte kleiner als 100 ist, verwendet Neptune ML eine kategorische Kodierung.

  • Wenn die Eigenschaftswerte in einen datetime-Typ konvertiert werden können, kodiert Neptune ML sie als datetime-Feature.

  • Wenn die Eigenschaftswerte in boolesche Werte (1/0 oder True/False) transformiert werden können, verwendet Neptune ML die Kategoriekodierung.

  • Wenn es sich bei der Eigenschaft um eine Zeichenfolge handelt, in der mehr als 10 % ihrer Werte eindeutig sind und die durchschnittliche Anzahl von Token pro Wert größer oder gleich 3 ist, inferiert Neptune ML den Eigenschaftstyp als Text und erkennt automatisch die verwendete Sprache. Wenn es sich bei der erkannten Sprache um eine der von fastText unterstützten Sprachen handelt (Englisch, Chinesisch, Hindi, Spanisch und Französisch), verwendet Neptune ML text_fasttext zur Kodierung des Texts. Andernfalls verwendet Neptune ML text_sbert.

  • Wenn die Eigenschaft eine nicht als Text-Feature klassifizierte Zeichenfolge ist, nimmt Neptune ML an, dass es sich um ein kategorisches Feature handelt, und verwendet die Kategoriekodierung.

  • Wenn jeder Knoten einen eigenen eindeutigen Wert für eine Eigenschaft hat, die als Kategorie-Feature inferiert wird, löscht Neptune ML die Eigenschaft aus dem Trainingsdiagramm, da es sich wahrscheinlich um eine ID handelt, die für das Lernen keine Informationen bereitstellt.

  • Wenn bekannt ist, dass die Eigenschaft gültige Neptune-Trennzeichen wie Semikolon („;“) enthält, kann Neptune ML die Eigenschaft nur als MultiNumerical oder MultiCategorical behandeln.

    • Neptune ML versucht zunächst, die Werte als numerische Features zu kodieren. Wenn dies erfolgreich ist, verwendet Neptune ML die numerische Kodierung, um numerische Vektor-Features zu erstellen.

    • Andernfalls kodiert Neptune ML die Werte als Werte mit mehreren Kategorien.

  • Wenn Neptune ML den Datentyp der Eigenschaftswerte nicht inferieren kann, entfernt Neptune ML die Eigenschaft aus dem Trainingsdiagramm.