Training mit dem integrierten Linear-Learner-Algorithmus

Wenn Sie integrierte Algorithmen für das Training in AI Platform verwenden, können Sie Ihr Dataset zum Trainieren eines Modells senden, ohne Trainingscode schreiben zu müssen. Auf dieser Seite werden die Funktionsweise und die Verwendung des integrierten Linear-Learner-Algorithmus erläutert.

Überblick

Der integrierte Algorithmus führt die Vorverarbeitung und das Training aus:

  1. Vorverarbeitung: Zur Vorbereitung des Trainings verarbeitet AI Platform Ihren Mix aus kategorialen und numerischen Daten zu einem komplett numerischen Dataset.
  2. Training: AI Platform führt das Training mit dem Linear Estimator von Tensorflow aus. Dabei werden das von Ihnen angegebene Dataset und die festgelegten Modellparameter verwendet.

Beschränkungen

Die folgenden Funktionen werden für das Training mit dem integrierten Linear-Learner-Algorithmus nicht unterstützt:

Unterstützte Maschinentypen

Es werden die folgenden AI Platform-Skalierungsstufen und Maschinentypen unterstützt:

  • BASIC
  • CUSTOM:
    • standard
    • large_model
    • complex_model_s
    • complex_model_m
    • complex_model_l
    • standard_gpu
    • standard_p100
    • standard_v100
    • large_model_v100

Darüber hinaus können Sie auch Compute Engine-Maschinentypen (Beta) verwenden. Weitere Informationen zu Maschinentypen finden Sie hier.

Eingabedaten formatieren

Jede Zeile eines Datasets stellt eine Instanz dar und jede Spalte eines Datasets einen Merkmalswert. Die Zielspalte stellt den Wert dar, den Sie vorhersagen möchten.

CSV-Datei vorbereiten

Ihre Eingabedaten müssen in einer CSV-Datei mit UTF-8-Codierung vorliegen. Wenn Ihre Trainingsdaten nur aus kategorialen und numerischen Werten bestehen, können Sie mithilfe unseres Vorverarbeitungsmoduls fehlende numerische Werte auffüllen, das Dataset aufteilen und Zeilen entfernen, in denen mehr als 10 % der Werte fehlen. Andernfalls können Sie das Training auch ohne automatische Vorverarbeitung ausführen.

Damit Ihre CSV-Eingabedatei die Anforderungen erfüllt, müssen Sie sie so vorbereiten:

  • Die Kopfzeile muss entfernt werden. Die Kopfzeile enthält die Labels für jede Spalte. Entfernen Sie sie, damit sie nicht mit dem Rest der Dateninstanzen als Teil der Trainingsdaten gesendet wird.
  • Die Zielspalte muss die erste Spalte sein. Die Zielspalte enthält den Wert, den Sie vorhersagen möchten. Bei einem Klassifizierungsalgorithmus werden alle Werte in der Zielspalte als Klasse oder Kategorie dargestellt. Bei einem Regressionsalgorithmus sind alle Werte in der Zielspalte numerische Werte.

Ganzzahlige Werte verarbeiten

Spalten mit ganzzahligen Werten werden standardmäßig als kategoriale Spalten interpretiert, wenn nur wenige eindeutige Werte vorhanden sind. Enthält eine Spalte im Dataset beispielsweise ganzzahlige Werte wie {101, 102, 103}, interpretiert AI Platform diese Werte als Kategorien wie z. B. {"hoch", "mittel", "niedrig"}.

Zur Vermeidung einer solchen Fehlinterpretation sollten Sie Ganzzahlen in Gleitkommazahlen umwandeln, wenn die Daten als numerisch verarbeitet werden sollen, z. B. {101,0, 102,0, 103,0}. Sollen Ganzzahlen dagegen kategorial interpretiert werden, fügen Sie vor oder nach jedem Wert einen String hinzu: {code_101, code_102, code_103}.

Linear-Learner-Trainingsjob senden

In diesem Abschnitt wird erläutert, wie Sie einen Trainingsjob mit dem integrierten Linear-Learner-Algorithmus senden.

Eine kurze Erläuterung der verschiedenen Hyperparameter finden Sie in der Google Cloud Platform Console. Eine ausführlichere Beschreibung ist in der Referenz zum integrierten Linear-Learner-Algorithmus enthalten.

Console

  1. Rufen Sie die AI Platform-Seite "Jobs" in der Google Cloud Platform Console auf:

    AI Platform-Seite "Jobs" aufrufen

  2. Klicken Sie auf die Schaltfläche Neuer Trainingsjob. Klicken Sie in den darunter angezeigten Optionen auf Integriertes Modelltraining.

  3. Wählen Sie auf der Seite Neuen Trainingsjob erstellen die Option Integrierter Linear Learner aus und klicken Sie auf Weiter.

  4. Für weitere Informationen zu allen verfügbaren Parametern klicken Sie auf die Links in der Google Cloud Platform Console. Genauere Informationen finden Sie in der Referenz zum integrierten Linear Learner.

gcloud

  1. Wenn Sie gcloud vor der Verwendung dieser Anleitung installiert haben, führen Sie ein Update auf die neueste Version von gcloud beta durch:

       gcloud components install beta
    
  2. Legen Sie Umgebungsvariablen für Ihren Job fest und ersetzen Sie dabei die Werte in Klammern ([VALUES-IN-BRACKETS]) durch Ihre eigenen Werte:

       # Specify the name of the Cloud Storage bucket where you want your
       # training outputs to be stored, and the Docker container for
       # your built-in algorithm selection.
       BUCKET_NAME='[YOUR-BUCKET-NAME]'
       IMAGE_URI='gcr.io/cloud-ml-algos/linear_learner_cpu:latest'
    
       # Specify the Cloud Storage path to your training input data.
       TRAINING_DATA='gs://[YOUR_BUCKET_NAME]/[YOUR_FILE_NAME].csv'
    
       DATASET_NAME='census'
       ALGORITHM='linear'
       MODEL_TYPE='classification'
    
       DATE='date '+%Y%m%d_%H%M%S''
       MODEL_NAME="${DATASET_NAME}_${ALGORITHM}_${MODEL_TYPE}"
       JOB_ID="${MODEL_NAME}_${DATE}"
    
       JOB_DIR="gs://${BUCKET_NAME}/algorithm_training/${MODEL_NAME}/${DATE}"
    
  3. Senden Sie den Trainingsjob mit gcloud beta ai-platform jobs training submit:

       gcloud beta ai-platform jobs submit training $JOB_ID \
          --master-image-uri=$IMAGE_URI --scale-tier=BASIC --job-dir=$JOB_DIR \
          -- \
          --preprocess --model_type=$MODEL_TYPE --batch_size=250 \
          --learning_rate=0.1 --max_steps=1000 \
          --training_data_path=$TRAINING_DATA
    
  4. Überwachen Sie den Status des Trainingsjobs, indem Sie Logs mit gcloud aufrufen. Siehe gcloud ai-platform jobs describe und gcloud ai-platform jobs stream-logs.

       gcloud ai-platform jobs describe ${JOB_ID}
       gcloud ai-platform jobs stream-logs ${JOB_ID}
    

Funktionsweise der Vorverarbeitung

Die automatische Vorverarbeitung kann für kategoriale und numerische Daten verwendet werden. Durch die Vorverarbeitungsroutine werden die Daten zuerst analysiert und dann transformiert.

Analyse

Als Erstes ermittelt AI Platform automatisch den Datentyp jeder Spalte. Anschließend stellt der Dienst fest, wie die einzelnen Spalten verarbeitet werden sollen, und berechnet eine Statistik zu den Daten in der Spalte. Diese Informationen werden in der Datei metadata.json erfasst.

Über die Analyse des Zielspaltentyps ermittelt AI Platform, ob das angegebene Dataset zur Regression oder zur Klassifizierung bestimmt ist. Wenn diese Analyse nicht der Auswahl für model_type entspricht, wird ein Fehler ausgegeben. Geben Sie daher klar an, wie die Zielspalte verarbeitet werden soll, indem Sie Daten eindeutig formatieren, wenn sie mehrdeutig sind.

  • Typ: Die Spalte kann numerisch oder kategorial sein.

  • Verarbeitung: AI Platform ermittelt so die jeweilige Verarbeitung jeder Spalte:

    • Wenn die Spalte in allen Zeilen den gleichen Wert enthält, wird sie als Konstante verarbeitet.
    • Wenn die Spalte kategorial ist und in allen Zeilen eindeutige Werte enthält, wird sie als row_identifier verarbeitet.
    • Wenn die Spalte numerisch ist und Gleitkommawerte enthält oder wenn sie numerisch ist und ganzzahlige Werte enthält, von denen viele eindeutige Werte sind, wird die Spalte als numerisch verarbeitet.
    • Wenn die Spalte numerisch ist und ganzzahlige Werte enthält, von denen nur wenige eindeutige Werte sind, wird die Spalte als kategoriale Spalte verarbeitet. Dabei sind die ganzzahligen Werte entweder die Identität oder das Vokabular.
      • Es wird davon ausgegangen, dass eine Spalte nur wenige eindeutige Werte enthält, wenn die Anzahl der eindeutigen Werte in der Spalte bei unter 20 % der Zeilenanzahl im Eingabe-Dataset liegt.
    • Wenn die Spalte kategorial ist und eine hohe Kardinalität hat, wird die Spalte mit Hashing verarbeitet. Die Anzahl der Hash-Buckets entspricht dabei der Quadratwurzel der Anzahl von eindeutigen Werten in der Spalte.
      • Eine kategoriale Spalte wird als Spalte mit hoher Kardinalität angesehen, wenn die Anzahl der eindeutigen Werte größer ist als die Quadratwurzel der Zeilenanzahl im Dataset.
    • Wenn die Spalte kategorial und die Anzahl der eindeutigen Werte kleiner oder gleich der Quadratwurzel der Zeilenanzahl im Dataset ist, wird die Spalte als normale kategoriale Spalte mit Vokabular verarbeitet.
  • Statistik: AI Platform berechnet die folgenden statistischen Werte auf der Grundlage des ermittelten Spaltentyps und der Verarbeitung für die spätere Transformation der Spalte.

    • Wenn die Spalte numerisch ist, werden Mittel- und Varianzwerte berechnet.
    • Wenn die Spalte kategorial ist und die Werte als Identität oder Vokabular verarbeitet werden, werden die einzelnen Werte aus der Spalte extrahiert.
    • Wenn die Spalte kategorial ist und mit Hashing behandelt wird, wird die Anzahl der Hash-Buckets in Relation zur Kardinalität der Spalte berechnet.

Transformation

Nach Abschluss der anfänglichen Analyse des Datasets transformiert AI Platform Ihre Daten anhand der Typen, der Verarbeitung und der Statistik, die auf das Dataset angewendet werden. AI Platform führt die Transformationen in der folgenden Reihenfolge durch:

  1. Das Trainings-Dataset wird in Validierungs- und Test-Datasets aufgeteilt, wenn Sie Prozentwerte für die Aufteilung angeben.
  2. Zeilen, in denen mehr als 10 % der Merkmale fehlen, werden entfernt.
  3. Fehlende numerische Werte werden anhand des Mittelwerts der Spalte aufgefüllt.

Beispieltransformationen

Zeilen, in denen 10 % der Werte fehlen, werden entfernt. In den folgenden Beispielen wird angenommen, dass die Zeile 10 Werte enthält. Der Einfachheit halber ist jede Beispielzeile abgeschnitten.

Zeilenproblem Ursprüngliche Werte Transformierte Werte Erläuterung
Beispielzeile ohne fehlende Werte [3, 0,45, ...,
"Früchte", 0, 1]
[3, 0,45, ...,
1, 0, 0, 0, 1]
Der String "Früchte" wird in die Werte "1, 0, 0" in One-Hot-Codierung transformiert. Dies geschieht später in der TensorFlow-Grafik.
Zu viele fehlende Werte [3, 0,45, ...,
"Früchte", __, __]
Zeile wird entfernt In der Zeile fehlen mehr als 10 % der Werte.
Fehlender numerischer Wert [3, 0,45, ...,
"Früchte", 0, __]
[3, 0,45, ...,
1, 0, 0, 0, 0,54]
  • Der Mittelwert für die Spalte ersetzt den fehlenden numerischen Wert. In diesem Beispiel beträgt der Mittelwert 0,54.
  • Der String "Früchte" wird in die Werte "1, 0, 0" in One-Hot-Codierung transformiert. Dies geschieht später in der TensorFlow-Grafik.
Fehlender kategorialer Wert [3, 0,45, ...,
__, 0, 1]
[3, 0,45, ...,
0, 0, 0, 0, 1]
  • Der fehlende kategoriale Wert wird in die Werte "0, 0, 0" in One-Hot-Codierung transformiert. Dies geschieht später in der TensorFlow-Grafik.

Merkmalsspalten

Bei der Transformation werden die Spalten nicht verarbeitet. Stattdessen werden die während der Analyse generierten Metadaten an AI Platform übergeben, um die entsprechenden Merkmalspalten zu erstellen:

Spaltentyp Spaltenverarbeitung Resultierende Merkmalsspalte
Numerisch (Alle Spaltenverarbeitungstypen) tf.feature_column.numeric_column

Die Mittel- und Varianzwerte werden zur Standardisierung der Werte verwendet:
new_value = (input_value - mean) / sqrt(variance)

Kategorial Identität tf.feature_column.categorical_column_with_identity
Kategorial Vokabular tf.feature_column.categorical_column_with_vocabulary_list
Kategorial Hashing tf.feature_column.categorical_column_with_hash_bucket
Kategorial Konstante oder Zeilenkennzeichnung Ignoriert. Es wird keine Feature-Spalte erstellt.

Nach Abschluss der automatischen Vorverarbeitung lädt AI Platform das vorverarbeitete Dataset wieder in Ihren Cloud Storage-Bucket in das Verzeichnis hoch, das Sie in der Jobanfrage angegeben haben.

Weitere Lernressourcen

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...