Zum Inhalt springen

Der Schritt ML: Modell trainieren trainiert ein scikit-learn-Modell auf einer Quelltabelle und schreibt das Ergebnis als Modelltabelle. Die Modelltabelle läuft wie jede andere Tabelle durch den Workflow: Übergeben Sie sie an einen ML: Bewerten-Schritt, um einer Datentabelle Vorhersagen hinzuzufügen, oder fragen Sie sie direkt ab, um die Trainingskennzahlen einzusehen. Der Schritt läuft als verwalteter PlaidCloud-Job (wie der LLM-Schritt), sodass das Training nicht mit dem Rest des Workflows um Ressourcen konkurriert.

TrainingszeilenMerkmale + bekanntes LabelTrainierenAlgorithmus anpassenModellartefaktgespeichert, wiederverwendbar→ verwendet von ML Score
ML Train trainiert einen Algorithmus auf Zeilen, deren Label bereits bekannt ist, und erzeugt ein gespeichertes Modellartefakt, das ML Score auf neue Zeilen anwendet.
  • Trainingstabelle – die Tabelle, auf der trainiert wird. Zeilen mit leerem Zielwert werden vom Training ausgeschlossen.
  • Modelltabelle – die Ausgabetabelle, die den Modelldatensatz erhält.
  • Algorithmus – das zu trainierende Modell:

    Algorithmus Wert Familie
    Logistische Regression logistic_regression Klassifikation
    Entscheidungsbaum-Klassifikator decision_tree Klassifikation
    Random-Forest-Klassifikator random_forest Klassifikation
    Gradient-Boosting-Klassifikator (XGBoost-artig) xgb_classifier Klassifikation
    Lineare Regression linear_regression Regression
    Entscheidungsbaum-Regressor decision_tree_regressor Regression
    Random-Forest-Regressor random_forest_regressor Regression

    Der XGBoost-artige Algorithmus ist ein scikit-learn-HistGradientBoostingClassifier – ein statistisch gleichwertiger Ersatz für XGBoost, kein Wrapper darum. Siehe Grenzen und Einschränkungen.

  • Zielspalte – die Spalte, die vorhergesagt werden soll. Sie ist erforderlich, außer bei den unüberwachten Algorithmen und sota, bei denen die Klassenspalte optional ist. Klassifikationsziele werden als Text-Labels behandelt; Regressionsziele werden in Zahlen umgewandelt, und Zeilen, deren Ziel sich nicht als Zahl interpretieren lässt, werden ausgeschlossen.

Die Liste Algorithmus bietet auch diese Algorithmen an. Konvertierte KNIME-Workflows verwenden sie ebenfalls.

Algorithmen Was sie sind
xgboost_classifier, xgboost_regressor, xgboost_linear_classifier, xgboost_linear_regressor XGBoost selbst, mit Baum- oder linearem Booster
gradient_boosting_classifier, gradient_boosting_regressor scikit-learn-Gradient-Boosting
svm, svm_regressor, mlp, mlp_regressor, dummy, dummy_regressor scikit-learn-Support-Vector-Machines, mehrschichtige Perzeptronen und Baseline-Modelle
knime_decision_tree, knime_tree_ensemble, naive_bayes, knn, lda, pnn_dda, fuzzy_rules, sota die eigenen Lernverfahren von KNIME, die KNIMEs Ergebnisse liefern; ihre Hyperparameter sind die Einstellungen von KNIME
kmeans, dbscan, optics, pca, mds, tsne, isolation_forest, apriori, fp_growth die unüberwachten Algorithmen von KNIME: keine Zielspalte, und die Merkmalsspalten sind die numerischen Spalten (bei apriori und fp_growth die eine Spalte mit Artikellisten)
kmedoids, fuzzy_cmeans, hierarchical, hierarchical_tree, silhouette, h2o_pca, mds_projection, smote, target_shuffling, knn_distance, prediction_fusion, al_uncertainty, al_combiner, al_selector, al_density, al_density_table, distribution_creator, distribution_splitter, weak_label, als, rule_table, optics_table, dose_response KNIMEs Knoten für Clustering, Sampling, Active Learning, Empfehlungen (als: die Merkmalsspalten sind Benutzer und Produkt, das Ziel ist die Bewertung), Assoziationsregeln und Dosis-Wirkungs-Analyse

dbscan, mds, tsne und die anderen Algorithmen, die abgesehen von ihren Daten kein Modell haben, behalten ihre Einstellungen in der Modelltabelle, und ML: Bewerten legt die übergebene Tabelle aus.

Ein optionales JSON-Objekt mit scikit-learn-Hyperparametern für den gewählten Algorithmus – zum Beispiel {"max_depth": 5, "n_estimators": 200}. Unbekannte Schlüssel werden beim Speichern des Schritts abgelehnt, sodass ein falsch geschriebener Parameter sofort fehlschlägt, statt stillschweigend ignoriert zu werden. Aus Alteryx konvertierte Workflows können außerdem Sentinel-Schlüssel im Alteryx-Stil wie max_depth_none enthalten; diese werden für Sie übersetzt.

Einige veraltete Parameter, die scikit-learn entfernt hat, werden akzeptiert, aber nicht angewendet (zum Beispiel presort oder die unter Grenzen und Einschränkungen aufgeführten XGBoost-Baumparameter); alles, was auf diese Weise verworfen wird, wird in params_json der Modelltabelle unter dropped_params festgehalten, sodass nichts stillschweigend verschwindet.

Die Registerkarte „Merkmale” zeigt eine Zeile pro Spalte der Quelltabelle:

  • Merkmal – aktivieren Sie die Spalten, auf denen trainiert werden soll. Lassen Sie alle Kontrollkästchen deaktiviert, um auf jeder Spalte außer dem Ziel zu trainieren. Sind alle Kontrollkästchen deaktiviert, trainiert der Schritt auf den Spalten, die die Tabelle bei der Ausführung hat; führen Sie Spalten unter Spalten ausschließen (exclude_columns) auf, um einige davon auszulassen.
  • Typüberschreibung – erzwingt für eine Spalte die Behandlung als Numerisch oder Kategorial, oder belassen Sie die Einstellung auf (ableiten), um den Typ vom Typ der Tabellenspalte abzuleiten.

Die Merkmalsaufbereitung entspricht Alteryx Assisted Modeling: Numerische Merkmale werden in Zahlen umgewandelt (nicht interpretierbare Werte werden zu fehlenden Werten), und fehlende Werte werden mit dem Median ersetzt; kategoriale Merkmale werden als Text behandelt, mit dem häufigsten Wert ersetzt und One-Hot-kodiert. Werte, die ein kategoriales Merkmal beim Training nie gesehen hat, werden beim Bewerten ignoriert.

Die Modelltabelle hat diese Spalten:

Spalte Inhalt
model_pickle_b64 Die trainierte scikit-learn-Pipeline (gepickelt, komprimiert, Base64-kodiert). Große Modelle werden auf mehrere Zeilen verteilt – siehe So wird das Modell gespeichert.
chunk_index Die Position des Modellabschnitts dieser Zeile, bei 0 beginnend.
algorithm Der Algorithmuswert, zum Beispiel logistic_regression.
params_json JSON: die angewendeten scikit-learn-Parameter, die verwendeten Merkmalstypen und alle dropped_params.
feature_names_json JSON-Array: die geordneten Merkmalsspalten, die das Modell beim Bewerten erwartet.
class_labels_json JSON-Array mit Klassen-Labels (Klassifikatoren) oder null (Regressoren).
metrics_json JSON-Trainingskennzahlen – siehe unten.
trained_at UTC-Zeitstempel der Trainingsausführung.

Da das Modell eine gewöhnliche Tabelle ist, können Sie es wie eine solche abfragen – extrahieren Sie zum Beispiel metrics_json in einem nachgelagerten Schritt, um einen Workflow von der Modellqualität abhängig zu machen.

metrics_json enthält den Schlüssel kind (classification oder regression), train_accuracy für Klassifikatoren bzw. train_r2 und train_rmse für Regressoren sowie n_training_rows.

Ein trainiertes Modell kann groß sein – ein Random Forest mit der Standardeinstellung von hundert Bäumen kann Hunderte von Megabyte umfassen –, und das ist mehr, als ein Warehouse als einzelnen Wert akzeptiert. Das Modell wird daher komprimiert und, falls es für eine Zeile immer noch zu groß ist, auf so viele Zeilen verteilt wie nötig. Jede Zeile wiederholt die oben genannten Spalten, sodass jede einzelne von ihnen Algorithmus, Parameter, Merkmale und Kennzahlen verrät; nur model_pickle_b64 und chunk_index unterscheiden sich zwischen den Zeilen.

Das ist an zwei Stellen von Bedeutung:

  • Kennzahlen lesen. Eine Modelltabelle kann mehr als eine Zeile enthalten. Lesen Sie die Kennzahlen daher aus einer einzelnen Zeile, statt anzunehmen, dass es nur eine gibt – zum Beispiel mit WHERE chunk_index = 0.
  • Das Modell selbst wieder zusammensetzen. Wenn Sie model_pickle_b64 außerhalb von PlaidCloud lesen, verketten Sie die Teile in der Reihenfolge von chunk_index, dekodieren Sie Base64 und dekomprimieren Sie, bevor Sie unpickeln.

Ein ML: Bewerten-Schritt erledigt all das für Sie. Er prüft außerdem, ob alle Teile vorhanden sind, und bricht mit einem Fehler ab, wenn eines fehlt, statt mit einem unvollständigen Modell zu bewerten.

  • Trainingskennzahlen werden auf dem Trainingsset berechnet – in dieser Version gibt es weder eine Holdout-Aufteilung noch Kreuzvalidierung. Betrachten Sie sie als Prüfung der Anpassung, nicht als Schätzung der Leistung außerhalb der Stichprobe.
  • Arbeitsset im Arbeitsspeicher – die Trainingstabelle wird in den Arbeitsspeicher gelesen, daher ist der Schritt auf etwa eine Million Zeilen ausgelegt. Nehmen Sie bei größeren Tabellen zuerst eine Stichprobe oder aggregieren Sie.
  • Maximale Modellgröße – ein trainiertes Modell wird abgelehnt, wenn es komprimiert mehr als 128 MB umfasst, und der Schritt bricht unmittelbar nach dem Training mit einer Meldung ab, die Größe und Limit nennt. Zum Vergleich: Ein Random Forest mit hundert Bäumen über 17.000 Zeilen und 17 Merkmalen kommt auf etwa 56 MB, das Limit liegt also bei etwa dem Doppelten. Wenn Sie es erreichen, trainieren Sie weniger Bäume (n_estimators) oder begrenzen Sie max_depth.
  • XGBoost-Näherung – xgb_classifier trainiert einen scikit-learn-HistGradientBoostingClassifier; die xgboost_*-Algorithmen führen XGBoost selbst aus. Die XGBoost-spezifischen Baumparameter gamma, min_child_weight, subsample und die colsample_*-Familie haben kein Äquivalent und werden verworfen (festgehalten in dropped_params sowie in den Zuordnungshinweisen des Schritts, wenn er aus Alteryx konvertiert wurde). Validieren Sie die Modellkennzahlen gegen Ihre Referenzausführung, bevor Sie sich auf Übereinstimmung verlassen.
  • Die AutoML-Konvertierung wählt einen Algorithmus, keine Suche – ein Alteryx-AutoML-Tool wird auf dieselbe Weise zu diesem Schritt verschmolzen wie Classification und Regression, aber AutoML hält nie fest, welcher seiner Kandidatenalgorithmen zur Alteryx-Laufzeit tatsächlich gewonnen hat. Die Konvertierung wählt den ersten markierten Algorithmus, den dieser Schritt unterstützt, und vermerkt die Wahl, statt eine automatisierte Suche nachzubilden – hier läuft keine Modellauswahlschleife. Vergleichen Sie einen konvertierten AutoML-Schritt mit Ihren eigenen Alteryx-Ergebnissen.
  • ML: Bewerten – bewerten Sie eine Datentabelle mit dem trainierten Modell.
  • Alteryx-Workflows migrieren – wie Alteryx-Assisted-Modeling-Pipelines, einschließlich AutoML, in diesen Schritt konvertiert werden.